if(array)
array.Free();
delete array;
- if(result != success)
- result = typeMismatch;
}
}
else if(ch == '-' || isdigit(ch))
bool isKey = false;
bool isTemplateArg = false;
uint offset = 0;
- if(eCON)
+
+ ch = 0;
+ SkipEmpty();
+
+ if(eCON && (ch != '=' && ch != ':'))
{
- SkipEmpty();
- prop = null; member = null;
- if(ch == '=' || ch == ':')
- {
- if(wasQuoted)
- string[0] = (char)tolower(string[0]);
- while(1)
- {
- eClass_FindNextMember(objectType, &curClass, &curMember, subMemberStack, &subMemberStackPos);
- if(!curMember) break;
- if(!strcmp(curMember.name, string))
- break;
- }
- }
- else
- eClass_FindNextMember(objectType, &curClass, &curMember, subMemberStack, &subMemberStackPos);
+ eClass_FindNextMember(objectType, &curClass, &curMember, subMemberStack, &subMemberStackPos);
if(curMember)
{
prop = curMember.isProperty ? (Property)curMember : null;
PrintLn("Warning: default member assignment: no more members");
}
}
- if(objectType && !eCON)
+ else if(objectType)
{
- string[0] = (char)tolower(string[0]);
+ if(!eCON || wasQuoted)
+ string[0] = (char)tolower(string[0]);
if(mapKeyClass && !strcmp(string, "key"))
{
prop = eClass_FindProperty(objectType, "key", objectType.module);
}
else
{
- member = eClass_FindDataMember(objectType, string, objectType.module, null, null);
+ member = eClass_FindDataMember(objectType, string, objectType.module, subMemberStack, &subMemberStackPos);
if(member)
{
type = superFindClass(member.dataTypeString, objectType.module);
offset = member._class.offset + member.offset;
+ curMember = member;
+ curClass = member._class;
}
else if(!member)
{
prop = eClass_FindProperty(objectType, string, objectType.module);
if(prop)
+ {
type = superFindClass(prop.dataTypeString, objectType.module);
+ curMember = (DataMember)prop;
+ curClass = prop._class;
+ }
else
PrintLn("Warning: member ", string, " not found in class ", (String)objectType.name);
}
value.p = new0 byte[type.structSize];
}
}
- if(!eCON)
- {
- ch = 0;
- SkipEmpty();
- }
if(eCON && ch != '=' && ch != ':')
{
f.Seek(seek-1, start);
((const char *(*)(void *, void *, char *, void *, bool *))(void *)type._vTbl[__ecereVMethodID_class_OnGetString])(type, &value.i64, buffer, null, &needClass);
else if(!strcmp(type.dataTypeString, "unsigned int64") || !strcmp(type.dataTypeString, "uint64") || type.typeSize == sizeof(int64))
{
- if(useHex)
+ if(useHex && eCON)
sprintf(buffer, __runtimePlatform == win32 ? "0x%016I64X" : "0x%016llX", value.ui64);
else
((const char *(*)(void *, void *, char *, void *, bool *))(void *)type._vTbl[__ecereVMethodID_class_OnGetString])(type, &value.ui64, buffer, null, &needClass);
((const char *(*)(void *, void *, char *, void *, bool *))(void *)type._vTbl[__ecereVMethodID_class_OnGetString])(type, &value.i, buffer, null, &needClass);
else if(!strcmp(type.dataTypeString, "unsigned int") || !strcmp(type.dataTypeString, "uint") || type.typeSize == sizeof(int))
{
- if(useHex)
+ if(useHex && eCON)
sprintf(buffer, "0x%08X", value.ui);
else
((const char *(*)(void *, void *, char *, void *, bool *))(void *)type._vTbl[__ecereVMethodID_class_OnGetString])(type, &value.ui, buffer, null, &needClass);
f.Puts("\\t");
b = 0;
}
+ else if(c >= 4 && ch == '>' && string[c-2] == 'r' && string[c-3] == 'b' && string[c-4] == '<')
+ {
+ // Add an automatic newline for <br> as this is how we imported documentor data...
+ int i;
+ buffer[b] = 0;
+ f.Puts(buffer);
+ f.Puts(">\"\n");
+ for(i = 0; i<indent; i++) f.Puts(" ");
+ f.Puts(" \"");
+ b = 0;
+ }
else if(ch == '\n')
{
int i;