Changeset 247 for cpp/frams/virtfile
- Timestamp:
- 11/07/14 17:51:01 (10 years ago)
- Location:
- cpp/frams/virtfile
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/virtfile/stdiofile.h
r227 r247 33 33 StdioFILE(MFILE *f,const SString& p) {file=f;path=p;} 34 34 static void setStdio(); 35 int Vread(void *ptr, size_t size, size_t nmemb) {return mfread(ptr,size,nmemb,file);}36 int Vwrite(const void *ptr, size_t size, size_t nmemb) {return mfwrite(ptr,size,nmemb,file);}35 size_t Vread(void *ptr, size_t size, size_t nmemb) {return mfread(ptr,size,nmemb,file);} 36 size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {return mfwrite(ptr,size,nmemb,file);} 37 37 int Veof() {return mfeof(file);} 38 38 int Vputs(const char *s) {return mfputs(s,file);} 39 39 char *Vgets(char *s, int size) {return mfgets(s,size,file);} 40 40 int Vseek(long offset, int whence) {return mfseek(file,offset,whence);} 41 intVtell() {return mftell(file);}41 long Vtell() {return mftell(file);} 42 42 int Vflush() {return 0;/*NOT IMPLEMENTED!*/;} 43 43 const char* VgetPath() {return path;} … … 55 55 StdioFILE(FILE *f,const SString& p) {file=f;path=p;} 56 56 static void setStdio(); 57 int Vread(void *ptr, size_t size, size_t nmemb) {return fread(ptr,size,nmemb,file);}58 int Vwrite(const void *ptr, size_t size, size_t nmemb) {return fwrite(ptr,size,nmemb,file);}57 size_t Vread(void *ptr, size_t size, size_t nmemb) {return fread(ptr,size,nmemb,file);} 58 size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {return fwrite(ptr,size,nmemb,file);} 59 59 int Veof() {return feof(file);} 60 60 int Vputc(int c) {return fputc(c,file);} … … 64 64 int Vprintf(const char *format, va_list args) { return vfprintf(file,format,args); } 65 65 int Vseek(long offset, int whence) {return fseek(file,offset,whence);} 66 intVtell() {return ftell(file);}66 long Vtell() {return ftell(file);} 67 67 void Vrewind() {rewind(file);} 68 68 int Vflush() {return fflush(file);} -
cpp/frams/virtfile/stringfile.cpp
r207 r247 7 7 #include <errno.h> //EINVAL 8 8 9 int StringFILE::Vread(void *ptr, size_t size, size_t nmemb)9 size_t StringFILE::Vread(void *ptr, size_t size, size_t nmemb) 10 10 { 11 int have= str.len()-pos;11 int have=(int)(str.len()-pos); 12 12 if (have<=0) return 0; 13 int need= size*nmemb;14 if (need>have) {nmemb=have/size; need= size*nmemb;}13 int need=(int)(size*nmemb); 14 if (need>have) {nmemb=have/size; need=(int)(size*nmemb);} 15 15 memcpy(ptr,((const char*)str)+pos,need); 16 16 pos+=need; … … 23 23 return EOF; 24 24 else 25 return str [pos++];25 return str.operator[]((int)pos++); 26 26 } 27 27 28 28 char *StringFILE::Vgets(char *s, int size) 29 29 { 30 int have=str.len()- pos;30 int have=str.len()-(int)pos; 31 31 if (have<=0) return 0; 32 32 if (size<0) size=0; -
cpp/frams/virtfile/stringfile.h
r207 r247 16 16 public: 17 17 StringFILE(SString& s):str(s),pos(0) {} 18 int Vread(void *ptr, size_t size, size_t nmemb);19 int Vwrite(const void *ptr, size_t size, size_t nmemb) {str.append((const char*)ptr,size*nmemb); return size*nmemb;}18 size_t Vread(void *ptr, size_t size, size_t nmemb); 19 size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {str.append((const char*)ptr,(int)(size*nmemb)); return size*nmemb;} 20 20 int Veof() {return pos>=str.len();} 21 21 int Vputc(int c) {str+=(char)c; return c;} 22 int Vputs(const char *s) {str.append(s, strlen(s)); return 0;}22 int Vputs(const char *s) {str.append(s,(int)strlen(s)); return 0;} 23 23 int Vgetc(); 24 24 char *Vgets(char *s, int size); 25 25 int Vseek(long offset, int whence); 26 intVtell() {return pos;}26 long Vtell() {return pos;} 27 27 int Vflush() {return 0;} 28 28 }; -
cpp/frams/virtfile/virtfile.cpp
r225 r247 45 45 va_end(argptr); 46 46 return ret; 47 } 48 49 int VirtFILE::getSize() 50 { 51 int saved_pos = Vtell(); 52 Vseek(0, SEEK_END); 53 int size = Vtell(); 54 Vseek(saved_pos, SEEK_SET); 55 return size; 47 56 } 48 57 -
cpp/frams/virtfile/virtfile.h
r225 r247 23 23 { 24 24 public: 25 virtual int Vread(void *ptr, size_t size, size_t nmemb)=0;26 virtual int Vwrite(const void *ptr, size_t size, size_t nmemb)=0;25 virtual size_t Vread(void *ptr, size_t size, size_t nmemb)=0; 26 virtual size_t Vwrite(const void *ptr, size_t size, size_t nmemb)=0; 27 27 virtual int Veof()=0; 28 28 virtual int Vputc(int c) {unsigned char data=(unsigned char)c; return (Vwrite(&data,1,1)==1)?data:EOF;} … … 30 30 virtual int Vgetc() {unsigned char data; if (Vread(&data,1,1)==1) return data; else return EOF;} 31 31 virtual int Vseek(long offset, int whence)=0; 32 virtual intVtell()=0;32 virtual long Vtell()=0; 33 33 virtual void Vrewind() {Vseek(0,SEEK_SET);} 34 34 virtual int Vflush()=0; … … 37 37 int printf(const char *format, ...); 38 38 virtual const char *VgetPath() {return 0;} // 0=unspecified path 39 virtual int getSize(); 39 40 virtual ~VirtFILE(); 40 41 static VirtFILE *Vstdin,*Vstdout,*Vstderr;
Note: See TracChangeset
for help on using the changeset viewer.