switch(_class->typeSize)
{
case 1:
-i64Data = !strcmp(_class->dataTypeString, "byte") ? *(unsigned char *)data : *(char *)data;
+i64Data = !strcmp(_class->dataTypeString, "byte") ? (long long)*(unsigned char *)data : (long long)*(char *)data;
break;
case 2:
-i64Data = !strcmp(_class->dataTypeString, "uint16") ? *(unsigned short *)data : *(short *)data;
+i64Data = !strcmp(_class->dataTypeString, "uint16") ? (long long)*(unsigned short *)data : (long long)*(short *)data;
break;
case 4:
-i64Data = !strcmp(_class->dataTypeString, "uint") ? *(unsigned int *)data : *(int *)data;
+i64Data = !strcmp(_class->dataTypeString, "uint") ? (long long)*(unsigned int *)data : (long long)*(int *)data;
break;
case 8:
i64Data = !strcmp(_class->dataTypeString, "uint64") ? *(long long *)data : *(long long *)data;
}
if(item)
{
+if(tempString)
+{
strcpy(tempString, item->name);
if(!needClass || !*needClass)
tempString[0] = (char)toupper(tempString[0]);
return tempString;
}
else
+return item->name;
+}
+else
return (((void *)0));
}
{
if(_class->type == 3 || _class->type == 2 || _class->type == 4)
{
-struct __ecereNameSpace__ecere__com__Class * dataType = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->dataTypeString);
-
-if(dataType)
-((void (*)(void *, void *, void *))(void *)dataType->_vTbl[__ecereVMethodID_class_OnCopy])(dataType, data, newData);
+if(newData)
+memcpy(data, newData, _class->typeSize);
+else
+memset(data, 0, _class->typeSize);
}
else if(_class->type != 1 && (_class->type != 1000 || _class->byValueSystemClass))
{
char memberString[1024];
struct __ecereNameSpace__ecere__com__Class * memberType = member->dataTypeClass;
const char * name = member->name;
+const char * (* onGetString)(void *, void *, char *, void *, unsigned int *);
if(member->id < 0)
continue;
memberType = member->dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(module, member->dataTypeString);
if(!memberType)
memberType = member->dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "int");
+onGetString = memberType->_vTbl[__ecereVMethodID_class_OnGetString];
if(member->isProperty)
{
struct __ecereNameSpace__ecere__com__Property * prop = (struct __ecereNameSpace__ecere__com__Property *)member;
if(value.__anon1.f)
{
unsigned int needClass = 1;
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, &value, memberString, (((void *)0)), &needClass);
+const char * result = onGetString(memberType, &value, memberString, (((void *)0)), &needClass);
if(result && result != memberString)
strcpy(memberString, result);
if(value.__anon1.p || prop->IsSet)
{
unsigned int needClass = 1;
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, (memberType->type == 0) ? value.__anon1.p : &value, memberString, (((void *)0)), &needClass);
+const char * result = onGetString(memberType, (memberType->type == 0) ? value.__anon1.p : &value, memberString, (((void *)0)), &needClass);
if(result && result != memberString)
strcpy(memberString, result);
if(value.__anon1.i || prop->IsSet)
{
unsigned int needClass = 1;
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, &value, memberString, (((void *)0)), &needClass);
+const char * result = onGetString(memberType, &value, memberString, (((void *)0)), &needClass);
if(result && result != memberString)
strcpy(memberString, result);
}
else
{
+unsigned int offset = member->offset + member->_class->offset;
+unsigned char * memberData = (unsigned char *)data + offset;
+
if(member->type == 0)
{
if(memberType->type == 1 || memberType->type == 0)
{
char internalMemberString[1024];
-unsigned char * memberData = ((unsigned char *)data + (((member->_class->type == 0) ? member->_class->offset : 0) + member->offset));
int c;
unsigned int typeSize = (memberType->type == 0) ? memberType->typeSize : memberType->structSize;
const char * result;
if(memberType->type == 0)
-result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, *(struct __ecereNameSpace__ecere__com__Instance **)memberData, internalMemberString, (((void *)0)), &needClass);
+result = onGetString(memberType, *(struct __ecereNameSpace__ecere__com__Instance **)memberData, internalMemberString, (((void *)0)), &needClass);
else
-result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, memberData, internalMemberString, (((void *)0)), &needClass);
+result = onGetString(memberType, memberData, internalMemberString, (((void *)0)), &needClass);
if(needClass && strcmp(memberType->dataTypeString, "char *"))
{
strcat(memberString, "{ ");
{
unsigned int needClass = 1;
char internalMemberString[1024];
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, &value, internalMemberString, (((void *)0)), &needClass);
+const char * result = onGetString(memberType, &value, internalMemberString, (((void *)0)), &needClass);
if(needClass && memberType->type != 1000 && memberType->type != 4 && memberType->type != 3)
{
}
else if(!memberType->noExpansion)
{
-if(memberType->typeSize <= 4)
-{
-value.__anon1.i = *(int *)((unsigned char *)data + (((member->_class->type == 0) ? member->_class->offset : 0) + member->offset));
-if(value.__anon1.i)
-{
-unsigned int needClass = 1;
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, &value, memberString, (((void *)0)), &needClass);
-
-if(result && memberString != result)
-strcpy(memberString, result);
-}
-}
-else
+if(memberType->typeSize > 4 || *(int *)memberData)
{
unsigned int needClass = 1;
-const char * result = ((const char * (*)(void *, void *, char *, void *, unsigned int *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetString])(memberType, ((unsigned char *)data + (((member->_class->type == 0) ? member->_class->offset : 0) + member->offset)), memberString, (((void *)0)), &needClass);
+const char * result = onGetString(memberType, memberData, memberString, (((void *)0)), &needClass);
if(result && memberString != result)
strcpy(memberString, result);
if(found)
{
struct __ecereNameSpace__ecere__com__Class * memberType = thisMember->dataTypeClass;
+unsigned int offset;
+unsigned char * memberData;
if(!memberType)
memberType = thisMember->dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(module, thisMember->dataTypeString);
if(!memberType)
memberType = thisMember->dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "int");
+offset = thisMember->_class->offset + memberOffset;
+memberData = (unsigned char *)data + offset;
if(memberType->type == 1)
{
if(thisMember)
{
-if(!((unsigned int (*)(void *, void *, const char *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetDataFromString])(memberType, (unsigned char *)data + (((thisMember->_class->type == 0) ? thisMember->_class->offset : 0) + memberOffset), memberString))
+if(!((unsigned int (*)(void *, void *, const char *))(void *)memberType->_vTbl[__ecereVMethodID_class_OnGetDataFromString])(memberType, memberData, memberString))
result = 0;
}
}
*(unsigned int *)data = (unsigned int)(((*(unsigned int *)data & ~bitMember->mask)) | ((value.__anon1.ui64 << bitMember->pos) & bitMember->mask));
}
else
-*(int *)((unsigned char *)data + (((thisMember->_class->type == 0) ? thisMember->_class->offset : 0) + thisMember->offset)) = value.__anon1.i;
+*(int *)memberData = value.__anon1.i;
}
else if(thisMember->isProperty && ((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)
{
if(memberType->type == 5 || memberType->type == 0 || memberType->type == 1)
((void (*)(void *, void *))(void *)((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)(data, value.__anon1.p);
else
+{
+if(!strcmp(memberType->dataTypeString, "float"))
+{
+((void (*)(void *, float))(void *)((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)(data, value.__anon1.f);
+}
+else if(!strcmp(memberType->dataTypeString, "double"))
+{
+((void (*)(void *, double))(void *)((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)(data, value.__anon1.d);
+}
+else if(!strcmp(memberType->dataTypeString, "int64"))
+{
+((void (*)(void *, long long))(void *)((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)(data, value.__anon1.i64);
+}
+else
+{
((void (*)(void *, int))(void *)((struct __ecereNameSpace__ecere__com__Property *)thisMember)->Set)(data, value.__anon1.i);
}
}
}
+}
+}
else
result = 0;
count = 0;