Browse Source

* updated for new objectdef with interfaces

peter 24 years ago
parent
commit
203d7f2c40
1 changed files with 57 additions and 10 deletions
  1. 57 10
      utils/ppudump.pp

+ 57 - 10
utils/ppudump.pp

@@ -281,7 +281,7 @@ begin
         end;
       else
         begin
-          writeln('!! unsupported dereftyp: ',ord(derefindex));
+          writeln('!! unsupported dereftyp: ',ord(b));
           break;
         end;
     end;
@@ -807,15 +807,24 @@ end;
 procedure readdefinitions(start_read : boolean);
 type
   tsettype  = (normset,smallset,varset);
-  tbasetype = (uauto,uvoid,uchar,
-               u8bit,u16bit,u32bit,
-               s8bit,s16bit,s32bit,
-               bool8bit,bool16bit,bool32bit,
-               u64bit,s64bit);
+  tbasetype = (
+    uauto,uvoid,uchar,
+    u8bit,u16bit,u32bit,
+    s8bit,s16bit,s32bit,
+    bool8bit,bool16bit,bool32bit,
+    u64bit,s64bit,uwidechar
+  );
+  tobjectdeftype = (odt_none,
+    odt_class,
+    odt_object,
+    odt_interfacecom,
+    odt_interfacecorba,
+    odt_cppclass
+  );
 var
   b : byte;
   oldread_member : boolean;
-  totaldefs,
+  totaldefs,l,j,
   defcnt : longint;
 begin
   defcnt:=0;
@@ -843,9 +852,9 @@ begin
          ibpointerdef :
            begin
              readcommondef('Pointer definition');
-             write  (space,'    Pointed Type : ');
+             write  (space,'     Pointed Type : ');
              readtype;
-             writeln(space,'          Is Far : ',(getbyte<>0));
+             writeln(space,'           Is Far : ',(getbyte<>0));
            end;
 
          iborddef :
@@ -868,6 +877,7 @@ begin
                bool32bit : writeln('bool32bit');
                u64bit    : writeln('u64bit');
                s64bit    : writeln('s64bit');
+               uwidechar : writeln('uwidechar');
                else        writeln('!! Warning: Invalid base type ',b);
              end;
              writeln(space,'            Range : ',getlongint,' to ',getlongint);
@@ -960,12 +970,46 @@ begin
          ibobjectdef :
            begin
              readcommondef('Object/Class definition');
+             b:=getbyte;
+             write  (space,'             Type : ');
+             case tobjectdeftype(b) of
+               odt_class          : writeln('class');
+               odt_object         : writeln('object');
+               odt_interfacecom   : writeln('interfacecom');
+               odt_interfacecorba : writeln('interfacecorba');
+               odt_cppclass       : writeln('cppclass');
+               else                 writeln('!! Warning: Invalid object type ',b);
+             end;
              writeln(space,'             Size : ',getlongint);
              writeln(space,'       Vmt offset : ',getlongint);
              writeln(space,'    Name of Class : ',getstring);
              write(space,  '   Ancestor Class : ');
              readdefref;
              writeln(space,'          Options : ',getlongint);
+             writeln(space,'         Has RTTI : ',(getbyte<>0));
+
+             if tobjectdeftype(b) in [odt_interfacecom,odt_interfacecorba] then
+               begin
+                  writeln(space,'       GUID Valid : ',(getbyte<>0));
+                  { IIDGUID }
+                  for j:=1to 16 do
+                   getbyte;
+                  writeln(space,'       IID String : ',getstring);
+                  writeln(space,'  Last VTable idx : ',getlongint);
+               end;
+
+             if tobjectdeftype(b) in [odt_class,odt_interfacecorba] then
+              begin
+                l:=getlongint;
+                writeln(space,'  Impl Intf Count : ',l);
+                for j:=1 to l do
+                 begin
+                   write  (space,'  - Definition : ');
+                   readdefref;
+                   writeln(space,'       IOffset : ',getlongint);
+                 end;
+              end;
+
            {read the record definitions and symbols}
              space:='    '+space;
              oldread_member:=read_member;
@@ -1464,7 +1508,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.3  2000-09-09 19:46:40  peter
+  Revision 1.4  2001-04-04 22:42:59  peter
+    * updated for new objectdef with interfaces
+
+  Revision 1.3  2000/09/09 19:46:40  peter
     * show dataalignment
 
   Revision 1.2  2000/08/13 12:58:06  peter