--- deliantra/server/include/freezethaw.h 2010/04/28 20:51:58 1.6
+++ deliantra/server/include/freezethaw.h 2018/12/05 19:03:26 1.16
@@ -1,22 +1,23 @@
/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
- *
- * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
- *
+ *
+ * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team
+ * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
+ *
* Deliantra is free software: you can redistribute it and/or modify it under
* the terms of the Affero GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the Affero GNU General Public License
* and the GNU General Public License along with this program. If not, see
* .
- *
+ *
* The authors can be reached via e-mail to
*/
@@ -63,7 +64,7 @@
void put_ (attachable *ext);
void put (attachable *ext)
{
- if (expect_false (ext->self))
+ if (ecb_expect_false (ext->self))
put_ (ext);
}
@@ -85,7 +86,7 @@
void put (const keyword_string k, const_utf8_string v)
{
- if (expect_true (v))
+ if (ecb_expect_true (v))
put (k, keyword_string (v, strlen (v)));
else
put (k);
@@ -139,7 +140,7 @@
force (MAX_KEYWORD_LEN + 1);
fadd (kbeg.s, kbeg.l); fadd ('\n');
- if (expect_true (v))
+ if (ecb_expect_true (v))
{
add (v);
add ('\n');
@@ -205,8 +206,11 @@
MTH void skip ();
MTH void skip_block (); // skips till and over KW_end
- bool has_value () { return value; }
- const_utf8_string get_str () { return value_nn; } // empty string when missing
+ // returns true IFF a value was specified and it is not the empty string
+ // formerly, this just etsetd for a value, but the editor is too dumb
+ // and creates lots of empty values.
+ bool has_value () const { return *value_nn; }
+ const_utf8_string get_str () const { return value_nn; } // empty string when missing
void get_ml (keyword kend, shstr &sh);
void get_ornull (shstr &sh) const { sh = value; }
@@ -217,21 +221,24 @@
sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); }
double get_double () const { return strtod (value_nn, 0); }
- void get (float &v) { v = get_double (); }
- void get (double &v) { v = get_double (); }
+ void get (float &v) const { v = get_double (); }
+ void get (double &v) const { v = get_double (); }
- void get (bool &i) { i = get_bool (); }
- void get (sint8 &i) { i = get_sint32 (); }
- void get (uint8 &i) { i = get_sint32 (); }
- void get (sint16 &i) { i = get_sint32 (); }
- void get (uint16 &i) { i = get_sint32 (); }
- void get (sint32 &i) { i = get_sint32 (); }
+ void get (bool &i) const { i = get_bool (); }
+ void get (sint8 &i) const { i = get_sint32 (); }
+ void get (uint8 &i) const { i = get_sint32 (); }
+ void get (sint16 &i) const { i = get_sint32 (); }
+ void get (uint16 &i) const { i = get_sint32 (); }
+ void get (sint32 &i) const { i = get_sint32 (); }
- void get (uint32 &i) { i = get_sint64 (); }
- void get (sint64 &i) { i = get_sint64 (); }
+ void get (uint32 &i) const { i = get_sint64 (); }
+ void get (sint64 &i) const { i = get_sint64 (); }
- MTH void parse_warn (const_utf8_string msg);
- MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true);
+ void get (region_ptr &r) const;
+ void get (materialtype_t *&mt) const;
+
+ MTH void parse_warn (const_utf8_string msg) const;
+ MTH bool parse_error (const_utf8_string type = 0, const_utf8_string name = 0, bool skip = true) const;
struct delayed_ref {
attachable *op;
@@ -243,7 +250,8 @@
void delayed_deref (attachable *op, object_ptr &ptr, const_utf8_string ref);
MTH void resolve_delayed_derefs (bool deref = true);
private:
- void new_from_path (const_utf8_string path);
+ void init (const_utf8_string path);
+ void init_from_file (const_utf8_string path);
};
#endif