93 for (j = 0; j < level; j++)
97 fprintf(file,
"+-- osl_generic_t\n");
99 fprintf(file,
"+-- NULL generic\n");
101 while (
generic != NULL) {
104 for (j = 0; j < level; j++)
105 fprintf(file,
"|\t");
106 fprintf(file,
"| osl_generic_t\n");
113 for(j = 0; j <= level + 1; j++)
114 fprintf(file,
"|\t");
119 if (generic->interface != NULL)
120 generic->interface->idump(file, generic->data, level + 1);
122 generic =
generic->next;
125 if (
generic != NULL) {
126 for (j = 0; j <= level; j++)
127 fprintf(file,
"|\t");
128 fprintf(file,
"V\n");
133 for (j = 0; j <= level; j++)
134 fprintf(file,
"|\t");
159 int high_water_mark = OSL_MAX_STRING;
160 char *
string = NULL, * content;
161 char buffer[OSL_MAX_STRING];
163 OSL_malloc(
string,
char *, high_water_mark *
sizeof(
char));
166 while (
generic != NULL) {
167 if (generic->interface != NULL) {
168 content =
generic->interface->sprint(generic->data);
169 if (content != NULL) {
170 sprintf(buffer,
"<%s>\n", generic->interface->URI);
174 sprintf(buffer,
"</%s>\n", generic->interface->URI);
178 generic =
generic->next;
179 if (
generic != NULL) {
180 sprintf(buffer,
"\n");
200 if (
string != NULL) {
201 fprintf(file,
"%s",
string);
220 if (
string != NULL) {
221 fprintf(file,
"<arrays>\n%s</arrays>\n",
string);
246 while (**input !=
'\0') {
268 char * content, * temp;
273 if ((tag == NULL) || (strlen(tag) < 1) || (tag[0] ==
'/')) {
274 OSL_debug(
"empty tag name or closing tag instead of an opening one");
282 if (interface == NULL) {
283 OSL_warning(
"unsupported generic");
284 fprintf(stderr,
"[osl] Warning: unknown URI \"%s\".\n", tag);
289 generic->data = interface->
sread(&temp);
311 char * content, * temp;
316 if ((tag == NULL) || (strlen(tag) < 1) || (tag[0] ==
'/')) {
317 OSL_debug(
"empty tag name or closing tag instead of an opening one");
325 if (interface == NULL) {
326 OSL_warning(
"unsupported generic");
327 fprintf(stderr,
"[osl] Warning: unknown URI \"%s\".\n", tag);
332 generic->data = interface->
sread(&temp);
351 char * generic_string, * temp;
355 temp = generic_string;
357 free(generic_string);
378 if (
generic != NULL) {
381 while (check != NULL) {
382 if ((check->interface == NULL) || (check->interface->URI == NULL))
383 OSL_error(
"no interface or URI in a generic to add to a list");
387 OSL_error(
"only one generic with a given URI is allowed");
392 while (tmp->
next != NULL)
413 if (
generic != NULL) {
418 *list =
generic->
next;
426 while (tmp->
next!=
generic && tmp->
next != NULL)
429 if(tmp->
next==
generic){
435 OSL_warning(
"generic not found in the list\n");
476 generic->interface = NULL;
477 generic->data = NULL;
478 generic->next = NULL;
492 while (
generic != NULL) {
493 next =
generic->
next;
494 if (generic->interface != NULL) {
499 if (generic->data != NULL) {
500 OSL_warning(
"unregistered interface, memory leaks are possible");
525 while (
generic != NULL) {
527 generic =
generic->next;
545 while (
generic != NULL) {
546 if (generic->interface != NULL) {
547 x =
generic->interface->
clone(generic->data);
550 new->interface = interface;
555 OSL_warning(
"unregistered interface, cloning ignored");
557 generic =
generic->next;
572 int generic_number = 0;
579 return generic_number;
593 int x1_generic_number, x2_generic_number;
603 if (x1_generic_number != x2_generic_number)
610 while ((x2 != NULL) && (found != 1)) {
616 OSL_warning(
"unregistered generic, "
617 "cannot state generic equality");
651 (x->interface == NULL) ||
652 (x->interface->URI == NULL) ||
653 (strcmp(x->interface->URI, URI)))
692 if ((data == NULL) || (interface == NULL))
693 OSL_warning(
"shell created with some empty elements inside");
696 generic->data = data;
697 generic->interface = interface;
int osl_interface_equal(osl_interface_p interface1, osl_interface_p interface2)
osl_interface_p osl_interface_nclone(osl_interface_p interface, int n)
char * osl_util_read_uptoendtag(FILE *file, char **str, char *name)
int osl_generic_number(osl_generic_p generic)
void osl_interface_free(osl_interface_p interface)
char * osl_arrays_sprint(osl_arrays_p arrays)
char * osl_generic_sprint(osl_generic_p generic)
osl_generic_p osl_generic_shell(void *data, osl_interface_p interface)
osl_interface_p osl_interface_clone(osl_interface_p interface)
osl_generic_p osl_generic_malloc()
void * osl_generic_lookup(osl_generic_p x, char const *const URI)
osl_interface_p osl_interface_lookup(osl_interface_p list, char *URI)
void osl_generic_add(osl_generic_p *list, osl_generic_p generic)
void osl_interface_idump(FILE *file, osl_interface_p interface, int level)
int osl_generic_has_URI(osl_const_generic_const_p x, char const *const URI)
int osl_generic_count(osl_generic_p x)
void osl_util_safe_strcat(char **dst, char *src, int *hwm)
osl_generic_p osl_generic_read(FILE *file, osl_interface_p registry)
osl_generic_p osl_generic_read_one(FILE *file, osl_interface_p registry)
void osl_generic_remove(osl_generic_p *list, char *URI)
void osl_generic_remove_node(osl_generic_p *list, osl_generic_p generic)
void osl_generic_idump(FILE *file, osl_generic_p generic, int level)
osl_interface_p interface
struct osl_generic * next
void osl_generic_dump(FILE *file, osl_generic_p generic)
osl_generic_p osl_generic_sread(char **input, osl_interface_p registry)
struct osl_generic const *const osl_const_generic_const_p
void osl_generic_print_options_scoplib(FILE *file, osl_generic_p generic)
osl_generic_p osl_generic_sread_one(char **input, osl_interface_p registry)
char * osl_util_read_tag(FILE *file, char **str)
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_print(FILE *file, osl_generic_p generic)
void osl_generic_free(osl_generic_p generic)