Ignore:
Timestamp:
01/20/15 10:24:05 (9 years ago)
Author:
Maciej Komosinski
Message:

Better macro name; source formatting

File:
1 edited

Legend:

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

    r301 r302  
    2626class DLLEXP VirtFILE
    2727{
    28   protected:
    29 string path;
    30   public:
    31 virtual size_t Vread(void *ptr, size_t size, size_t nmemb)=0;
    32 virtual size_t Vwrite(const void *ptr, size_t size, size_t nmemb)=0;
    33 virtual int Veof()=0;
    34 virtual int Vputc(int c) {unsigned char data=(unsigned char)c; return (Vwrite(&data,1,1)==1)?data:EOF;}
    35 virtual int Vputs(const char *s)=0;
    36 virtual int Vgetc() {unsigned char data; if (Vread(&data,1,1)==1) return data; else return EOF;}
    37 virtual int Vseek(long offset, int whence)=0;
    38 virtual long Vtell()=0;
    39 virtual void Vrewind() {Vseek(0,SEEK_SET);}
    40 virtual int Vflush()=0;
    41 virtual char *Vgets(char *s, int size)=0;
    42 virtual int Vprintf(const char *format, va_list args);
    43 int printf(const char *format, ...);
    44 virtual const char *VgetPath() {return path.c_str();}
    45 virtual int getSize();
    46 VirtFILE(const char* _path):path(_path) {}
    47 virtual ~VirtFILE();
    48 static VirtFILE *Vstdin,*Vstdout,*Vstderr;
    49 static void setVstdin(VirtFILE *);
    50 static void setVstdout(VirtFILE *);
    51 static void setVstderr(VirtFILE *);
    52 static VirtFILE* getVstdin();
    53 static VirtFILE* getVstdout();
    54 static VirtFILE* getVstderr();
    55 static VirtFileSystem *vfs;
    56 static void selectFileSystem(VirtFileSystem *s);
     28protected:
     29        string path;
     30public:
     31        virtual size_t Vread(void *ptr, size_t size, size_t nmemb) = 0;
     32        virtual size_t Vwrite(const void *ptr, size_t size, size_t nmemb) = 0;
     33        virtual int Veof() = 0;
     34        virtual int Vputc(int c) { unsigned char data = (unsigned char)c; return (Vwrite(&data, 1, 1) == 1) ? data : EOF; }
     35        virtual int Vputs(const char *s) = 0;
     36        virtual int Vgetc() { unsigned char data; if (Vread(&data, 1, 1) == 1) return data; else return EOF; }
     37        virtual int Vseek(long offset, int whence) = 0;
     38        virtual long Vtell() = 0;
     39        virtual void Vrewind() { Vseek(0, SEEK_SET); }
     40        virtual int Vflush() = 0;
     41        virtual char *Vgets(char *s, int size) = 0;
     42        virtual int Vprintf(const char *format, va_list args);
     43        int printf(const char *format, ...);
     44        virtual const char *VgetPath() { return path.c_str(); }
     45        virtual int getSize();
     46        VirtFILE(const char* _path) :path(_path) {}
     47        virtual ~VirtFILE();
     48        static VirtFILE *Vstdin, *Vstdout, *Vstderr;
     49        static void setVstdin(VirtFILE *);
     50        static void setVstdout(VirtFILE *);
     51        static void setVstderr(VirtFILE *);
     52        static VirtFILE* getVstdin();
     53        static VirtFILE* getVstdout();
     54        static VirtFILE* getVstderr();
     55        static VirtFileSystem *vfs;
     56        static void selectFileSystem(VirtFileSystem *s);
    5757};
    5858
    5959/** can be used directly or as a base class for implementations delegating VirtFILE calls to another VirtFILE object */
    60 class DLLEXP DelegatedFILE: public VirtFILE
     60class DLLEXP DelegatedFILE : public VirtFILE
    6161{
    62 VirtFILE *delegate;
    63   public:
    64 size_t Vread(void *ptr, size_t size, size_t nmemb) {return delegate->Vread(ptr,size,nmemb);}
    65 size_t Vwrite(const void *ptr, size_t size, size_t nmemb) {return delegate->Vwrite(ptr,size,nmemb);}
    66 int Veof() {return delegate->Veof();}
    67 int Vputc(int c) {return delegate->Vputc(c);}
    68 int Vputs(const char *s) {return delegate->Vputs(s);}
    69 int Vgetc() {return delegate->Vgetc();}
    70 int Vseek(long offset, int whence) {return delegate->Vseek(offset,whence);}
    71 long Vtell() {return delegate->Vtell();}
    72 void Vrewind() {delegate->Vrewind();}
    73 int Vflush() {return delegate->Vflush();}
    74 char *Vgets(char *s, int size) {return delegate->Vgets(s,size);}
    75 int Vprintf(const char *format, va_list args) {return delegate->Vprintf(format,args);}
    76 int getSize() {return delegate->getSize();}
    77 // not overriden: VgetPath()
     62        VirtFILE *delegate;
     63public:
     64        size_t Vread(void *ptr, size_t size, size_t nmemb) { return delegate->Vread(ptr, size, nmemb); }
     65        size_t Vwrite(const void *ptr, size_t size, size_t nmemb) { return delegate->Vwrite(ptr, size, nmemb); }
     66        int Veof() { return delegate->Veof(); }
     67        int Vputc(int c) { return delegate->Vputc(c); }
     68        int Vputs(const char *s) { return delegate->Vputs(s); }
     69        int Vgetc() { return delegate->Vgetc(); }
     70        int Vseek(long offset, int whence) { return delegate->Vseek(offset, whence); }
     71        long Vtell() { return delegate->Vtell(); }
     72        void Vrewind() { delegate->Vrewind(); }
     73        int Vflush() { return delegate->Vflush(); }
     74        char *Vgets(char *s, int size) { return delegate->Vgets(s, size); }
     75        int Vprintf(const char *format, va_list args) { return delegate->Vprintf(format, args); }
     76        int getSize() { return delegate->getSize(); }
     77        // not overriden: VgetPath()
    7878
    79 DelegatedFILE(const char* _path,VirtFILE *_delegate):VirtFILE(_path),delegate(_delegate) {}
    80 virtual ~DelegatedFILE() {if (delegate) delete delegate; delegate=NULL;}
     79        DelegatedFILE(const char* _path, VirtFILE *_delegate) :VirtFILE(_path), delegate(_delegate) {}
     80        virtual ~DelegatedFILE() { if (delegate) delete delegate; delegate = NULL; }
    8181};
    8282
    8383class DLLEXP VirtDIR
    8484{
    85   public:
    86 virtual ~VirtDIR() {}
    87 virtual dirent* Vreaddir() {return 0;}
     85public:
     86        virtual ~VirtDIR() {}
     87        virtual dirent* Vreaddir() { return 0; }
    8888};
    8989
     
    9191{
    9292public:
    93 virtual VirtFILE *Vfopen(const char* path,const char*mode);
    94 virtual bool Vfexists(const char* path);
    95 virtual VirtDIR *Vopendir(const char* path);
    96 virtual bool Vmkdir(const char* path);
    97 virtual bool Vmkdirs(const char* path);
    98 virtual bool Vdirexists(const char* path,bool is_writable);
     93        virtual VirtFILE *Vfopen(const char* path, const char*mode);
     94        virtual bool Vfexists(const char* path);
     95        virtual VirtDIR *Vopendir(const char* path);
     96        virtual bool Vmkdir(const char* path);
     97        virtual bool Vmkdirs(const char* path);
     98        virtual bool Vdirexists(const char* path, bool is_writable);
    9999};
    100100
     
    110110        bool Vmkdir(const char* path);
    111111        bool Vmkdirs(const char* path);
    112         bool Vdirexists(const char* path,bool is_writable);
     112        bool Vdirexists(const char* path, bool is_writable);
    113113};
    114114
    115115
    116 DLLEXP VirtFILE *Vfopen(const char* path,const char*mode);
     116DLLEXP VirtFILE *Vfopen(const char* path, const char*mode);
    117117DLLEXP VirtDIR *Vopendir(const char* path);
    118118DLLEXP bool Vfexists(const char* path);
    119119DLLEXP bool Vmkdir(const char* path);
    120120DLLEXP bool Vmkdirs(const char* path);
    121 DLLEXP bool Vdirexists(const char* path,bool is_writable);
     121DLLEXP bool Vdirexists(const char* path, bool is_writable);
    122122
    123123DLLEXP int fread(void *ptr, size_t size, size_t nmemb, VirtFILE* f);
     
    127127//since we want our own feof(VirtFILE*) function and some systems unfortunately define feof as a macro, we need to #undef it. Same as in virtfile.cpp
    128128#if defined _MSC_VER || defined __CYGWIN__ || defined SHP || defined __ANDROID__
    129  #pragma push_macro("feof")
    130  #undef feof
     129#pragma push_macro("feof")
     130#undef feof
    131131#endif
    132132#if defined __BORLANDC__ //does not support #pragma push_macro/pop_macro
    133  #undef feof
     133#undef feof
    134134#endif
    135  
     135
    136136DLLEXP int feof(VirtFILE* f);// {return f->Veof();}
    137137
    138138//...and then restore the original macro:
    139139#if defined _MSC_VER || defined __CYGWIN__ || defined SHP || defined __ANDROID__
    140  #pragma pop_macro("feof")
     140#pragma pop_macro("feof")
    141141#endif
    142142#if defined __BORLANDC__
    143  #define feof(__f)     ((__f)->flags & _F_EOF)
     143#define feof(__f)     ((__f)->flags & _F_EOF)
    144144#endif
    145145
    146146
    147 DLLEXP int fputc(int c,VirtFILE* f);
    148 DLLEXP int fputs(const char *s,VirtFILE* f);
     147DLLEXP int fputc(int c, VirtFILE* f);
     148DLLEXP int fputs(const char *s, VirtFILE* f);
    149149DLLEXP int fgetc(VirtFILE* f);
    150 DLLEXP int fseek(VirtFILE* f,long offset, int whence);
     150DLLEXP int fseek(VirtFILE* f, long offset, int whence);
    151151DLLEXP int ftell(VirtFILE* f);
    152152DLLEXP void rewind(VirtFILE* f);
    153153DLLEXP int fflush(VirtFILE* f);
    154154DLLEXP char *fgets(char *s, int size, VirtFILE* f);
    155 DLLEXP int fprintf(VirtFILE* f,const char *format, ...);
     155DLLEXP int fprintf(VirtFILE* f, const char *format, ...);
    156156DLLEXP int fclose(VirtFILE* f);
    157157
Note: See TracChangeset for help on using the changeset viewer.