struct fifo *load_transducer_from_linked_list(const struct transducer_name_and_mode_linked_list *list,const char* transducer_filename_prefix){ struct fifo *transducer_fifo = new_fifo(); int i=1; while (list != NULL){ char *transducer_file_name; OutputPolicy transducer_policy; transducer *t; transducer_file_name = list->transducer_filename; //fprintf(stdout, "transducer name read =%s\n",transducer_file_name); transducer_policy = list->transducer_mode; if (transducer_file_name != NULL && transducer_policy != IGNORE_OUTPUTS) { //fprintf(stdout,"transducer to be loaded\n"); t = (transducer*) malloc(sizeof(transducer) * 1); if (t == NULL) { perror("malloc\n"); fprintf(stderr, "Impossible to allocate memory\n"); exit(1); } size_t transducer_filename_prefix_len = 0; if (transducer_filename_prefix != NULL) transducer_filename_prefix_len = strlen(transducer_filename_prefix); t->transducer_file_name = (char*)malloc(sizeof(char)*(transducer_filename_prefix_len+strlen(transducer_file_name)+1)); if(t->transducer_file_name == NULL){ perror("malloc\n"); fprintf(stderr,"Impossible to allocate memory\n"); exit(1); } t->transducer_file_name[0] = '\0'; if (transducer_filename_prefix != NULL) strcpy(t->transducer_file_name, transducer_filename_prefix); strcat(t->transducer_file_name, transducer_file_name); t->output_policy = transducer_policy; struct any value; value._ptr = t; put_any(transducer_fifo,value); if (!is_empty(transducer_fifo)) { fprintf(stdout, "transducer %s successfully loaded\n", t->transducer_file_name); } } else { if (transducer_file_name == NULL) { fprintf(stdout, "Transducer %d : Empty filename\n",i); } else if (transducer_policy == IGNORE_OUTPUTS) { fprintf(stdout, "Transducer %d : Transducer mode not recognized\n",i); } } i++; list=list->next; } return transducer_fifo; }
/** * Puts a pointer value in the given FIFO. */ void put_ptr(struct fifo* f,void* value) { struct any tmp; tmp._ptr=value; put_any(f,tmp); }
/** * Puts an integer pointer value in the given FIFO. */ void put_int(struct fifo* f,int value) { struct any tmp; tmp._int=value; put_any(f,tmp); }
CORBA_boolean porbit_put_sv (GIOPSendBuffer *buf, CORBA_TypeCode tc, SV *sv) { switch (tc->kind) { case CORBA_tk_null: case CORBA_tk_void: return CORBA_TRUE; case CORBA_tk_short: return put_short (buf, sv); case CORBA_tk_long: return put_long (buf, sv); case CORBA_tk_ushort: return put_ushort (buf, sv); case CORBA_tk_ulong: return put_ulong (buf, sv); case CORBA_tk_float: return put_float (buf, sv); case CORBA_tk_double: return put_double (buf, sv); case CORBA_tk_char: return put_char (buf, sv); case CORBA_tk_boolean: return put_boolean (buf, sv); case CORBA_tk_octet: return put_octet (buf, sv); case CORBA_tk_enum: return put_enum (buf, tc, sv); case CORBA_tk_struct: return put_struct (buf, tc, sv); case CORBA_tk_sequence: return put_sequence (buf, tc, sv); case CORBA_tk_except: return put_except (buf, tc, sv); case CORBA_tk_objref: return put_objref (buf, tc, sv); case CORBA_tk_union: return put_union (buf, tc, sv); case CORBA_tk_alias: return put_alias (buf, tc, sv); case CORBA_tk_string: return put_string (buf, tc, sv); case CORBA_tk_array: return put_array (buf, tc, sv); case CORBA_tk_longlong: return put_longlong (buf, sv); case CORBA_tk_ulonglong: return put_ulonglong (buf, sv); case CORBA_tk_longdouble: return put_longdouble (buf, sv); case CORBA_tk_TypeCode: return put_typecode (buf, tc, sv); case CORBA_tk_any: return put_any (buf, tc, sv); case CORBA_tk_fixed: return put_fixed (buf, tc, sv); case CORBA_tk_wchar: case CORBA_tk_wstring: case CORBA_tk_Principal: default: warn ("Unsupported output typecode %d\n", tc->kind); return CORBA_FALSE; } }