compiler/libec: Fixed PrintLn of void *
authorJerome St-Louis <jerome@ecere.com>
Sun, 28 Apr 2013 21:03:08 +0000 (17:03 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sun, 28 Apr 2013 21:03:08 +0000 (17:03 -0400)
- Using uintptr class for pointers; Displaying as hexadecimal

compiler/libec/src/pass2.ec
ecere/src/com/dataTypes.ec

index 928d8a9..affbaec 100644 (file)
@@ -1930,6 +1930,12 @@ static void ProcessExpression(Expression exp)
                      {
                         _class = FindClass("char *").registered;
                      }
+                     else if(type.kind == pointerType)
+                     {
+                        _class = eSystem_FindClass(privateModule, "uintptr");
+                        FreeType(e.expType);
+                        e.expType = ProcessTypeString("uintptr", false);
+                     }
                      else
                      {
                         char string[1024] = "";
index b03956b..fa19e59 100644 (file)
@@ -1331,6 +1331,12 @@ static char * UInteger_OnGetString(Class _class, unsigned int * data, char * str
    return string;
 }
 
+static char * UIntegerHex_OnGetString(Class _class, unsigned int * data, char * string, void * fieldData, bool * needClass)
+{
+   sprintf(string, "%x", *data);
+   return string;
+}
+
 static bool UInteger_OnGetDataFromString(Class _class, unsigned int * data, char * string)
 {
    char * end;
@@ -1424,6 +1430,12 @@ static char * UInt64_OnGetString(Class _class, uint64 * data, char * string, voi
    return string;
 }
 
+static char * UInt64Hex_OnGetString(Class _class, uint64 * data, char * string, void * fieldData, bool * needClass)
+{
+   sprintf(string, FORMAT64HEX, *data);
+   return string;
+}
+
 static bool Int64_OnGetDataFromString(Class _class, uint64 * data, char * string)
 {
    char * end;
@@ -1681,7 +1693,7 @@ static void RegisterClass_Integer(Module module)
    integerClass.typeSize = sizeof(uintsize);
    if(sizeof(uintsize) == 8)
    {
-      eClass_AddMethod(integerClass, "OnGetString", null, UInt64_OnGetString, publicAccess);
+      eClass_AddMethod(integerClass, "OnGetString", null, UInt64Hex_OnGetString, publicAccess);
       eClass_AddMethod(integerClass, "OnGetDataFromString", null, UInt64_OnGetDataFromString, publicAccess);
       eClass_AddMethod(integerClass, "OnSerialize", null, Int64_OnSerialize, publicAccess);
       eClass_AddMethod(integerClass, "OnUnserialize", null, Int64_OnUnserialize, publicAccess);
@@ -1689,11 +1701,11 @@ static void RegisterClass_Integer(Module module)
    }
    else
    {
-      eClass_AddMethod(integerClass, "OnCompare", null, UInteger_OnCompare, publicAccess);
-      eClass_AddMethod(integerClass, "OnGetString", null, UInteger_OnGetString, publicAccess);
+      eClass_AddMethod(integerClass, "OnGetString", null, UIntegerHex_OnGetString, publicAccess);
       eClass_AddMethod(integerClass, "OnGetDataFromString", null, UInteger_OnGetDataFromString, publicAccess);
       eClass_AddMethod(integerClass, "OnSerialize", null, Int_OnSerialize, publicAccess);
       eClass_AddMethod(integerClass, "OnUnserialize", null, Int_OnUnserialize, publicAccess);
+      eClass_AddMethod(integerClass, "OnCompare", null, UInteger_OnCompare, publicAccess);
    }
 
    integerClass = eSystem_RegisterClass(normalClass, "uintptr", null, 0, 0, null, null, module, baseSystemAccess, publicAccess);
@@ -1704,7 +1716,7 @@ static void RegisterClass_Integer(Module module)
    integerClass.typeSize = sizeof(uintptr);
    if(sizeof(uintptr) == 8)
    {
-      eClass_AddMethod(integerClass, "OnGetString", null, UInt64_OnGetString, publicAccess);
+      eClass_AddMethod(integerClass, "OnGetString", null, UInt64Hex_OnGetString, publicAccess);
       eClass_AddMethod(integerClass, "OnGetDataFromString", null, UInt64_OnGetDataFromString, publicAccess);
       eClass_AddMethod(integerClass, "OnSerialize", null, Int64_OnSerialize, publicAccess);
       eClass_AddMethod(integerClass, "OnUnserialize", null, Int64_OnUnserialize, publicAccess);
@@ -1713,7 +1725,7 @@ static void RegisterClass_Integer(Module module)
    else
    {
       eClass_AddMethod(integerClass, "OnCompare", null, UInteger_OnCompare, publicAccess);
-      eClass_AddMethod(integerClass, "OnGetString", null, UInteger_OnGetString, publicAccess);
+      eClass_AddMethod(integerClass, "OnGetString", null, UIntegerHex_OnGetString, publicAccess);
       eClass_AddMethod(integerClass, "OnGetDataFromString", null, UInteger_OnGetDataFromString, publicAccess);
       eClass_AddMethod(integerClass, "OnSerialize", null, Int_OnSerialize, publicAccess);
       eClass_AddMethod(integerClass, "OnUnserialize", null, Int_OnUnserialize, publicAccess);