core/vgui/vgui_statusbuf.cxx
Go to the documentation of this file.
00001 // This is core/vgui/vgui_statusbuf.cxx
00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00003 #pragma implementation
00004 #endif
00005 //:
00006 // \file
00007 // \author Philip C. Pritchett, RRG, University of Oxford
00008 // \date   21 Nov 1999
00009 // \brief  See vgui_statusbuf.h for a description of this file.
00010 
00011 #include "vgui_statusbuf.h"
00012 #include <vgui/vgui_statusbar.h>
00013 
00014 int vgui_statusbuf::sync()
00015 {
00016   long n = pptr () - pbase ();
00017   return (n && status->write(pbase(), n) != n) ? -1 : 0;
00018 }
00019 
00020 int vgui_statusbuf::overflow(int ch)
00021 {
00022   long n = pptr() - pbase();
00023 
00024   if (n && sync())
00025     return -1;
00026   if (ch != -1) {
00027     char cbuf[1];
00028     cbuf[0] = (char)ch;
00029     if (status->write(cbuf, 1) != 1)
00030       return -1;
00031   }
00032   pbump (-n);  // Reset pptr().
00033   return 0;
00034 }