瀏覽代碼

Add missing management operator options to ppudump

git-svn-id: trunk@35934 -
pierre 8 年之前
父節點
當前提交
d6bf9e03ec
共有 1 個文件被更改,包括 51 次插入0 次删除
  1. 51 0
      compiler/utils/ppuutils/ppudump.pp

+ 51 - 0
compiler/utils/ppuutils/ppudump.pp

@@ -2300,6 +2300,56 @@ begin
 end;
 
 
+
+function readmanagementoperatoroptions(const space : string):tmanagementoperators;
+{ type is in unit symconst }
+{ Management operator options
+  tmanagementoperator=(
+    mop_none,
+    mop_initialize,
+    mop_finalize,
+    mop_addref,
+    mop_copy);
+}
+type
+  tmopopt=record
+    mask : tmanagementoperator;
+    str  : string[10];
+  end;
+const
+  managementoperatoropt : array[1..ord(high(tmanagementoperator))] of tmopopt=(
+    (mask:mop_initialize;str:'initialize'),
+    (mask:mop_finalize;str:'finalize'),
+    (mask:mop_addref;str:'addref'),
+    (mask:mop_copy;str:'copy')
+  );
+var
+  i      : longint;
+  first  : boolean;
+begin
+  ppufile.getsmallset(result);
+  if result<>[] then
+   begin
+     first:=true;
+     for i:=1 to high(managementoperatoropt) do
+      if (managementoperatoropt[i].mask in result) then
+       begin
+         if first then
+           begin
+             write(space);
+             write('Management operator options: ');
+             first:=false;
+           end
+         else
+           write(', ');
+         write(managementoperatoropt[i].str);
+       end;
+   end;
+  if not first then
+    writeln;
+end;
+
+
 procedure readnodetree;
 var
   l : longint;
@@ -3279,6 +3329,7 @@ begin
                  objdef.Size:=getasizeint;
                  writeln([space,'         DataSize : ',objdef.Size]);
                  writeln([space,'      PaddingSize : ',getword]);
+                 readmanagementoperatoroptions(space);
                end;
              if not EndOfEntry then
                HasMoreInfos;