ecere/com: Fixes to avoid printing Instance members, print Instance address directly
authorJerome St-Louis <jerome@ecere.com>
Sun, 5 May 2013 20:40:46 +0000 (16:40 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sun, 5 May 2013 20:40:46 +0000 (16:40 -0400)
compiler/bootstrap/ecere/bootstrap/dataTypes.c
compiler/bootstrap/ecere/bootstrap/instance.c
ecere/src/com/dataTypes.ec
ecere/src/com/instance.ec

index 1a1be55..a01c35b 100644 (file)
@@ -943,6 +943,8 @@ char memberString[1024];
 struct __ecereNameSpace__ecere__com__Class * memberType = member->dataTypeClass;
 char * name = member->name;
 
+if(member->id < 0)
+continue;
 memberString[0] = (char)0;
 if(!memberType)
 memberType = member->dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(module, member->dataTypeString);
index 009d0bd..86bc746 100644 (file)
@@ -4046,7 +4046,7 @@ struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace_
 
 if(!dataMember)
 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
-if(dataMember && dataMember->memberAccess != 2)
+if(dataMember && dataMember->memberAccess != 2 && dataMember->id >= 0)
 {
 *curMember = dataMember;
 break;
index 94b8d64..9bf0b47 100644 (file)
@@ -449,7 +449,14 @@ static char * OnGetString(Class _class, void * data, char * tempString, void * f
 {
    // WHY DOES _class.module NOT SEEM TO WORK?
    Module module = _class.templateClass ? _class.templateClass.module : _class.module;
-   if(_class.type == enumClass)
+   if(_class.type == normalClass && _class.base && !_class.base.base)
+   {
+      if(sizeof(uintsize) == 8)
+         return UInt64Hex_OnGetString(_class, (void *)&data, tempString, fieldData, needClass);
+      else
+         return UIntegerHex_OnGetString(_class, (void *)&data, tempString, fieldData, needClass);
+   }
+   else if(_class.type == enumClass)
    {
       return Enum_OnGetString(_class, data, tempString, fieldData, needClass);
    }
@@ -529,6 +536,7 @@ static char * OnGetString(Class _class, void * data, char * tempString, void * f
             char memberString[1024];
             Class memberType = member.dataTypeClass;
             char * name = member.name;
+            if(member.id < 0) continue;
                   
             memberString[0] = 0;
 
index fc595a9..eacad58 100644 (file)
@@ -4903,7 +4903,7 @@ public dllexport void eClass_FindNextMember(Class _class, Class * curClass, Data
             {
                DataMember dataMember = eClass_FindDataMember(_class, curMember->name, null, null, null);
                if(!dataMember) dataMember = (DataMember)eClass_FindProperty(_class, curMember->name, null);
-               if(dataMember && dataMember.memberAccess != privateAccess)
+               if(dataMember && dataMember.memberAccess != privateAccess && dataMember.id >= 0) // Skip _vTbl, _refCount and _class in Instance
                {
                   *curMember = dataMember;
                   break;