Browse Source

* symbol nubering begins with 1 in number_symbols
* program tmodule has globalsymtable for its staticsymtable
(to get it displayed in IDE globals list)
+ list of symbol (browcol) greatly improved for IDE

pierre 26 years ago
parent
commit
dae387cd49
2 changed files with 50 additions and 7 deletions
  1. 38 6
      compiler/browcol.pas
  2. 12 1
      compiler/pmodules.pas

+ 38 - 6
compiler/browcol.pas

@@ -113,7 +113,7 @@ implementation
 
 uses
   Drivers,Views,App,
-  globals,files,comphook;
+  globtype,globals,files,comphook;
 
 {****************************************************************************
                                    Helpers
@@ -377,7 +377,7 @@ begin
   if assigned(Name) then
     DisposeStr(Name);
   if assigned(Params) then
-    FreeMem(Params,ParamCount*2);
+    FreeMem(Params,ParamCount*4);
 end;
 
 
@@ -435,7 +435,7 @@ procedure CreateBrowserCol;
      begin
        Def:=Table^.GetDefNr(I);
      end;}
-    for I:=1 to symcount-1 do
+    for I:=1 to symcount do
       begin
         Sym:=Table^.GetsymNr(I);
         if Sym=nil then Continue;
@@ -460,6 +460,8 @@ procedure CreateBrowserCol;
                       Inc(ParamCount);
                       Params[ParamCount-1]:=TypeNames^.Add(ParSym^.Name);
                     end;
+                  Symbol^.SetParams(ParamCount,PPointerArray(@Params));
+                  ProcessSymTable(Symbol^.Items,definition^.parast);
                 end;
               if assigned(definition^.localst) and
                  (definition^.localst^.symtabletype<>staticsymtable) then
@@ -488,17 +490,41 @@ procedure CreateBrowserCol;
 var
   T: PSymTable;
   UnitS: PSymbol;
+  hp : pmodule;
 begin
   DisposeBrowserCol;
   NewBrowserCol;
-  T:=SymTableStack;
+{  T:=SymTableStack;
   while assigned(T) do
    begin
      New(UnitS, Init(T^.Name^,unitsym, 0, nil));
      Modules^.Insert(UnitS);
      ProcessSymTable(UnitS^.Items,T);
      T:=T^.Next;
-   end;
+   end;}
+  hp:=pmodule(loaded_units.first);
+  while assigned(hp) do
+    begin
+       t:=psymtable(hp^.globalsymtable);
+       if assigned(t) then
+         begin
+           New(UnitS, Init(T^.Name^,unitsym, 0, nil));
+           Modules^.Insert(UnitS);
+           ProcessSymTable(UnitS^.Items,T);
+           if cs_local_browser in aktmoduleswitches then
+             begin
+                t:=psymtable(hp^.localsymtable);
+                if assigned(t) then
+                  begin
+                    {New(UnitS, Init(T^.Name^,unitsym, 0, nil));
+                    Modules^.Insert(UnitS);}
+                    ProcessSymTable(UnitS^.Items,T);
+                  end;
+             end;
+         end;
+       hp:=pmodule(hp^.next);
+    end;
+   
 end;
 
 
@@ -535,7 +561,13 @@ begin
 end.
 {
   $Log$
-  Revision 1.4  1999-02-02 16:38:38  peter
+  Revision 1.5  1999-02-03 09:44:32  pierre
+    * symbol nubering begins with 1 in number_symbols
+    * program tmodule has globalsymtable for its staticsymtable
+      (to get it displayed in IDE globals list)
+    + list of symbol (browcol) greatly improved for IDE
+
+  Revision 1.4  1999/02/02 16:38:38  peter
     * no endless loop with localst=staticsymtable
 
   Revision 1.3  1999/01/22 10:19:43  peter

+ 12 - 1
compiler/pmodules.pas

@@ -1174,6 +1174,11 @@ unit pmodules;
          { avoid self recursive destructor call !! PM }
          aktprocsym^.definition^.localst:=nil;
 
+         { consider these symbols as global ones }
+         { for browser }
+         current_module^.globalsymtable:=current_module^.localsymtable;
+         current_module^.localsymtable:=nil;
+         
          codegen_doneprocedure;
 
          { consume the last point }
@@ -1229,7 +1234,13 @@ unit pmodules;
 end.
 {
   $Log$
-  Revision 1.94  1999-01-12 14:25:31  peter
+  Revision 1.95  1999-02-03 09:44:36  pierre
+    * symbol nubering begins with 1 in number_symbols
+    * program tmodule has globalsymtable for its staticsymtable
+      (to get it displayed in IDE globals list)
+    + list of symbol (browcol) greatly improved for IDE
+
+  Revision 1.94  1999/01/12 14:25:31  peter
     + BrowserLog for browser.log generation
     + BrowserCol for browser info in TCollections
     * released all other UseBrowser