ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/freezethaw.h
(Generate patch)

Comparing deliantra/server/include/freezethaw.h (file contents):
Revision 1.3 by root, Thu Apr 15 04:56:47 2010 UTC vs.
Revision 1.7 by root, Thu Apr 29 12:24:04 2010 UTC

163 utf8_string as_string (); // like strdup 163 utf8_string as_string (); // like strdup
164 164
165 operator bool () { return !!av; } 165 operator bool () { return !!av; }
166}; 166};
167 167
168// used as dir argument to object_thawer constructor
169#define RESOURCE_DIR const_utf8_string (0)
170
168INTERFACE_CLASS(object_thawer) 171INTERFACE_CLASS(object_thawer)
169struct object_thawer 172struct object_thawer
170{ 173{
174 static bool errors_are_fatal; // true during server startup only
175
171 char *line; // current beginning of line 176 char *line; // current beginning of line
172 SV *text; // text part 177 SV *text; // text part
173 AV *av; // perl part 178 AV *av; // perl part
174 int linenum; 179 int linenum;
175 keyword kw; 180 keyword kw;
179 const char *name; 184 const char *name;
180 185
181 operator bool () const { return !!text; } 186 operator bool () const { return !!text; }
182 187
183 object_thawer (const_utf8_string path = 0); 188 object_thawer (const_utf8_string path = 0);
189 object_thawer (const_utf8_string dir, const_utf8_string file);
184 object_thawer (const_utf8_string data, AV *perlav); 190 object_thawer (const_utf8_string data, AV *perlav);
185 ~object_thawer (); 191 ~object_thawer ();
186 192
187 void get (attachable *obj, int oid); 193 void get (attachable *obj, int oid);
188 194
197 // skip the current key-value (usually fetch next line, for 203 // skip the current key-value (usually fetch next line, for
198 // multiline-fields, skips till the corresponding end-kw 204 // multiline-fields, skips till the corresponding end-kw
199 MTH void skip (); 205 MTH void skip ();
200 MTH void skip_block (); // skips till and over KW_end 206 MTH void skip_block (); // skips till and over KW_end
201 207
202 bool has_value () { return value; } 208 bool has_value () const { return value; }
203 const_utf8_string get_str () { return value_nn; } // empty string when missing 209 const_utf8_string get_str () const { return value_nn; } // empty string when missing
204 void get_ml (keyword kend, shstr &sh); 210 void get_ml (keyword kend, shstr &sh);
205 211
206 void get_ornull (shstr &sh) const { sh = value; } 212 void get_ornull (shstr &sh) const { sh = value; }
207 void get (shstr &sh) const { sh = value; } // might want to check for non-null here 213 void get (shstr &sh) const { sh = value; } // might want to check for non-null here
208 214
209 bool get_bool () const { return *value_nn == '1'; } 215 bool get_bool () const { return *value_nn == '1'; }
210 sint32 get_sint32 () const; 216 sint32 get_sint32 () const;
211 sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); } 217 sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); }
212 double get_double () const { return strtod (value_nn, 0); } 218 double get_double () const { return strtod (value_nn, 0); }
213 219
214 void get (float &v) { v = get_double (); } 220 void get (float &v) const { v = get_double (); }
215 void get (double &v) { v = get_double (); } 221 void get (double &v) const { v = get_double (); }
216 222
217 void get (bool &i) { i = get_bool (); } 223 void get (bool &i) const { i = get_bool (); }
218 void get (sint8 &i) { i = get_sint32 (); } 224 void get (sint8 &i) const { i = get_sint32 (); }
219 void get (uint8 &i) { i = get_sint32 (); } 225 void get (uint8 &i) const { i = get_sint32 (); }
220 void get (sint16 &i) { i = get_sint32 (); } 226 void get (sint16 &i) const { i = get_sint32 (); }
221 void get (uint16 &i) { i = get_sint32 (); } 227 void get (uint16 &i) const { i = get_sint32 (); }
222 void get (sint32 &i) { i = get_sint32 (); } 228 void get (sint32 &i) const { i = get_sint32 (); }
223 229
224 void get (uint32 &i) { i = get_sint64 (); } 230 void get (uint32 &i) const { i = get_sint64 (); }
225 void get (sint64 &i) { i = get_sint64 (); } 231 void get (sint64 &i) const { i = get_sint64 (); }
226 232
233 void get (region_ptr &r) const;
234 void get (materialtype_t *&m) const;
235
227 MTH void parse_warn (const_utf8_string msg); 236 MTH void parse_warn (const_utf8_string msg) const;
228 MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true); 237 MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true) const;
229 238
230 struct delayed_ref { 239 struct delayed_ref {
231 attachable *op; 240 attachable *op;
232 object_ptr *ptr; 241 object_ptr *ptr;
233 const_utf8_string ref; 242 const_utf8_string ref;
234 }; 243 };
235 std::vector<delayed_ref> delrefs; 244 std::vector<delayed_ref> delrefs;
236 245
237 void delayed_deref (attachable *op, object_ptr &ptr, const_utf8_string ref); 246 void delayed_deref (attachable *op, object_ptr &ptr, const_utf8_string ref);
238 MTH void resolve_delayed_derefs (bool deref = true); 247 MTH void resolve_delayed_derefs (bool deref = true);
248private:
249 void new_from_path (const_utf8_string path);
239}; 250};
240 251
241#endif 252#endif
242 253

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines