Changeset 1158 for cpp/frams/vm
- Timestamp:
- 10/01/21 23:40:49 (3 years ago)
- Location:
- cpp/frams/vm/classes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/vm/classes/3dobject.cpp
r951 r1158 20 20 { "new", 0, 0, "create new XYZ object", "p oXYZ(f x,f y,f z)", PROCEDURE(p_new), "3D vectors objects can be also created using the (x,y,z) notation, i.e. var v=(1,2,3) is the same as var v=XYZ.new(1,2,3);", }, 21 21 { "newFromVector", 0, 0, "create new XYZ object", "p oXYZ(oVector)", PROCEDURE(p_newFromVector), "used for deserialization" }, 22 { "clone", 0, PARAM_ NOSTATIC, "create new XYZ object copying the coordinates", "p oXYZ()", PROCEDURE(p_clone), "Note: copying object references does not create new objects. Use clone() if a new object is needed.\n\nExample:\nvar o1=(1,2,3), o2=o1, o3=o1.clone();\no1.y=9999;\n//o2 is now (1,9999,3) but o3 is still (1,2,3)", },22 { "clone", 0, PARAM_READONLY | PARAM_NOSTATIC, "create new XYZ object copying the coordinates", "p oXYZ()", PROCEDURE(p_clone), "Note: copying object references does not create new objects. Use clone() if a new object is needed.\n\nExample:\nvar o1=(1,2,3), o2=o1, o3=o1.clone();\no1.y=9999;\n//o2 is now (1,9999,3) but o3 is still (1,2,3)", }, 23 23 { "set", 0, PARAM_NOSTATIC, "set (copy) coordinates from another XYZ object", "p(oXYZ)", PROCEDURE(p_set), }, 24 24 { "set3", 0, PARAM_NOSTATIC, "set individual 3 coordinates", "p(f x,f y,f z)", PROCEDURE(p_set3), }, … … 32 32 { "rotate", 0, PARAM_NOSTATIC, "rotate using Orient object", "p(oOrient)", PROCEDURE(p_rotate), }, 33 33 { "revRotate", 0, PARAM_NOSTATIC, "reverse rotate using Orient object", "p(oOrient)", PROCEDURE(p_revrotate), }, 34 { "get", 0, PARAM_ NOSTATIC, "get one of coordinates", "p f(d index)", PROCEDURE(p_get), "this function makes the XYZ objects \"indexable\" (so you can use [] for accessing subsequent fields, like in Vector)", },34 { "get", 0, PARAM_READONLY | PARAM_NOSTATIC, "get one of coordinates", "p f(d index)", PROCEDURE(p_get), "this function makes the XYZ objects \"indexable\" (so you can use [] for accessing subsequent fields, like in Vector)", }, 35 35 { 0, 0, 0, }, 36 36 }; -
cpp/frams/vm/classes/collectionobj.cpp
r1130 r1158 31 31 { "size", 0, PARAM_READONLY | PARAM_NOSTATIC, "Element count", "d", GETONLY(size), }, 32 32 { "remove", 0, PARAM_NOSTATIC, "Remove at position", "p(d position)", PROCEDURE(p_remove), }, 33 { "get", 0, PARAM_ NOSTATIC, "Get value at position", "p x(d position)", PROCEDURE(p_get), "object[position] can be always used instead of object.get(position)" },33 { "get", 0, PARAM_READONLY | PARAM_NOSTATIC, "Get value at position", "p x(d position)", PROCEDURE(p_get), "object[position] can be always used instead of object.get(position)" }, 34 34 { "set", 0, PARAM_NOSTATIC, "Set value at position", "p(d position,x value)", PROCEDURE(p_set), "object[position]=value can be always used instead of object.set(position,value)" }, 35 35 { "insert", 0, PARAM_NOSTATIC, "Insert value at position", "p(d position,x value)", PROCEDURE(p_insert), }, 36 36 { "add", 0, PARAM_NOSTATIC, "Append at the end", "p(x value)", PROCEDURE(p_add), }, 37 { "find", 0, PARAM_ NOSTATIC, "Find", "p d(x value)", PROCEDURE(p_find), "returns the element index or -1 if not found" },37 { "find", 0, PARAM_READONLY | PARAM_NOSTATIC, "Find", "p d(x value)", PROCEDURE(p_find), "returns the element index or -1 if not found" }, 38 38 { "avg", 0, PARAM_READONLY | PARAM_NOSTATIC, "Average", "x", GETONLY(avg) }, 39 39 { "stdev", 0, PARAM_READONLY | PARAM_NOSTATIC, "Standard deviation", "x", GETONLY(stdev), "=sqrt(sum((element[i]-avg)^2)/(size-1)) which is estimated population std.dev. from sample std.dev." }, … … 42 42 { "sort", 0, PARAM_NOSTATIC, "Sort elements (in place)", "p(oFunctionReference comparator)", PROCEDURE(p_sort), "comparator can be null, giving the \"natural\" sorting order (depending on element type), otherwise it must be a function reference obtained from the 'function' operator.\n\nExample:\nfunction compareLastDigit(a,b) {return (a%10)<(b%10);}\nvar v=[16,23,35,42,54,61];\nv.sort(function compareLastDigit);" }, 43 43 { "iterator", 0, PARAM_NOSTATIC | PARAM_READONLY, "Iterator", "o", GETONLY(iterator), }, 44 { "clone", 0, PARAM_ NOSTATIC, "Create a clone", "p oVector()", PROCEDURE(p_clone), "The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));" },44 { "clone", 0, PARAM_READONLY | PARAM_NOSTATIC, "Create a clone", "p oVector()", PROCEDURE(p_clone), "The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));" }, 45 45 { 0, 0, 0, }, 46 46 }; … … 72 72 { "size", 0, PARAM_NOSTATIC | PARAM_READONLY, "Element count", "d", GETONLY(size), }, 73 73 { "remove", 0, PARAM_NOSTATIC, "Remove", "p(x key)", PROCEDURE(p_remove), "Removes the named or indexed element (depending on the argument type: string or int)." }, 74 { "get", 0, PARAM_ NOSTATIC, "Get element", "p x(x key)", PROCEDURE(p_get), "Retrieves the named or indexed element (depending on the argument type: string or int). Accessing nonexistent keys is an error (use hasKey() if necessary).\nobject.get(key) can be shortened to object[key]." },75 { "getKey", 0, PARAM_ NOSTATIC, "Get a key", "p s(d index)", PROCEDURE(p_getKey), "Returns the key of the indexed element (0 <= index < size)." },76 { "hasKey", 0, PARAM_ NOSTATIC, "Check if key exists", "p d(s key)", PROCEDURE(p_hasKey), "Returns 1 (interpreted as true) if dictionary contains the supplied key, or 0 (false) otherwise.\nExample:\n if (obj.hasKey(\"a\"))\n x = obj->a;" },74 { "get", 0, PARAM_READONLY | PARAM_NOSTATIC, "Get element", "p x(x key)", PROCEDURE(p_get), "Retrieves the named or indexed element (depending on the argument type: string or int). Accessing nonexistent keys is an error (use hasKey() if necessary).\nobject.get(key) can be shortened to object[key]." }, 75 { "getKey", 0, PARAM_READONLY | PARAM_NOSTATIC, "Get a key", "p s(d index)", PROCEDURE(p_getKey), "Returns the key of the indexed element (0 <= index < size)." }, 76 { "hasKey", 0, PARAM_READONLY | PARAM_NOSTATIC, "Check if key exists", "p d(s key)", PROCEDURE(p_hasKey), "Returns 1 (interpreted as true) if dictionary contains the supplied key, or 0 (false) otherwise.\nExample:\n if (obj.hasKey(\"a\"))\n x = obj->a;" }, 77 77 { "set", 0, PARAM_NOSTATIC, "Set element", "p x(x key,x value)", PROCEDURE(p_set), "Set element value for the specified key or index (depending on the argument type: string or int).\n" 78 78 "Returns the value previously associated with the given key (or index).\n" … … 81 81 " var old_value=object.set(\"key\",new_value); //'old_value' gets the value previously associated with \"key\"\n" 82 82 " var x=object[\"key\"]=new_value; //'x' becomes 'new_value', consistently with the semantics of the assignment operator. The value previously associated with \"key\" is lost." }, 83 { "find", 0, PARAM_ NOSTATIC, "Find", "p x(x value)", PROCEDURE(p_find), "Returns the element key or null if not found." },83 { "find", 0, PARAM_READONLY | PARAM_NOSTATIC, "Find", "p x(x value)", PROCEDURE(p_find), "Returns the element key or null if not found." }, 84 84 { "new", 0, 0, "Create a Dictionary", "p oDictionary()", STATICPROCEDURE(p_new), "Empty directory can be also created using the {} expression." }, 85 85 { "toString", 0, PARAM_READONLY | PARAM_NOSTATIC, "Textual form", "s", GETONLY(toString), }, 86 { "clone", 0, PARAM_ NOSTATIC, "Create a clone", "p oDictionary()", PROCEDURE(p_clone), "The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));" },86 { "clone", 0, PARAM_READONLY | PARAM_NOSTATIC, "Create a clone", "p oDictionary()", PROCEDURE(p_clone), "The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));" }, 87 87 { "assign", 0, PARAM_NOSTATIC, "Assign from another object", "p(x)", PROCEDURE(p_assign), "Replaces current dictionary with dictionary contents from another object." }, 88 88 { "iterator", 0, PARAM_NOSTATIC | PARAM_READONLY, "Iterator", "o", GETONLY(iterator), }, … … 99 99 100 100 VectorObject::VectorObject(Pt3D &pt) 101 : readonly(0),owndata(1)101 :owndata(1) 102 102 { 103 103 set_or_insert(0, ExtValue(pt.x), false); … … 119 119 void VectorObject::p_remove(PARAMPROCARGS) 120 120 { 121 if (readonly) return;122 121 int i = args->getInt(); 123 122 if (!listIndexCheck(&data, i, "VectorObject", "remove")) return; … … 270 269 VMachine *vm; 271 270 VMVEComparator(VMachine::JumpTargetObject *_jto) :jto(_jto), vm(jto->vm) {} 272 #ifdef QSORT_R_ USING_QSORT_S271 #ifdef QSORT_R_THIS_FIRST 273 272 static int compare(void* _this, const void *a, const void *b); 274 273 bool operator()(const ExtValue *a, const ExtValue *b) { return compare(this,&a,&b) == ExtValue::ResultLower; } … … 279 278 }; 280 279 281 #ifdef QSORT_R_ USING_QSORT_S280 #ifdef QSORT_R_THIS_FIRST 282 281 int VMVEComparator::compare(void* _this, const void *a, const void *b) 283 282 #else … … 324 323 std::sort(first, first + data.size(), cmp); //no qsort_r() or equivalent on Android (yet) 325 324 #else 326 qsort_r(first, data.size(), sizeof(ExtValue*), cmp.compare, &cmp);325 CALL_QSORT_R(first, data.size(), sizeof(ExtValue*), cmp.compare, &cmp); 327 326 #endif 328 327 } -
cpp/frams/vm/classes/collectionobj.h
r929 r1158 16 16 public: 17 17 SList data; 18 unsigned int readonly : 1,owndata : 1;18 unsigned int owndata : 1; 19 19 void clear(); 20 20 ExtValue *get(int i) { return (ExtValue*)data.get(i); } … … 24 24 static Param par; 25 25 VectorObject(Pt3D& pt); 26 VectorObject() : readonly(0),owndata(1) {}26 VectorObject() :owndata(1) {} 27 27 ~VectorObject() { clear(); } 28 28 static Param& getStaticParam() { return par; } 29 29 #define STATRICKCLASS VectorObject 30 PARAMPROCDEF(p_clear) { if (readonly) return;clear(); }30 PARAMPROCDEF(p_clear) { clear(); } 31 31 PARAMGETDEF(size) { arg1->setInt(data.size()); } 32 32 PARAMGETDEF(avg); … … 36 36 PARAMPROCDEF(p_get); 37 37 PARAMPROCDEF(p_find); 38 PARAMPROCDEF(p_set) { if (!readonly)set_or_insert(arg1[1].getInt(), arg1[0], false); }39 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); }40 PARAMPROCDEF(p_insert) { if (!readonly)set_or_insert(arg1[1].getInt(), arg1[0], true); }38 PARAMPROCDEF(p_set) { set_or_insert(arg1[1].getInt(), arg1[0], false); } 39 PARAMPROCDEF(p_add) { data += new ExtValue(arg1[0]); arg2->setInt(data.size() - 1); } 40 PARAMPROCDEF(p_insert) { set_or_insert(arg1[1].getInt(), arg1[0], true); } 41 41 PARAMGETDEF(toString); 42 42 PARAMPROCDEF(p_sort); -
cpp/frams/vm/classes/genoobj.cpp
r999 r1158 23 23 "-1 = validity is not known. This is a transient state. The value of \"is_valid\" will never be -1 when read. It is safe to treat is_valid as boolean in statements like \"if (g.is_valid) ...\". Setting \"is_valid=-1\" will make it 0 or 1 again. This third state (-1) is only needed for loading Genotype objects from files where the \"is_valid\" field might not be present." 24 24 }, 25 { "getConverted", 0, PARAM_ NOSTATIC, "Get converted genotype", "p oGeno(s format)", PROCEDURE(p_getconvert), },26 { "getConvertedWithCheckpoints", 0, PARAM_ NOSTATIC, "Get converted genotype", "p oGeno(s format)", PROCEDURE(p_getconvert_ch), "See also Model.newWithCheckpoints()" },25 { "getConverted", 0, PARAM_READONLY | PARAM_NOSTATIC, "Get converted genotype", "p oGeno(s format)", PROCEDURE(p_getconvert), }, 26 { "getConvertedWithCheckpoints", 0, PARAM_READONLY | PARAM_NOSTATIC, "Get converted genotype", "p oGeno(s format)", PROCEDURE(p_getconvert_ch), "See also Model.newWithCheckpoints()" }, 27 27 { "f0genotype", 0, PARAM_NOSTATIC | PARAM_READONLY, "f0 genotype", "s 1", GETONLY(f0genotype), "converted to f0 genotype", }, 28 28 { "new", 0, 0, "create new empty object", "p oGeno()", PROCEDURE(p_new), },
Note: See TracChangeset
for help on using the changeset viewer.