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");
160 char *
string = NULL, * content;
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) {
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) {
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){
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;
563 while ((
generic != NULL) && (n > 0)) {
564 if (generic->interface != NULL) {
565 x =
generic->interface->clone(generic->data);
568 new->interface = interface;
572 OSL_warning(
"unregistered interface, cloning ignored");
574 generic =
generic->next;
590 int generic_number = 0;
597 return generic_number;
611 int x1_generic_number, x2_generic_number;
621 if (x1_generic_number != x2_generic_number)
628 while ((x2 != NULL) && (found != 1)) {
635 "cannot state generic equality");
669 (x->interface == NULL) ||
670 (x->interface->URI == NULL) ||
671 (strcmp(x->interface->URI, URI)))
710 if ((data == NULL) || (interface == NULL))
711 OSL_warning(
"shell created with some empty elements inside");
714 generic->data = data;
715 generic->interface = interface;
osl_interface_p interface
osl_interface_p osl_interface_clone(osl_interface_p interface)
void * osl_generic_lookup(osl_generic_p x, char const *const URI)
osl_generic_p osl_generic_read_one(FILE *file, osl_interface_p registry)
void osl_generic_remove(osl_generic_p *list, char *URI)
int osl_generic_count(osl_generic_p x)
struct osl_generic * next
void osl_interface_free(osl_interface_p interface)
void osl_util_safe_strcat(char **dst, char *src, size_t *hwm)
osl_generic_p osl_generic_sread(char **input, osl_interface_p registry)
osl_generic_p osl_generic_clone(osl_generic_p generic)
void osl_generic_remove_node(osl_generic_p *list, osl_generic_p generic)
osl_generic_p osl_generic_malloc(void)
char * osl_arrays_sprint(osl_arrays_p arrays)
osl_generic_p osl_generic_nclone(osl_generic_p generic, int n)
This function builds and returns a "hard copy" (not a pointer copy) of the n first elements of an osl...
void osl_generic_dump(FILE *file, osl_generic_p generic)
int osl_generic_equal(osl_generic_p x1, osl_generic_p x2)
osl_interface_p osl_interface_lookup(osl_interface_p list, char *URI)
struct osl_generic const *const osl_const_generic_const_p
void osl_interface_idump(FILE *file, osl_interface_p interface, int level)
osl_generic_p osl_generic_sread_one(char **input, osl_interface_p registry)
int osl_interface_equal(osl_interface_p interface1, osl_interface_p interface2)
void osl_generic_idump(FILE *file, osl_generic_p generic, int level)
char * osl_util_read_tag(FILE *file, char **str)
int osl_generic_number(osl_generic_p generic)
void osl_generic_print(FILE *file, osl_generic_p generic)
void osl_generic_free(osl_generic_p generic)
void osl_generic_print_options_scoplib(FILE *file, osl_generic_p generic)
char * osl_util_read_uptoendtag(FILE *file, char **str, char *name)
int osl_generic_has_URI(osl_const_generic_const_p x, char const *const URI)
osl_generic_p osl_generic_read(FILE *file, osl_interface_p registry)
void osl_generic_add(osl_generic_p *list, osl_generic_p generic)
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_nclone(osl_interface_p interface, int n)
#define OSL_malloc(ptr, type, size)