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.4 by root, Thu Apr 15 06:05:52 2010 UTC vs.
Revision 1.12 by root, Tue Jan 3 11:25:31 2012 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * 5 *
6 * Deliantra is free software: you can redistribute it and/or modify it under 6 * Deliantra is free software: you can redistribute it and/or modify it under
7 * the terms of the Affero GNU General Public License as published by the 7 * the terms of the Affero GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your 8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version. 9 * option) any later version.
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{
171 static bool errors_are_fatal; // true during server startup only 174 static bool errors_are_fatal; // true during server startup only
172 175
181 const char *name; 184 const char *name;
182 185
183 operator bool () const { return !!text; } 186 operator bool () const { return !!text; }
184 187
185 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);
186 object_thawer (const_utf8_string data, AV *perlav); 190 object_thawer (const_utf8_string data, AV *perlav);
187 ~object_thawer (); 191 ~object_thawer ();
188 192
189 void get (attachable *obj, int oid); 193 void get (attachable *obj, int oid);
190 194
199 // skip the current key-value (usually fetch next line, for 203 // skip the current key-value (usually fetch next line, for
200 // multiline-fields, skips till the corresponding end-kw 204 // multiline-fields, skips till the corresponding end-kw
201 MTH void skip (); 205 MTH void skip ();
202 MTH void skip_block (); // skips till and over KW_end 206 MTH void skip_block (); // skips till and over KW_end
203 207
208 // returns true IFF a value was specified and it is not the empty string
209 // formerly, this just etsetd for a value, but the editor is too dumb
210 // and creates lots of empty values.
204 bool has_value () { return value; } 211 bool has_value () const { return *value_nn; }
205 const_utf8_string get_str () { return value_nn; } // empty string when missing 212 const_utf8_string get_str () const { return value_nn; } // empty string when missing
206 void get_ml (keyword kend, shstr &sh); 213 void get_ml (keyword kend, shstr &sh);
207 214
208 void get_ornull (shstr &sh) const { sh = value; } 215 void get_ornull (shstr &sh) const { sh = value; }
209 void get (shstr &sh) const { sh = value; } // might want to check for non-null here 216 void get (shstr &sh) const { sh = value; } // might want to check for non-null here
210 217
211 bool get_bool () const { return *value_nn == '1'; } 218 bool get_bool () const { return *value_nn == '1'; }
212 sint32 get_sint32 () const; 219 sint32 get_sint32 () const;
213 sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); } 220 sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); }
214 double get_double () const { return strtod (value_nn, 0); } 221 double get_double () const { return strtod (value_nn, 0); }
215 222
216 void get (float &v) { v = get_double (); } 223 void get (float &v) const { v = get_double (); }
217 void get (double &v) { v = get_double (); } 224 void get (double &v) const { v = get_double (); }
218 225
219 void get (bool &i) { i = get_bool (); } 226 void get (bool &i) const { i = get_bool (); }
220 void get (sint8 &i) { i = get_sint32 (); } 227 void get (sint8 &i) const { i = get_sint32 (); }
221 void get (uint8 &i) { i = get_sint32 (); } 228 void get (uint8 &i) const { i = get_sint32 (); }
222 void get (sint16 &i) { i = get_sint32 (); } 229 void get (sint16 &i) const { i = get_sint32 (); }
223 void get (uint16 &i) { i = get_sint32 (); } 230 void get (uint16 &i) const { i = get_sint32 (); }
224 void get (sint32 &i) { i = get_sint32 (); } 231 void get (sint32 &i) const { i = get_sint32 (); }
225 232
226 void get (uint32 &i) { i = get_sint64 (); } 233 void get (uint32 &i) const { i = get_sint64 (); }
227 void get (sint64 &i) { i = get_sint64 (); } 234 void get (sint64 &i) const { i = get_sint64 (); }
228 235
236 void get (region_ptr &r) const;
237 void get (materialtype_t *&mt) const;
238
229 MTH void parse_warn (const_utf8_string msg); 239 MTH void parse_warn (const_utf8_string msg) const;
230 MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true); 240 MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true) const;
231 241
232 struct delayed_ref { 242 struct delayed_ref {
233 attachable *op; 243 attachable *op;
234 object_ptr *ptr; 244 object_ptr *ptr;
235 const_utf8_string ref; 245 const_utf8_string ref;
236 }; 246 };
237 std::vector<delayed_ref> delrefs; 247 std::vector<delayed_ref> delrefs;
238 248
239 void delayed_deref (attachable *op, object_ptr &ptr, const_utf8_string ref); 249 void delayed_deref (attachable *op, object_ptr &ptr, const_utf8_string ref);
240 MTH void resolve_delayed_derefs (bool deref = true); 250 MTH void resolve_delayed_derefs (bool deref = true);
251private:
252 void init (const_utf8_string path);
253 void init_from_file (const_utf8_string path);
241}; 254};
242 255
243#endif 256#endif
244 257

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines