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_float(const float*,int);
00069 int put_array_double(const double*,int);
00070 int put(const ClassDesc*);
00071 int put(char r);
00072 int put(unsigned int r);
00073 int put(int r);
00074 int put(float r);
00075 int put(double r);
00076 int put(const char*,int);
00077 int put(const unsigned int*,int);
00078 int put(const int*,int);
00079 int put(const float*,int);
00080 int put(const double*,int);
00081 };
00082
00085 class StateInText: public StateInFile {
00086 private:
00087
00088 StateInText(const StateInText&);
00089 void operator=(const StateInText&);
00090 protected:
00091 int newlines_;
00092 int no_newline_;
00093 int no_array_;
00094 void no_newline();
00095 void no_array();
00096
00097 int read(char*);
00098 int read(unsigned int&);
00099 int read(int&);
00100 int read(float&);
00101 int read(double&);
00102 void newline();
00103 void start_array();
00104 void end_array();
00105 int getobject(Ref<SavableState> &);
00106
00107 void abort();
00108 public:
00109 StateInText();
00110 StateInText(std::istream& s);
00111 StateInText(const char *);
00112 StateInText(const Ref<KeyVal> &);
00113 ~StateInText();
00114 int getstring(char*&);
00115 int get_array_char(char*,int);
00116 int get_array_uint(unsigned int*,int);
00117 int get_array_int(int*,int);
00118 int get_array_float(float*,int);
00119 int get_array_double(double*,int);
00120 int get(const ClassDesc**);
00121 int get(char&r, const char *key = 0);
00122 int get(unsigned int&r, const char *key = 0);
00123 int get(int&r, const char *key = 0);
00124 int get(float&r, const char *key = 0);
00125 int get(double&r, const char *key = 0);
00126 int get(char*&);
00127 int get(unsigned int*&);
00128 int get(int*&);
00129 int get(float*&);
00130 int get(double*&);
00131 };
00132
00133 }
00134
00135 #endif
00136
00137
00138
00139
00140