00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _util_state_state_text_h
00029 #define _util_state_state_text_h
00030
00031 #ifdef __GNUC__
00032 #pragma interface
00033 #endif
00034
00035 #include <util/state/state_file.h>
00036
00037 namespace sc {
00038
00044 class StateOutText: public StateOutFile {
00045 private:
00046
00047 StateOutText(const StateOutText&);
00048 void operator=(const StateOutText&);
00049 protected:
00050 int no_newline_;
00051 int no_array_;
00052 void no_newline();
00053 void no_array();
00054 void newline();
00055 void start_array();
00056 void end_array();
00057 int putobject(const Ref<SavableState> &);
00058 int putparents(const ClassDesc*);
00059 public:
00060 StateOutText();
00061 StateOutText(std::ostream& s);
00062 StateOutText(const char *);
00063 ~StateOutText();
00064 int putstring(const char*);
00065 int put_array_char(const char*,int);
00066 int put_array_uint(const unsigned int*,int);
00067 int put_array_int(const int*,int);
00068 int put_array_ulong(const unsigned long*,int);
00069 int put_array_long(const long*,int);
00070 int put_array_float(const float*,int);
00071 int put_array_double(const double*,int);
00072 int put(const ClassDesc*);
00073 int put(char r);
00074 int put(unsigned int r);
00075 int put(int r);
00076 int put(unsigned long r);
00077 int put(long r);
00078 int put(float r);
00079 int put(double r);
00080 int put(const char*,int);
00081 int put(const unsigned int*,int);
00082 int put(const int*,int);
00083 int put(const unsigned long*,int);
00084 int put(const long*,int);
00085 int put(const float*,int);
00086 int put(const double*,int);
00087 };
00088
00091 class StateInText: public StateInFile {
00092 private:
00093
00094 StateInText(const StateInText&);
00095 void operator=(const StateInText&);
00096 protected:
00097 int newlines_;
00098 int no_newline_;
00099 int no_array_;
00100 void no_newline();
00101 void no_array();
00102
00103 int read(char*);
00104 int read(unsigned int&);
00105 int read(int&);
00106 int read(unsigned long&);
00107 int read(long&);
00108 int read(float&);
00109 int read(double&);
00110 void newline();
00111 void start_array();
00112 void end_array();
00113 int getobject(Ref<SavableState> &);
00114
00115 void abort();
00116 public:
00117 StateInText();
00118 StateInText(std::istream& s);
00119 StateInText(const char *);
00120 StateInText(const Ref<KeyVal> &);
00121 ~StateInText();
00122 int getstring(char*&);
00123 int get_array_char(char*,int);
00124 int get_array_uint(unsigned int*,int);
00125 int get_array_int(int*,int);
00126 int get_array_ulong(unsigned long*,int);
00127 int get_array_long(long*,int);
00128 int get_array_float(float*,int);
00129 int get_array_double(double*,int);
00130 int get(const ClassDesc**);
00131 int get(char&r, const char *key = 0);
00132 int get(unsigned int&r, const char *key = 0);
00133 int get(int&r, const char *key = 0);
00134 int get(unsigned long&r, const char *key = 0);
00135 int get(long&r, const char *key = 0);
00136 int get(float&r, const char *key = 0);
00137 int get(double&r, const char *key = 0);
00138 int get(char*&);
00139 int get(unsigned int*&);
00140 int get(int*&);
00141 int get(unsigned long*&);
00142 int get(long*&);
00143 int get(float*&);
00144 int get(double*&);
00145 };
00146
00147 }
00148
00149 #endif
00150
00151
00152
00153
00154