#include <file.hpp>
Inheritance diagram for CFile:

Public Methods | |
| CFile (const char *filename, const char *mode) | |
| ~CFile () | |
| void | Seek (long offset, int whence=SEEK_SET) const |
| char * | ReadString () const |
| char * | ReadStringFlag (unsigned flag) const |
| long | Tell () const |
| void | RawRead (void *ptr, size_t size) const |
| void | RawWrite (const void *ptr, size_t size) |
| FILE * | GetFile () |
Private Methods | |
| void | Close () |
Private Attributes | |
| FILE * | file |
|
||||||||||||
|
Definition at line 35 of file file.cpp. References file.
|
|
|
Definition at line 170 of file file.cpp. References Close().
00171 {
00172 Close();
00173 }
|
|
|
Definition at line 43 of file file.cpp. References file. Referenced by ~CFile().
|
|
|
Definition at line 64 of file file.hpp. References file. Referenced by OutputImport().
00064 { return file; };
|
|
||||||||||||
|
Implements ICFile. Reimplemented in CSignFile. Definition at line 158 of file file.cpp. References file. Referenced by ObjectModule::ObjectModule(), CSignFile::RawRead(), and ReadStringFlag().
00159 {
00160 if ( fread(ptr,1,size,file) != size )
00161 throw runtime_error("Unable to read from file");
00162 }
|
|
||||||||||||
|
Implements ICFile. Definition at line 164 of file file.cpp. References file. Referenced by WriteIcons().
00165 {
00166 if ( fwrite(ptr,1,size,file) != size )
00167 throw runtime_error("Unable to write to file");
00168 }
|
|
|
Implements ICFile. Reimplemented in CSignFile. Definition at line 64 of file file.cpp. References file. Referenced by CSignFile::ReadString().
00065 {
00066 char *pbegin = new char[16];
00067 char *p = pbegin;
00068 char *pend = pbegin + 16;
00069 int c;
00070 for (;;)
00071 {
00072 c = fgetc(file);
00073 if (c==EOF)
00074 throw runtime_error("Error reading string");
00075 if (p==pend) {
00076 int size = (pend-pbegin);
00077 pend = new char[size+16];
00078 memcpy(pend,pbegin,size*sizeof(char));
00079 delete [] pbegin;
00080 pbegin = pend;
00081 pend = (p = pbegin + size) + 16;
00082 }
00083 *p++ = (char)c;
00084 if (c==0)
00085 return pbegin;
00086 }
00087 }
|
|
|
Implements ICFile. Reimplemented in CSignFile. Definition at line 90 of file file.cpp. References file, RawRead(), ICFile::strLen16, ICFile::strLen32, ICFile::strLen8, ICFile::strLenMask, and ICFile::strUcs2. Referenced by CSignFile::ReadStringFlag().
00091 {
00092 unsigned char charBit = flag & strUcs2 ? 1:0;
00093 char *pbegin = new char[16<<charBit];
00094 char *p = pbegin;
00095 char *pend = pbegin + (16<<charBit);
00096 int c,cc;
00097 unsigned len = ~0u;
00098
00099 uint32_t ui32;
00100 uint16_t ui16;
00101 uint8_t ui8;
00102
00103 switch (flag & strLenMask)
00104 {
00105 case strLen8: RawRead(&ui8, sizeof(ui8) ); len = ui8; break;
00106 case strLen16: RawRead(&ui16,sizeof(ui16)); len = ui16; break;
00107 case strLen32: RawRead(&ui32,sizeof(ui32)); len = ui32; break;
00108 }
00109
00110 cc = 0;
00111 for (;;--len)
00112 {
00113 // read char
00114 c = fgetc(file);
00115 if (c==EOF)
00116 throw runtime_error("Error reading string");
00117 if (charBit)
00118 {
00119 cc = fgetc(file);
00120 if (cc==EOF)
00121 throw runtime_error("Error reading string");
00122 }
00123
00124 // extend buffer if needed
00125 if (p==pend) {
00126 int size = (pend-pbegin);
00127 pend = new char[size+(16<<charBit)];
00128 memcpy(pend,pbegin,size*sizeof(char));
00129 delete [] pbegin;
00130 pbegin = pend;
00131 pend = (p = pbegin + size) + (16<<charBit);
00132 }
00133
00134 // check end string
00135 if (len == 0)
00136 {
00137 *p++ = 0;
00138 if (charBit)
00139 *p++ = 0;
00140 break;
00141 }
00142
00143 // write char
00144 *p++ = (char)c;
00145 if (charBit)
00146 *p++ = (char)cc;
00147
00148 if ( (flag&strLenMask) == 0 )
00149 {
00150 if ( c==0 && cc==0 )
00151 break;
00152 }
00153 }
00154
00155 return pbegin;
00156 }
|
|
||||||||||||
|
Implements ICFile. Definition at line 50 of file file.cpp. References file. Referenced by MarkImport(), ObjectModule::ObjectModule(), and RawDump().
00051 {
00052 if ( fseek(file,offset,whence)!=0 )
00053 throw runtime_error("Unable to seek");
00054 }
|
|
|
Implements ICFile. Definition at line 56 of file file.cpp. References file. Referenced by RawDump(), CSignFile::RawRead(), CSignFile::ReadString(), and CSignFile::ReadStringFlag().
00057 {
00058 long pos = ftell(file);
00059 if ( pos == -1L )
00060 throw runtime_error("Seek error");
00061 return pos;
00062 }
|
|
|
Definition at line 67 of file file.hpp. Referenced by CFile(), Close(), GetFile(), RawRead(), RawWrite(), ReadString(), ReadStringFlag(), Seek(), and Tell(). |
1.2.15