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

sortSet.c File Reference

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

Go to the source code of this file.

Functions

sortSet sortSet_new ()
bool sortSet_insert (sortSet s, sort el)
sort sortSet_choose (sortSet s)
bool sortSet_member (sortSet s, sort el)
cstring sortSet_unparse (sortSet s)
cstring sortSet_unparseClean (sortSet s)
cstring sortSet_unparseOr (sortSet s)
void sortSet_free (sortSet s)
sortSet sortSet_copy (sortSet s)


Function Documentation

sort sortSet_choose ( sortSet s )
 

Definition at line 118 of file sortSet.c.

Referenced by checkSort().

00119 {
00120   llassert (sortSet_isDefined (s) && s->entries > 0);
00121   return (s->elements[0]);
00122 }

sortSet sortSet_copy ( sortSet s )
 

Definition at line 219 of file sortSet.c.

00220 {
00221   sortSet t = sortSet_predict (sortSet_size (s));
00222   int i;
00223 
00224   if (sortSet_isDefined (s))
00225     {
00226       for (i = 0; i < sortSet_size (s); i++)
00227         {
00228           (void) sortSet_insert (t, s->elements[i]); 
00229         }
00230     }
00231 
00232   return t;
00233 }

void sortSet_free ( sortSet s )
 

Definition at line 209 of file sortSet.c.

Referenced by computePossibleSorts().

00210 {
00211   if (sortSet_isDefined (s))
00212     {
00213       sfree (s->elements); 
00214       sfree (s);
00215     }
00216 }

bool sortSet_insert ( sortSet s,
sort el )
 

Definition at line 98 of file sortSet.c.

Referenced by computePossibleSorts(), makeLiteralTermNode(), makeQuantifiedTermNode(), makeSimpleTermNode(), makeSizeofTermNode(), makeUnchangedTermNode1(), makeUnchangedTermNode2(), and sortSet_copy().

00099 {
00100   llassert (sortSet_isDefined (s));
00101 
00102   if (sortSet_member (s, el))
00103     {
00104       return FALSE;
00105     }
00106   else
00107     {
00108       if (s->nspace <= 0)
00109         sortSet_grow (s);
00110       s->nspace--;
00111       s->elements[s->entries] = el;
00112       s->entries++;
00113       return TRUE;
00114     }
00115 }

bool sortSet_member ( sortSet s,
sort el )
 

Definition at line 125 of file sortSet.c.

Referenced by sortSet_insert().

00126 {
00127   if (sortSet_isDefined (s))
00128     {
00129       int i;
00130 
00131       for (i = 0; i < s->entries; i++)
00132         {
00133           if (sort_equal (&el, &(s->elements[i])))
00134             {
00135               return TRUE;
00136             }
00137         }
00138     }
00139 
00140   return FALSE;
00141 }

sortSet sortSet_new ( )
 

Definition at line 35 of file sortSet.c.

Referenced by makeIfTermNode(), makeInfixTermNode(), makeLiteralTermNode(), makeMapTermNode(), makeMatchedNode(), makeOpCallTermNode(), makePostfixTermNode2(), makePrefixTermNode(), makeQuantifiedTermNode(), makeSelectTermNode(), makeSimpleTermNode(), makeSizeofTermNode(), makeSqBracketedNode(), makeUnchangedTermNode1(), makeUnchangedTermNode2(), and pushInfixOpPartNode().

00036 {
00037   sortSet s = (sortSet) dmalloc (sizeof (*s));
00038   
00039   s->entries = 0;
00040   s->nspace = sortSetBASESIZE;
00041   s->elements = (sort *) dmalloc (sizeof (*s->elements) * sortSetBASESIZE);
00042   
00043   return (s);
00044 }

cstring sortSet_unparse ( sortSet s )
 

Definition at line 144 of file sortSet.c.

00145 {
00146   return (message ("{ %q }", sortSet_unparseClean (s)));
00147 }

cstring sortSet_unparseClean ( sortSet s )
 

Definition at line 150 of file sortSet.c.

Referenced by checkSort().

00151 {
00152   cstring st = cstring_undefined;
00153 
00154   if (sortSet_isDefined (s))
00155     {
00156       int i;
00157 
00158       for (i = 0; i < s->entries; i++)
00159         {
00160           if (i == 0)
00161             {
00162               st = message ("%q%s", st, sort_unparseName (s->elements[i]));
00163             }
00164           else
00165             {
00166               st = message ("%q, %s", st, sort_unparseName (s->elements[i]));
00167             }
00168         }
00169     }
00170 
00171   return st;
00172 }

cstring sortSet_unparseOr ( sortSet s )
 

Definition at line 175 of file sortSet.c.

00176 {
00177   cstring st = cstring_undefined;
00178 
00179   if (sortSet_isDefined (s))
00180     {
00181       int i;
00182       int last = s->entries - 1;
00183       
00184       for (i = 0; i < s->entries; i++)
00185         {
00186           if (i == 0)
00187             {
00188               st = cstring_concatFree (st, sort_unparse (s->elements[i]));
00189             }
00190           else
00191             {
00192               if (i == last)
00193                 {
00194                   /* was sort_unparse ??? */
00195                   st = message ("%q or %q", st, sort_unparse (s->elements[i]));
00196                 }
00197               else
00198                 {
00199                   st = message ("%q, %q", st, sort_unparse (s->elements[i]));
00200                 }
00201             }
00202         }
00203     }
00204   
00205   return st;
00206 }


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