Changeset 746 for cpp/frams/vm/classes/collectionobj.h
- Timestamp:
- 02/28/18 19:37:32 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified cpp/frams/vm/classes/collectionobj.h ΒΆ
r642 r746 12 12 13 13 /** object collection, indexed by int */ 14 class VectorObject : public DestrBase14 class VectorObject : public DestrBase 15 15 { 16 17 SList data;18 unsigned int readonly:1, owndata:1;19 void clear();20 ExtValue *get(int i) {return (ExtValue*)data.get(i);}21 void set_or_insert(int i,const ExtValue& val,bool insert);16 public: 17 SList data; 18 unsigned int readonly : 1, owndata : 1; 19 void clear(); 20 ExtValue *get(int i) { return (ExtValue*)data.get(i); } 21 void set_or_insert(int i, const ExtValue& val, bool insert); 22 22 23 static Param par;24 VectorObject(Pt3D& pt);25 VectorObject():readonly(0),owndata(1) {}26 ~VectorObject() {clear();}27 static Param& getStaticParam() {return par;}23 static Param par; 24 VectorObject(Pt3D& pt); 25 VectorObject() :readonly(0), owndata(1) {} 26 ~VectorObject() { clear(); } 27 static Param& getStaticParam() { return par; } 28 28 #define STATRICKCLASS VectorObject 29 PARAMPROCDEF(p_clear) {if (readonly) return; clear();}30 PARAMGETDEF(size) {arg1->setInt(data.size());}31 PARAMGETDEF(avg);32 PARAMGETDEF(stdev);33 PARAMGETDEF(iterator);34 PARAMPROCDEF(p_remove);35 PARAMPROCDEF(p_get);36 PARAMPROCDEF(p_find);37 PARAMPROCDEF(p_set) {if (!readonly) set_or_insert(arg1[1].getInt(),arg1[0],false);}38 PARAMPROCDEF(p_add) {if (readonly) return; /*ExtValue tmp; get_toString(&tmp); printf("%s += %s",(const char*)tmp.getString(),(const char*)arg1[0].getString());*/ data+=new ExtValue(arg1[0]); /*get_toString(&tmp); printf(" -> %s\n",(const char*)tmp.getString());*/ arg2->setInt(data.size()-1);}39 PARAMPROCDEF(p_insert) {if (!readonly) set_or_insert(arg1[1].getInt(),arg1[0],true);}40 PARAMGETDEF(toString);41 PARAMPROCDEF(p_sort);42 PARAMPROCDEF(p_clone);29 PARAMPROCDEF(p_clear) { if (readonly) return; clear(); } 30 PARAMGETDEF(size) { arg1->setInt(data.size()); } 31 PARAMGETDEF(avg); 32 PARAMGETDEF(stdev); 33 PARAMGETDEF(iterator); 34 PARAMPROCDEF(p_remove); 35 PARAMPROCDEF(p_get); 36 PARAMPROCDEF(p_find); 37 PARAMPROCDEF(p_set) { if (!readonly) set_or_insert(arg1[1].getInt(), arg1[0], false); } 38 PARAMPROCDEF(p_add) { if (readonly) return; /*ExtValue tmp; get_toString(&tmp); printf("%s += %s",(const char*)tmp.getString(),(const char*)arg1[0].getString());*/ data += new ExtValue(arg1[0]); /*get_toString(&tmp); printf(" -> %s\n",(const char*)tmp.getString());*/ arg2->setInt(data.size() - 1); } 39 PARAMPROCDEF(p_insert) { if (!readonly) set_or_insert(arg1[1].getInt(), arg1[0], true); } 40 PARAMGETDEF(toString); 41 PARAMPROCDEF(p_sort); 42 PARAMPROCDEF(p_clone); 43 43 #undef STATRICKCLASS 44 static void p_new(void*,ExtValue*args,ExtValue*ret) 45 {ret->setObject(ExtObject(&par,new VectorObject));} 46 SString serialize(SerializationFormat format) const; 47 ExtObject makeObject() {return ExtObject(&par,this);} 44 static void p_new(void*, ExtValue*args, ExtValue*ret) 45 { 46 ret->setObject(ExtObject(&par, new VectorObject)); 47 } 48 SString serialize(SerializationFormat format) const; 49 ExtObject makeObject() { return ExtObject(&par, this); } 48 50 49 static VectorObject* fromObject(const ExtObject& o, bool warn=true);51 static VectorObject* fromObject(const ExtObject& o, bool warn = true); 50 52 }; 51 53 52 54 /** object collection, indexed by name */ 53 class DictionaryObject : public DestrBase55 class DictionaryObject : public DestrBase 54 56 { 55 56 HashTable hash;57 HashEntryIterator it;58 int it_index;57 public: 58 HashTable hash; 59 HashEntryIterator it; 60 int it_index; 59 61 60 void clear();61 HashEntryIterator* getIndexIterator(int i);62 void clear(); 63 HashEntryIterator* getIndexIterator(int i); 62 64 63 static Param par;64 DictionaryObject():it(hash),it_index(-1) {}65 ~DictionaryObject() {clear();}66 static Param& getStaticParam() {return par;}65 static Param par; 66 DictionaryObject() :it(hash), it_index(-1) {} 67 ~DictionaryObject() { clear(); } 68 static Param& getStaticParam() { return par; } 67 69 #define STATRICKCLASS DictionaryObject 68 PARAMPROCDEF(p_clear) {clear();}69 PARAMGETDEF(size) {arg1->setInt(hash.getSize());}70 PARAMPROCDEF(p_remove);71 PARAMPROCDEF(p_get);72 PARAMPROCDEF(p_getKey);73 PARAMPROCDEF(p_set);74 PARAMPROCDEF(p_find);75 PARAMGETDEF(toString);76 PARAMPROCDEF(p_clone);77 PARAMPROCDEF(p_assign);70 PARAMPROCDEF(p_clear) { clear(); } 71 PARAMGETDEF(size) { arg1->setInt(hash.getSize()); } 72 PARAMPROCDEF(p_remove); 73 PARAMPROCDEF(p_get); 74 PARAMPROCDEF(p_getKey); 75 PARAMPROCDEF(p_set); 76 PARAMPROCDEF(p_find); 77 PARAMGETDEF(toString); 78 PARAMPROCDEF(p_clone); 79 PARAMPROCDEF(p_assign); 78 80 #undef STATRICKCLASS 79 ExtValue get(SString key); 80 ExtValue get(int index); 81 ExtValue set(SString key,ExtValue new_value); 82 void copyFrom(DictionaryObject *other); 83 SString serialize(SerializationFormat format) const; 84 static void p_new(void*,ExtValue*args,ExtValue*ret) 85 {ret->setObject(ExtObject(&par,new DictionaryObject));} 86 static DictionaryObject* fromObject(const ExtObject& v, bool warn=true); 87 ExtObject makeObject() {return ExtObject(&par,this);} 81 ExtValue get(SString key); 82 ExtValue get(int index); 83 ExtValue set(SString key, ExtValue new_value); 84 void copyFrom(DictionaryObject *other); 85 SString serialize(SerializationFormat format) const; 86 static void p_new(void*, ExtValue*args, ExtValue*ret) 87 { 88 ret->setObject(ExtObject(&par, new DictionaryObject)); 89 } 90 static DictionaryObject* fromObject(const ExtObject& v, bool warn = true); 91 ExtObject makeObject() { return ExtObject(&par, this); } 88 92 }; 89 93 90 class VectorIterator : public DestrBase94 class VectorIterator : public DestrBase 91 95 { 92 93 VectorObject *vec;94 int pos;95 VectorIterator(VectorObject* v);96 ~VectorIterator();96 public: 97 VectorObject *vec; 98 int pos; 99 VectorIterator(VectorObject* v); 100 ~VectorIterator(); 97 101 #define STATRICKCLASS VectorIterator 98 PARAMGETDEF(next);99 PARAMGETDEF(value);102 PARAMGETDEF(next); 103 PARAMGETDEF(value); 100 104 #undef STATRICKCLASS 101 static ExtObject makeFrom(VectorObject *v);105 static ExtObject makeFrom(VectorObject *v); 102 106 }; 103 107
Note: See TracChangeset
for help on using the changeset viewer.