Changeset 247 for cpp/frams/virtfile


Ignore:
Timestamp:
11/07/14 17:51:01 (9 years ago)
Author:
Maciej Komosinski
Message:

Sources support both 32-bit and 64-bit, and more compilers

Location:
cpp/frams/virtfile
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/virtfile/stdiofile.h

    r227 r247  
    3333StdioFILE(MFILE *f,const SString& p) {file=f;path=p;}
    3434static 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);}
     35size_t Vread(void *ptr, size_t size, size_t nmemb) {return mfread(ptr,size,nmemb,file);}
     36size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {return mfwrite(ptr,size,nmemb,file);}
    3737int Veof() {return mfeof(file);}
    3838int Vputs(const char *s) {return mfputs(s,file);}
    3939char *Vgets(char *s, int size) {return mfgets(s,size,file);}
    4040int Vseek(long offset, int whence) {return mfseek(file,offset,whence);}
    41 int Vtell() {return mftell(file);}
     41long Vtell() {return mftell(file);}
    4242int Vflush() {return 0;/*NOT IMPLEMENTED!*/;}
    4343const char* VgetPath() {return path;}
     
    5555StdioFILE(FILE *f,const SString& p) {file=f;path=p;}
    5656static 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);}
     57size_t Vread(void *ptr, size_t size, size_t nmemb) {return fread(ptr,size,nmemb,file);}
     58size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {return fwrite(ptr,size,nmemb,file);}
    5959int Veof() {return feof(file);}
    6060int Vputc(int c) {return fputc(c,file);}
     
    6464int Vprintf(const char *format, va_list args) { return vfprintf(file,format,args); }
    6565int Vseek(long offset, int whence) {return fseek(file,offset,whence);}
    66 int Vtell() {return ftell(file);}
     66long Vtell() {return ftell(file);}
    6767void Vrewind() {rewind(file);}
    6868int Vflush() {return fflush(file);}
  • cpp/frams/virtfile/stringfile.cpp

    r207 r247  
    77#include <errno.h> //EINVAL
    88
    9 int StringFILE::Vread(void *ptr, size_t size, size_t nmemb)
     9size_t StringFILE::Vread(void *ptr, size_t size, size_t nmemb)
    1010{
    11 int have=str.len()-pos;
     11int have=(int)(str.len()-pos);
    1212if (have<=0) return 0;
    13 int need=size*nmemb;
    14 if (need>have) {nmemb=have/size; need=size*nmemb;}
     13int need=(int)(size*nmemb);
     14if (need>have) {nmemb=have/size; need=(int)(size*nmemb);}
    1515memcpy(ptr,((const char*)str)+pos,need);
    1616pos+=need;
     
    2323        return EOF;
    2424else
    25         return str[pos++];
     25        return str.operator[]((int)pos++);
    2626}
    2727
    2828char *StringFILE::Vgets(char *s, int size)
    2929{
    30 int have=str.len()-pos;
     30int have=str.len()-(int)pos;
    3131if (have<=0) return 0;
    3232if (size<0) size=0;
  • cpp/frams/virtfile/stringfile.h

    r207 r247  
    1616  public:
    1717StringFILE(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;}
     18size_t Vread(void *ptr, size_t size, size_t nmemb);
     19size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {str.append((const char*)ptr,(int)(size*nmemb)); return size*nmemb;}
    2020int Veof() {return pos>=str.len();}
    2121int Vputc(int c) {str+=(char)c; return c;}
    22 int Vputs(const char *s) {str.append(s,strlen(s)); return 0;}
     22int Vputs(const char *s) {str.append(s,(int)strlen(s)); return 0;}
    2323int Vgetc();
    2424char *Vgets(char *s, int size);
    2525int Vseek(long offset, int whence);
    26 int Vtell() {return pos;}
     26long Vtell() {return pos;}
    2727int Vflush() {return 0;}
    2828};
  • cpp/frams/virtfile/virtfile.cpp

    r225 r247  
    4545va_end(argptr);
    4646return ret;
     47}
     48
     49int 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;
    4756}
    4857
  • cpp/frams/virtfile/virtfile.h

    r225 r247  
    2323{
    2424  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;
     25virtual size_t Vread(void *ptr, size_t size, size_t nmemb)=0;
     26virtual size_t Vwrite(const void *ptr, size_t size, size_t nmemb)=0;
    2727virtual int Veof()=0;
    2828virtual int Vputc(int c) {unsigned char data=(unsigned char)c; return (Vwrite(&data,1,1)==1)?data:EOF;}
     
    3030virtual int Vgetc() {unsigned char data; if (Vread(&data,1,1)==1) return data; else return EOF;}
    3131virtual int Vseek(long offset, int whence)=0;
    32 virtual int Vtell()=0;
     32virtual long Vtell()=0;
    3333virtual void Vrewind() {Vseek(0,SEEK_SET);}
    3434virtual int Vflush()=0;
     
    3737int printf(const char *format, ...);
    3838virtual const char *VgetPath() {return 0;} // 0=unspecified path
     39virtual int getSize();
    3940virtual ~VirtFILE();
    4041static VirtFILE *Vstdin,*Vstdout,*Vstderr;
Note: See TracChangeset for help on using the changeset viewer.