00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 # include "lclintMacros.nf"
00033 # include "llbasic.h"
00034
00035 typeNameNodeList typeNameNodeList_new ()
00036 {
00037 typeNameNodeList s = (typeNameNodeList) dmalloc (sizeof (*s));
00038
00039 s->nelements = 0;
00040 s->nspace = typeNameNodeListBASESIZE;
00041 s->elements = (typeNameNode *)
00042 dmalloc (sizeof (*s->elements) * typeNameNodeListBASESIZE);
00043
00044 return (s);
00045 }
00046
00047 static void
00048 typeNameNodeList_grow (typeNameNodeList s)
00049 {
00050 int i;
00051 typeNameNode *newelements;
00052
00053 s->nspace += typeNameNodeListBASESIZE;
00054
00055 newelements = (typeNameNode *) dmalloc (sizeof (*newelements)
00056 * (s->nelements + s->nspace));
00057
00058 for (i = 0; i < s->nelements; i++)
00059 {
00060 newelements[i] = s->elements[i];
00061 }
00062
00063 sfree (s->elements);
00064 s->elements = newelements;
00065 }
00066
00067 typeNameNodeList
00068 typeNameNodeList_add (typeNameNodeList s, typeNameNode el)
00069 {
00070 if (s->nspace <= 0)
00071 typeNameNodeList_grow (s);
00072
00073 s->nspace--;
00074 s->elements[s->nelements] = el;
00075 s->nelements++;
00076
00077 return s;
00078 }
00079
00080 cstring
00081 typeNameNodeList_unparse (typeNameNodeList s)
00082 {
00083 cstring st = cstring_undefined;
00084 bool first = TRUE;
00085
00086 typeNameNodeList_elements (s, current)
00087 {
00088 if (first)
00089 {
00090 st = typeNameNode_unparse (current);
00091 first = FALSE;
00092 }
00093 else
00094 {
00095 st = message ("%q, %q", st, typeNameNode_unparse (current));
00096 }
00097 } end_typeNameNodeList_elements;
00098 return (st);
00099 }
00100
00101 void
00102 typeNameNodeList_free (typeNameNodeList s)
00103 {
00104 int i;
00105 for (i = 0; i < s->nelements; i++)
00106 {
00107 typeNameNode_free (s->elements[i]);
00108 }
00109
00110 sfree (s->elements);
00111 sfree (s);
00112 }