/** Additional data for the callback.
Alternatively it can be used as a pointer to the data. */
void* data;
- //** Optional callback used to free the data field */
+ /** Optional callback used to free the data field */
void (*free_function)(void*);
};
-xbt_automaton_t xbt_automaton_new(){
+xbt_automaton_t xbt_automaton_new(void){
xbt_automaton_t automaton = NULL;
automaton = xbt_new0(struct xbt_automaton, 1);
automaton->states = xbt_dynar_new(sizeof(xbt_automaton_state_t), xbt_automaton_state_free_voidp);
xbt_automaton_exp_label_t label = NULL;
label = xbt_new0(struct xbt_automaton_exp_label, 1);
label->type = type;
-
+ xbt_automaton_exp_label_t left;
+ xbt_automaton_exp_label_t right;
+ xbt_automaton_exp_label_t exp_not;
+ char *p;
va_list ap;
va_start(ap, type);
switch(type){
- case 0 : {
- xbt_automaton_exp_label_t left = va_arg(ap, xbt_automaton_exp_label_t);
- xbt_automaton_exp_label_t right = va_arg(ap, xbt_automaton_exp_label_t);
+ case 0 :
+ left = va_arg(ap, xbt_automaton_exp_label_t);
+ right = va_arg(ap, xbt_automaton_exp_label_t);
label->u.or_and.left_exp = left;
label->u.or_and.right_exp = right;
break;
- }
- case 1 : {
- xbt_automaton_exp_label_t left = va_arg(ap, xbt_automaton_exp_label_t);
- xbt_automaton_exp_label_t right = va_arg(ap, xbt_automaton_exp_label_t);
+ case 1 :
+ left = va_arg(ap, xbt_automaton_exp_label_t);
+ right = va_arg(ap, xbt_automaton_exp_label_t);
label->u.or_and.left_exp = left;
label->u.or_and.right_exp = right;
break;
- }
- case 2 : {
- xbt_automaton_exp_label_t exp_not = va_arg(ap, xbt_automaton_exp_label_t);
+ case 2 :
+ exp_not = va_arg(ap, xbt_automaton_exp_label_t);
label->u.exp_not = exp_not;
break;
- }
- case 3 :{
- char* p = va_arg(ap, char*);
+ case 3 :
+ p = va_arg(ap, char*);
label->u.predicat = xbt_strdup(p);
break;
}
- }
va_end(ap);
return label;
}
}
void xbt_automaton_exp_label_display(xbt_automaton_exp_label_t label){
+ printf("(");
switch(label->type){
- case 0 :
- printf("(");
- xbt_automaton_exp_label_display(label->u.or_and.left_exp);
- printf(" || ");
- xbt_automaton_exp_label_display(label->u.or_and.right_exp);
- printf(")");
- break;
- case 1 :
- printf("(");
- xbt_automaton_exp_label_display(label->u.or_and.left_exp);
- printf(" && ");
- xbt_automaton_exp_label_display(label->u.or_and.right_exp);
- printf(")");
- break;
- case 2 :
- printf("(!");
- xbt_automaton_exp_label_display(label->u.exp_not);
- printf(")");
- break;
- case 3 :
- printf("(%s)",label->u.predicat);
- break;
- case 4 :
- printf("(1)");
- break;
+ case 0:
+ xbt_automaton_exp_label_display(label->u.or_and.left_exp);
+ printf(" || ");
+ xbt_automaton_exp_label_display(label->u.or_and.right_exp);
+ break;
+ case 1:
+ xbt_automaton_exp_label_display(label->u.or_and.left_exp);
+ printf(" && ");
+ xbt_automaton_exp_label_display(label->u.or_and.right_exp);
+ break;
+ case 2:
+ printf("!");
+ xbt_automaton_exp_label_display(label->u.exp_not);
+ break;
+ case 3:
+ printf("%s", label->u.predicat);
+ break;
+ case 4:
+ printf("1");
+ break;
+ default:
+ break;
}
+ printf(")");
}
xbt_automaton_state_t xbt_automaton_get_current_state(xbt_automaton_t a){
xbt_automaton_propositional_symbol_t prop_symb = NULL;
prop_symb = xbt_new0(struct xbt_automaton_propositional_symbol, 1);
prop_symb->pred = xbt_strdup(id);
- prop_symb->callback = call_simple_function;
+ prop_symb->callback = &call_simple_function;
prop_symb->data = fct;
prop_symb->free_function = NULL;
xbt_dynar_push(a->propositional_symbols, &prop_symb);
}
int xbt_automaton_propositional_symbols_compare_value(xbt_dynar_t s1, xbt_dynar_t s2){
- int *iptr1, *iptr2;
- unsigned int cursor;
unsigned int nb_elem = xbt_dynar_length(s1);
- for(cursor=0;cursor<nb_elem;cursor++){
- iptr1 = xbt_dynar_get_ptr(s1, cursor);
- iptr2 = xbt_dynar_get_ptr(s2, cursor);
+ for (unsigned int cursor = 0; cursor < nb_elem; cursor++) {
+ int* iptr1 = xbt_dynar_get_ptr(s1, cursor);
+ int* iptr2 = xbt_dynar_get_ptr(s2, cursor);
if(*iptr1 != *iptr2)
return 1;
}
static void xbt_automaton_propositional_symbol_free(xbt_automaton_propositional_symbol_t ps);
void xbt_automaton_state_free(xbt_automaton_state_t s){
- if(s){
+ if (s != NULL) {
xbt_free(s->id);
xbt_dynar_free(&(s->in));
xbt_dynar_free(&(s->out));
xbt_free(s);
- s = NULL;
}
}