92 int i, j, first = 1, number = 1;
95 for (j = 0; j < level; j++)
99 fprintf(file,
"+-- osl_symbols_t\n");
101 fprintf(file,
"+-- NULL symbols\n");
103 while (symbols != NULL) {
106 for (j = 0; j < level; j++)
107 fprintf(file,
"|\t");
108 fprintf(file,
"| osl_symbol_t (node %d)\n", number);
114 for (j = 0; j <= level+1; j++)
115 fprintf(file,
"|\t");
119 for (i = 0; i <= level; i++)
120 fprintf(file,
"|\t");
121 if (symbols->
type != OSL_UNDEFINED) {
122 fprintf(file,
"+-- Type: ");
123 switch (symbols->
type) {
124 case OSL_SYMBOL_TYPE_ITERATOR : fprintf(file,
"Iterator\n");
break;
125 case OSL_SYMBOL_TYPE_PARAMETER: fprintf(file,
"Parameter\n");
break;
126 case OSL_SYMBOL_TYPE_ARRAY : fprintf(file,
"Array\n");
break;
127 case OSL_SYMBOL_TYPE_FUNCTION : fprintf(file,
"Function\n");
break;
128 default : fprintf(file,
"Unknown\n") ;
131 fprintf(file,
"+-- NULL type\n");
135 for(j = 0; j <= level + 1; j++)
136 fprintf(file,
"|\t") ;
137 fprintf(file,
"\n") ;
140 for (i = 0; i <= level; i++)
141 fprintf(file,
"|\t");
143 fprintf(file,
"+-- Origin: %d\n", symbols->
generated);
145 fprintf(file,
"+-- Undefined origin\n");
148 for(j = 0; j <= level + 1; j++)
149 fprintf(file,
"|\t") ;
150 fprintf(file,
"\n") ;
153 for (i = 0; i <= level; i++)
154 fprintf(file,
"|\t");
155 if (symbols->
nb_dims != OSL_UNDEFINED)
156 fprintf(file,
"+-- Number of Dimensions: %d\n", symbols->
nb_dims);
158 fprintf(file,
"+-- Undefined number of dimensions\n");
161 for(j = 0; j <= level + 1; j++)
162 fprintf(file,
"|\t") ;
163 fprintf(file,
"\n") ;
177 symbols = symbols->
next;
180 if (symbols != NULL) {
181 for (j = 0; j <= level; j++)
182 fprintf(file,
"|\t");
183 fprintf(file,
"V\n");
188 for (j = 0; j <= level; j++)
189 fprintf(file,
"|\t");
215 int high_water_mark = OSL_MAX_STRING;
216 char*
string = NULL, *temp;
217 char buffer[OSL_MAX_STRING];
219 OSL_malloc(
string,
char *, high_water_mark *
sizeof(
char));
222 sprintf(buffer,
"# Number of symbols\n%d\n",
226 while (symbols != NULL) {
227 sprintf(buffer,
"# ===========================================\n");
229 sprintf(buffer,
"# %d Data for symbol number %d \n", i, i);
232 if (symbols->
type == OSL_UNDEFINED) {
233 sprintf(buffer,
"# %d.1 Symbol type\nUndefined\n", i);
237 sprintf(buffer,
"# %d.1 Symbol type\n", i);
239 switch (symbols->
type) {
240 case OSL_SYMBOL_TYPE_ITERATOR : sprintf(buffer,
"Iterator\n");
break;
241 case OSL_SYMBOL_TYPE_PARAMETER: sprintf(buffer,
"Parameter\n");
break;
242 case OSL_SYMBOL_TYPE_ARRAY : sprintf(buffer,
"Array\n");
break;
243 case OSL_SYMBOL_TYPE_FUNCTION : sprintf(buffer,
"Function\n");
break;
244 default : sprintf(buffer,
"Undefined\n") ;
250 sprintf(buffer,
"\n# %d.2 Generated Boolean\n%d\n", i, symbols->
generated);
254 sprintf(buffer,
"\n# %d.3 Number of dimensions\n%d\n", i, symbols->
nb_dims);
258 sprintf(buffer,
"\n# %d.4 Identifier\n", i);
265 sprintf(buffer,
"\n# %d.5 Datatype\n", i);
272 sprintf(buffer,
"\n# %d.6 Scope\n", i);
279 sprintf(buffer,
"\n# %d.7 Extent\n", i);
285 symbols = symbols->
next;
288 OSL_realloc(
string,
char *, (strlen(
string) + 1) *
sizeof(
char));
315 if (*input == NULL) {
316 OSL_debug(
"no symbols optional tag");
320 if (strlen(*input) > OSL_MAX_STRING)
321 OSL_error(
"symbols too long");
332 while (nb_symbols != 0) {
336 if (strcmp(type,
"Iterator") == 0)
337 symbols->
type = OSL_SYMBOL_TYPE_ITERATOR;
338 else if (strcmp(type,
"Parameter") == 0)
339 symbols->
type = OSL_SYMBOL_TYPE_PARAMETER;
340 else if (strcmp(type,
"Array") == 0)
341 symbols->
type = OSL_SYMBOL_TYPE_ARRAY;
342 else if (strcmp(type,
"Function") == 0)
343 symbols->
type = OSL_SYMBOL_TYPE_FUNCTION;
345 symbols->
type = OSL_UNDEFINED;
368 if (nb_symbols != 0) {
370 symbols = symbols->
next;
396 symbols->
type = OSL_UNDEFINED;
398 symbols->
nb_dims = OSL_UNDEFINED;
401 symbols->
scope = NULL;
403 symbols->
next = NULL;
418 while (symbols != NULL) {
443 while (*location != NULL)
444 location = &((*location)->next);
462 while ((symbols != NULL) && ((n == -1) || (i < n))) {
464 new->type = symbols->
type;
466 new->nb_dims = symbols->
nb_dims;
473 symbols = symbols->
next;
507 if (((c1 == NULL) && (c2 != NULL)) || ((c1 != NULL) && (c2 == NULL)))
537 while (symbols != NULL) {
539 symbols = symbols->
next;
554 OSL_strdup(interface->URI, OSL_URI_SYMBOLS);
osl_interface_p osl_symbols_interface()
void *(* osl_clone_f)(void *)
void osl_interface_free(osl_interface_p interface)
char * osl_generic_sprint(osl_generic_p generic)
int osl_symbols_get_nb_symbols(osl_symbols_p symbols)
osl_interface_p osl_interface_malloc()
osl_symbols_p osl_symbols_nclone(osl_symbols_p symbols, int n)
struct osl_symbols * next
osl_symbols_p osl_symbols_sread(char **input)
void *(* osl_sread_f)(char **)
void osl_symbols_dump(FILE *file, osl_symbols_p symbols)
void osl_symbols_idump(FILE *file, osl_symbols_p symbols, int level)
void osl_util_safe_strcat(char **dst, char *src, int *hwm)
void(* osl_idump_f)(FILE *, void *, int)
osl_symbols_p osl_symbols_malloc()
void osl_symbols_free(osl_symbols_p symbols)
void osl_generic_idump(FILE *file, osl_generic_p generic, int level)
osl_symbols_p osl_symbols_clone(osl_symbols_p symbols)
int osl_util_read_int(FILE *file, char **str)
char *(* osl_sprint_f)(void *)
char * osl_util_read_string(FILE *file, char **str)
char * osl_symbols_sprint(osl_symbols_p symbols)
int osl_symbols_equal(osl_symbols_p c1, osl_symbols_p c2)
int(* osl_equal_f)(void *, void *)
void osl_symbols_add(osl_symbols_p *location, osl_symbols_p symbols)
osl_interface_p osl_interface_get_default_registry()
osl_generic_p osl_generic_sread_one(char **input, osl_interface_p registry)
int osl_generic_equal(osl_generic_p x1, osl_generic_p x2)
osl_generic_p osl_generic_clone(osl_generic_p generic)
void osl_generic_free(osl_generic_p generic)
void(* osl_free_f)(void *)