#include <Output.hpp>
Inheritance diagram for Output::

Public Methods | |
| char OUTPUT_STATIC | CreateFile (char *filename, int mybufsize=65536) | 
| void OUTPUT_STATIC | CloseFile () | 
| void OUTPUT_STATIC | CloseAndDeleteFile () | 
| void OUTPUT_STATIC | Flush () | 
| char OUTPUT_STATIC * | GetBufPtr (int *len) | 
| void OUTPUT_STATIC | SaveBytes (int bytecount) | 
| int OUTPUT_STATIC | GetCurFileSize () | 
| void OUTPUT_STATIC | StoreData (char *ptr, int len) | 
| void OUTPUT_STATIC | StoreInt32 (int val) | 
| void OUTPUT_STATIC | StoreChar (char c) | 
| void OUTPUT_STATIC | StoreNewline () | 
| char OUTPUT_STATIC * | GetDataPtr (int len) | 
      
  | 
  
| 
 
 Definition at line 129 of file Output.hpp. 00131    {
00132       Flush();
00133       if(savefilename!=NULL)
00134       {
00135          if(output!=NULL)
00136             fclose(output);
00137          unlink(savefilename);
00138       }
00139       free(buf);
00140       return;
00141    }
 | 
  
      
  | 
  
| 
 
 Definition at line 117 of file Output.hpp. 00119    {
00120       Flush();
00121       if(savefilename!=NULL)
00122       {
00123          if(output!=NULL)
00124             fclose(output);
00125       }
00126       free(buf);
00127    }
 | 
  
      
  | 
  ||||||||||||
| 
 
 Definition at line 71 of file Output.hpp. 00074    {
00075       if(filename==NULL)
00076       {
00077          savefilename=NULL;
00078          output=stdout;
00079 
00080          // We allocate the memory
00081          buf=(char *)malloc(mybufsize);
00082          if(buf==NULL)
00083             ExitNoMem();
00084 
00085 #ifdef WIN32
00086          _setmode(_fileno(stdout),_O_BINARY);
00087 #endif
00088       }
00089       else
00090       {
00091          // We allocate the output buffer memory and a little more for the filename
00092          buf=(char *)malloc(mybufsize+strlen(filename)+1);
00093          if(buf==NULL)
00094             ExitNoMem();
00095 
00096          savefilename=buf+mybufsize;
00097          strcpy(savefilename,filename);
00098 
00099          // We only open the output file, if strlen(filename)>0.
00100          // Otherwise, no output is performed at all.
00101          // (This is the test-case)
00102          if(strlen(filename)!=0)
00103          {
00104             output=fopen(filename,"wb");
00105             if(output==NULL)
00106                return 0;
00107          }
00108          else
00109             output=NULL;
00110       }
00111       bufsize=mybufsize;
00112       curpos=0;
00113       overallsize=0;
00114       return 1;
00115    }
 | 
  
      
  | 
  
| 
 
 Definition at line 143 of file Output.hpp. 00145    {
00146       overallsize+=curpos;
00147 
00148       if(output==NULL)
00149       {
00150          curpos=0;
00151          return;
00152       }
00153 
00154       char  *ptr=buf;
00155       int   byteswritten;
00156 
00157       // We write the output between '0' and 'curpos'
00158       // We only write at most 30000 bytes - to avoid some glitches
00159       // in the implementation of 'fwrite'.
00160 
00161       while(curpos>0)
00162       {
00163          byteswritten=fwrite(ptr,1,(curpos<30000) ? curpos : 30000,output);
00164          if(byteswritten==0)
00165          {
00166             Error("Could not write output file!");
00167             Exit();
00168          }
00169          curpos-=byteswritten;
00170          ptr+=byteswritten;
00171       }
00172    }
 | 
  
      
  | 
  
| 
 
 Definition at line 174 of file Output.hpp. 00176    {
00177       *len=bufsize-curpos;
00178       return buf+curpos;
00179    }
 | 
  
      
  | 
  
| 
 
 Definition at line 188 of file Output.hpp. 00188 {  return overallsize+curpos; }
 | 
  
      
  | 
  
| 
 
 Definition at line 246 of file Output.hpp. Referenced by XMLOutput::attribWhitespaces(), XMLOutput::endElement(), XMLOutput::endEmptyElement(), and XMLOutput::startAttribute(). 
  | 
  
      
  | 
  
| 
 
 Definition at line 181 of file Output.hpp. 00184    {
00185       curpos+=bytecount;
00186    }
 | 
  
      
  | 
  
| 
 
 Definition at line 218 of file Output.hpp. Referenced by XMLOutput::characters(), XMLOutput::endAttribute(), and XMLOutput::startElement(). 
 00220    {
00221       if(bufsize-curpos<1)
00222          Flush();
00223 
00224       buf[curpos]=c;
00225       curpos++;
00226    }
 | 
  
      
  | 
  ||||||||||||
| 
 
 Definition at line 193 of file Output.hpp. Referenced by XMLOutput::characters(), and XMLOutput::startElement(). 
  | 
  
      
  | 
  
| 
 
 Definition at line 208 of file Output.hpp. 00210    {
00211       if(bufsize-curpos<4)
00212          Flush();
00213 
00214       *(int *)(buf+curpos)=val;
00215       curpos+=4;
00216    }
 | 
  
      
  | 
  
| 
 
 Definition at line 228 of file Output.hpp.  | 
  
1.2.11.1 written by Dimitri van Heesch,
 © 1997-2001