Пример #1
0
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;
}
Пример #2
0
/**
 * 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);
}
Пример #3
0
/**
 * 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);
}
Пример #4
0
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;
    }
}