X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ecere%2Fsrc%2Fsys%2FJSON.ec;h=79cac0fd640a6c855ab704cfd23e9c8f70808f3b;hb=901c4e81fc96e7f32da9c159bd81af93a8ec67fb;hp=d1a0d6d7932ed72c4955b8915f44d95672f328e5;hpb=7ad6f4d819a0c5c5338afe0fa163ccabe0d06fe7;p=sdk diff --git a/ecere/src/sys/JSON.ec b/ecere/src/sys/JSON.ec index d1a0d6d..79cac0f 100644 --- a/ecere/src/sys/JSON.ec +++ b/ecere/src/sys/JSON.ec @@ -31,11 +31,16 @@ public enum SetBool : uint }; +public class eCONParser : JSONParser +{ + eCON = true; +} + public class JSONParser { public: File f; - char pch; +private: char ch; bool eCON; @@ -212,10 +217,10 @@ public: if(type.type != structClass) value.p = 0; } - else if(isSubclass(string, type)) + else if(isSubclass(type, string)) { void * object = value.p; - Class subtype = eSystem_SuperFindClass(string, type.module); + Class subtype = superFindClass(string, type.module); SkipEmpty(); result = GetObject(subtype, &object); if(result) @@ -710,10 +715,10 @@ public: offset = member._class.offset + member.offset; } else if(prop) - type = eSystem_SuperFindClass(prop.dataTypeString, objectType.module); + type = superFindClass(prop.dataTypeString, objectType.module); else if(member) { - type = eSystem_SuperFindClass(member.dataTypeString, objectType.module); + type = superFindClass(member.dataTypeString, objectType.module); offset = member._class.offset + member.offset; } } @@ -746,14 +751,14 @@ public: member = eClass_FindDataMember(objectType, string, objectType.module, null, null); if(member) { - type = eSystem_SuperFindClass(member.dataTypeString, objectType.module); + type = superFindClass(member.dataTypeString, objectType.module); offset = member._class.offset + member.offset; } else if(!member) { prop = eClass_FindProperty(objectType, string, objectType.module); if(prop) - type = eSystem_SuperFindClass(prop.dataTypeString, objectType.module); + type = superFindClass(prop.dataTypeString, objectType.module); else PrintLn("Warning: member ", string, " not found in class ", (String)objectType.name); } @@ -1424,7 +1429,7 @@ static bool WriteValue(File f, Class type, DataValue value, int indent, bool eCO else if(type.type == bitClass) { Class dataType; - dataType = eSystem_SuperFindClass(type.dataTypeString, type.module); + dataType = superFindClass(type.dataTypeString, type.module); WriteNumber(f, dataType, value, indent, eCON); } else if(type.type == systemClass || type.type == unitClass) @@ -1536,7 +1541,7 @@ static bool WriteONObject(File f, Class objectType, void * object, int indent, b type = mapDataClass; } else - type = eSystem_SuperFindClass(prop.dataTypeString, _class.module); + type = superFindClass(prop.dataTypeString, _class.module); if(!type) PrintLn("warning: Unresolved data type ", (String)prop.dataTypeString); @@ -1615,7 +1620,7 @@ static bool WriteONObject(File f, Class objectType, void * object, int indent, b DataMember member = (DataMember)prop; DataValue value { }; uint offset; - Class type = eSystem_SuperFindClass(member.dataTypeString, _class.module); + Class type = superFindClass(member.dataTypeString, _class.module); offset = member._class.offset + member.offset; if(type) @@ -1700,7 +1705,7 @@ static bool WriteONObject(File f, Class objectType, void * object, int indent, b return true; } -static Class eSystem_SuperFindClass(const String name, Module alternativeModule) +static Class superFindClass(const String name, Module alternativeModule) { Class _class = eSystem_FindClass(__thisModule, name); if(!_class && alternativeModule) @@ -1710,9 +1715,9 @@ static Class eSystem_SuperFindClass(const String name, Module alternativeModule) return _class; } -static bool isSubclass(const String name, Class type) +static bool isSubclass(Class type, const String name) { - Class _class = eSystem_SuperFindClass(name, type.module); + Class _class = superFindClass(name, type.module); if(eClass_IsDerived(_class, type)) return true; return false;