Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

store.h

Go to the documentation of this file.
00001 /*
00002  *      HT Editor
00003  *      store.h
00004  *
00005  *      Copyright (C) 1999-2002 Sebastian Biallas (sb@web-productions.de)
00006  *
00007  *      This program is free software; you can redistribute it and/or modify
00008  *      it under the terms of the GNU General Public License version 2 as
00009  *      published by the Free Software Foundation.
00010  *
00011  *      This program is distributed in the hope that it will be useful,
00012  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *      GNU General Public License for more details.
00015  *
00016  *      You should have received a copy of the GNU General Public License
00017  *      along with this program; if not, write to the Free Software
00018  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019  */
00020 
00021 #ifndef STORE_H
00022 #define STORE_H
00023 
00024 #include "common.h"
00025 #include "global.h"
00026 #include "htdata.h"
00027 
00028 typedef Object *(*object_builder)();
00029 
00030 class ht_stream;
00031 
00032 #include "stream.h"
00033 
00034 class ht_object_stream_inter: public ht_object_stream {
00035 public:
00036         virtual Object  *getObject(char *name);
00037         virtual void    getObject(Object *&o, char *name);
00038         virtual void    putObject(Object *obj, char *name);
00039 };
00040 
00041 class ht_object_stream_bin: public ht_object_stream_inter {
00042 public:
00043                    void init(ht_stream *s);
00044 /* overwritten */
00045         virtual void    *getBinary(int size, char *desc);
00046         virtual void    getBinary(void *p, int size, char *desc);
00047         virtual bool    getBool(char *desc);
00048         virtual int     getIntDec(int size, char *desc);
00049         virtual int     getIntHex(int size, char *desc);
00050         virtual qword   getQWordDec(int size, char *desc);
00051         virtual qword   getQWordHex(int size, char *desc);
00052         virtual void    getSeparator();
00053         virtual char    *getString(char *desc);
00054         virtual void    putBinary(void *mem, int size, char *desc);
00055         virtual void    putBool(bool b, char *desc);
00056         virtual void    putInfo(char *info);
00057         virtual void    putIntDec(int a, int size, char *desc);
00058         virtual void    putIntHex(int a, int size, char *desc);
00059         virtual void    putQWordDec(qword a, int size, char *desc);
00060         virtual void    putQWordHex(qword a, int size, char *desc);
00061         virtual void    putSeparator();
00062         virtual void    putString(char *string, char *desc);
00063 };
00064 
00065 class ht_object_stream_txt: public ht_object_stream_inter {
00066 protected:
00067         char            cur;
00068         int             line;
00069         int             errorline;
00070         int             indent;
00071 public:
00072            
00073                 void    init(ht_stream *s);
00074 /* overwritten */
00075         virtual void    *getBinary(int size, char *desc);
00076         virtual void    getBinary(void *p, int size, char *desc);
00077         virtual bool    getBool(char *desc);
00078         virtual int     getIntDec(int size, char *desc);
00079         virtual int     getIntHex(int size, char *desc);
00080         virtual qword   getQWordDec(int size, char *desc);
00081         virtual qword   getQWordHex(int size, char *desc);
00082         virtual void    getObject(Object *&o, char *name);
00083         virtual void    getSeparator();
00084         virtual char    *getString(char *desc);
00085         virtual void    putBinary(void *mem, int size, char *desc);
00086         virtual void    putBool(bool b, char *desc);
00087         virtual void    putInfo(char *info);
00088         virtual void    putIntDec(int a, int size, char *desc);
00089         virtual void    putIntHex(int a, int size, char *desc);
00090         virtual void    putQWordDec(qword a, int size, char *desc);
00091         virtual void    putQWordHex(qword a, int size, char *desc);
00092         virtual void    putObject(Object *obj, char *name);
00093         virtual void    putSeparator();
00094         virtual void    putString(char *string, char *desc);
00095 
00096                    void setSyntaxError();
00097                    int  getErrorLine();
00098 private:
00099 /* io */
00100                    void expect(char c);
00101                    void skipWhite();
00102                    char readChar();
00103                    void readDesc(char *desc);
00104 
00105                    
00106                    void putDesc(char *desc);
00107                    void putIndent();
00108                    void putChar(char c);
00109                    void putS(char *s);
00110 };
00111 
00112 /*
00113  *   ht_object_stream_memmap dups strings + mem for set/getdata
00114  *      WARNING: not endian-neutral!!
00115  */
00116  
00117 class ht_object_stream_memmap: public ht_object_stream_bin {
00118 protected:
00119         bool duplicate;
00120         ht_clist        *allocd;
00121 
00122                    void *duppa(void *p, int size);
00123 public:
00124                    void init(ht_stream *s, bool duplicate);
00125         virtual void    done();
00126         virtual void    *getBinary(int size, char *desc);
00127         virtual void    getBinary(void *p, int size, char *desc);
00128         virtual int     getIntDec(int size, char *desc);
00129         virtual int     getIntHex(int size, char *desc);
00130         virtual qword   getQWordDec(int size, char *desc);
00131         virtual qword   getQWordHex(int size, char *desc);
00132         virtual char    *getString(char *desc);
00133         virtual UINT    recordStart(UINT size);
00134         virtual void    recordEnd(UINT);
00135         virtual void    putBinary(void *mem, int size, char *desc);
00136         virtual void    putIntDec(int a, int size, char *desc);
00137         virtual void    putIntHex(int a, int size, char *desc);
00138         virtual void    putQWordDec(qword a, int size, char *desc);
00139         virtual void    putQWordHex(qword a, int size, char *desc);
00140         virtual void    putString(char *string, char *desc);
00141 };
00142 
00143 #endif

Generated on Fri May 7 21:15:43 2004 by doxygen 1.3.5