Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

sigNodeSet.c File Reference

#include "lclintMacros.nf"
#include "llbasic.h"
#include "intSet.h"

Go to the source code of this file.

Functions

sigNodeSet sigNodeSet_new ()
sigNodeSet sigNodeSet_singleton (sigNode el)
bool sigNodeSet_insert (sigNodeSet s, sigNode el)
cstring sigNodeSet_unparse (sigNodeSet s)
cstring sigNodeSet_unparseSomeSigs (sigNodeSet s)
cstring sigNodeSet_unparsePossibleAritys (sigNodeSet s)
void sigNodeSet_free (sigNodeSet s)


Function Documentation

void sigNodeSet_free ( sigNodeSet s )
 

Definition at line 209 of file sigNodeSet.c.

00210 {
00211   if (sigNodeSet_isDefined (s))
00212     {
00213       int i;
00214       for (i = 0; i < s->entries; i++)
00215         {
00216           sigNode_free (s->elements[i]); 
00217         }
00218       
00219       sfree (s->elements); 
00220       sfree (s);
00221     }
00222 }

bool sigNodeSet_insert ( sigNodeSet s,
sigNode el )
 

Definition at line 90 of file sigNodeSet.c.

00091 {
00092   llassert (sigNodeSet_isDefined (s));
00093 
00094   if (sigNodeSet_member (s, el))
00095     {
00096       sigNode_free (el);
00097       return FALSE;
00098     }
00099   else
00100     {
00101       if (s->nspace <= 0)
00102         {
00103           sigNodeSet_grow (s);
00104         }
00105 
00106       s->nspace--;
00107       s->elements[s->entries] = el;
00108       s->entries++;
00109       return TRUE;
00110     }
00111 }

sigNodeSet sigNodeSet_new ( )
 

Definition at line 39 of file sigNodeSet.c.

Referenced by symtable_enterOp().

00040 {
00041   sigNodeSet s = (sigNodeSet) dmalloc (sizeof (*s));
00042 
00043   s->entries = 0;
00044   s->nspace = sigNodeSetBASESIZE;
00045   s->elements = (sigNode *) dmalloc (sizeof (*s->elements) * sigNodeSetBASESIZE);
00046 
00047   return (s);
00048 }

sigNodeSet sigNodeSet_singleton ( sigNode el )
 

Definition at line 51 of file sigNodeSet.c.

Referenced by symtable_enterOp().

00052 {
00053   sigNodeSet s = (sigNodeSet) dmalloc (sizeof (*s));
00054 
00055   s->entries = 1;
00056   s->nspace = sigNodeSetBASESIZE - 1;
00057   s->elements = (sigNode *) dmalloc (sizeof (*s->elements) * sigNodeSetBASESIZE);
00058   s->elements[0] = el;
00059 
00060   return (s);
00061 }

cstring sigNodeSet_unparse ( sigNodeSet s )
 

Definition at line 134 of file sigNodeSet.c.

00135 {
00136   int i;
00137   cstring st = cstring_undefined;
00138 
00139   if (sigNodeSet_isDefined (s))
00140     {
00141       for (i = 0; i < s->entries; i++)
00142         {
00143           if (i == 0)
00144             {
00145               st = sigNode_unparse (s->elements[i]);
00146             }
00147           else
00148             st = message ("%q, %q", st, sigNode_unparse (s->elements[i]));
00149         }
00150     }
00151      
00152   return st;
00153 }

cstring sigNodeSet_unparsePossibleAritys ( sigNodeSet s )
 

Definition at line 188 of file sigNodeSet.c.

Referenced by computePossibleSorts().

00189 {
00190   int i;
00191   intSet is = intSet_new ();
00192   cstring st;
00193 
00194   if (sigNodeSet_isDefined (s))
00195     {
00196       for (i = 0; i < s->entries; i++)
00197         {
00198           int arity = ltokenList_size ((s->elements[i])->domain);
00199           (void) intSet_insert (is, arity);
00200         }
00201     }
00202 
00203   st = intSet_unparseText (is);
00204   intSet_free (is);
00205   return (st);
00206 }

cstring sigNodeSet_unparseSomeSigs ( sigNodeSet s )
 

Definition at line 156 of file sigNodeSet.c.

00157 {
00158   int i;
00159   cstring st = cstring_undefined;
00160 
00161   if (sigNodeSet_isDefined (s))
00162     {
00163       for (i = 0; i < s->entries; i++)
00164         {
00165           cstring t = sigNode_unparseText (s->elements[i]);
00166           
00167           if (i == 0)
00168             {
00169               st = cstring_copy (t);
00170               cstring_free (t);
00171             }
00172           else if (i > 5 && (s->entries > 8))
00173             {
00174               return (message ("%q; %q; ... (%d more signatures)",
00175                                st, t, (s->entries - i - 1)));
00176             }
00177           else
00178             {
00179               st = message ("%q; %q", st, t);
00180             }
00181         }
00182     }
00183      
00184   return st;
00185 }


Generated at Fri Nov 3 18:58:05 2000 for LCLint by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000