--- deliantra/server/include/cfperl.h 2006/08/31 09:19:34 1.18 +++ deliantra/server/include/cfperl.h 2006/08/31 17:54:14 1.19 @@ -11,8 +11,6 @@ #include #include -#include "keyword.h" - // optimisations/workaround for functions requiring my_perl in scope (anti-bloat) #undef localtime #undef srand48 @@ -112,10 +110,9 @@ } }; -struct object_freezer +struct object_freezer : dynbuf { AV *av; - SV *text; object_freezer (); ~object_freezer (); @@ -128,15 +125,33 @@ put ((attachable_base *)obj); } - void put (keyword k); - void put (const char *v); - void put (int v); + void put (const char *k, const char *v); //TODO//temporary + void put (const char *k, int v); //TODO//temporary + + void put (keyword k, const char *v); + void put (keyword k, double v); + void put (keyword k, float v) { put (k, (double)v); } + + void put_ (keyword k, sint32 v); + void put_ (keyword k, sint64 v); + + void put (keyword k, signed char v) { put_(k, (sint32)v); } + void put (keyword k, unsigned char v) { put_(k, (sint32)v); } + void put (keyword k, signed short v) { put_(k, (sint32)v); } + void put (keyword k, unsigned short v) { put_(k, (sint32)v); } + void put (keyword k, signed int v) { put_(k, (sint32)v); } + void put (keyword k, unsigned int v) { put_(k, (sint64)v); } + void put (keyword k, signed long v) { put_(k, (sint64)v); } + void put (keyword k, unsigned long v) { put_(k, (sint64)v); } + void put (keyword k, signed long long v) { put_(k, (sint64)v); } + void put (keyword k, unsigned long long v) { put_(k, (sint64)v); } + + void put (keyword kbeg, keyword kend, const char *v); // multiline - template - void put (keyword k, value v) + template + void put (keyword k, T *v) { - put (k); - put (v); + put (k, v ? (const char *)v->name : 0); } bool save (const char *filename);