Changeset 104 for cpp/gdk/extvalue.h
- Timestamp:
- 07/23/13 18:15:30 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/gdk/extvalue.h
r92 r104 8 8 #include "sstring.h" 9 9 #include "param.h" 10 #include "nonstd_stl.h" 11 #include "threads.h" 10 12 11 13 #define EXTVALUEUNION … … 48 50 void* operator new(size_t s) {return malloc(sizeof(ExtObject));} 49 51 void operator delete(void* mem) {free(mem);} 50 51 ParamInterface *getParamInterface() const {if(subtype&2){param->select(object);return param;} return paraminterface;} 52 const char* interfaceName() const {if (isEmpty()) return "Empty"; return getParamInterface()->getName();} 52 ///@param tmp_param can be used for temporary storage, the result ParamInterface* is only valid for as long as tmp_param is valid 53 ParamInterface *getParamInterface(Param &tmp_param) const {if(subtype&2){tmp_param.setParamTab(param->getParamTab());tmp_param.select(object);return &tmp_param;} return paraminterface;} 54 const char* interfaceName() const {if (isEmpty()) return "Empty"; return (subtype&2)?param->getName():paraminterface->getName();} 55 bool matchesInterfaceName(ParamInterface* pi) const {return !strcmp(interfaceName(),pi->getName());} 53 56 void* getTarget() const {return (subtype&1)?dbobject:object;} 54 57 void* getTarget(const char* classname) const {return strcmp(interfaceName(),classname)?0:getTarget();} 58 void setEmpty() {decref();subtype=0;param=NULL;object=NULL;} 55 59 int isEmpty() const {return !param;} 56 60 ExtObject(const ExtObject& src) {src.incref();copyFrom(src);} 57 61 void operator=(const ExtObject& src) {src.incref();decref();copyFrom(src);} 58 62 59 int operator==(const ExtObject& src) {if (object!=src.object) return 0; return (object==0)?(param==src.param):1;}63 int operator==(const ExtObject& src) const {if (object!=src.object) return 0; return (object==0)?(!strcmp(param->getName(),src.param->getName())):1;} 60 64 61 65 SString toString() const; 66 SString serialize_inner() const; 67 SString serialize() const; 62 68 63 69 ExtObject(Param *p,void *o):subtype(2),object(o),param(p){} … … 67 73 68 74 ~ExtObject(){decref();} 75 76 class Serialization 77 { 78 std::vector<ExtObject> refs; 79 int level; 80 public: 81 void begin(); 82 void end(); 83 int add(const ExtObject& o); 84 void replace(const ExtObject& o,const ExtObject& other); 85 void remove(const ExtObject& o); 86 const ExtObject* get(int ref); 69 87 }; 70 88 89 static ThreadSingleton<Serialization> serialization; 90 }; 71 91 72 92 class ExtValue … … 124 144 double getDouble() const; 125 145 SString getString() const; 146 SString serialize() const; 126 147 ExtObject getObject() const; 148 const char* parseNumber(const char* in); 149 const char* deserialize(const char* in);//< @return first character after the succesfully parsed string or NULL if failed 150 const char* deserialize_inner(const char* in); 151 static PtrListTempl<ParamInterface*> deserializable_classes; 152 static ParamInterface *findDeserializableClass(const char* name); 153 static void initDeserializableClasses(); 127 154 128 155 ExtValue getExtType();
Note: See TracChangeset
for help on using the changeset viewer.