-xbt_automaton_propositional_symbol_t xbt_automaton_propositional_symbol_new(xbt_automaton_t a, const char* id, void* fct){
- xbt_automaton_propositional_symbol_t prop_symb = NULL;
- prop_symb = xbt_new0(struct xbt_automaton_propositional_symbol, 1);
- prop_symb->pred = strdup(id);
- prop_symb->function = fct;
+static int call_simple_function(int function(void) )
+{
+ return function();
+}
+
+xbt_automaton_propositional_symbol_t xbt_automaton_propositional_symbol_new(xbt_automaton_t a, const char* id,
+ int (*fct)(void))
+{
+ xbt_automaton_propositional_symbol_t prop_symb = xbt_new0(struct xbt_automaton_propositional_symbol, 1);
+ prop_symb->pred = xbt_strdup(id);
+ prop_symb->callback = ((int (*)(void *))&call_simple_function);
+ prop_symb->data = (void*)&fct;
+ prop_symb->free_function = NULL;
+ xbt_dynar_push(a->propositional_symbols, &prop_symb);
+ return prop_symb;
+}
+
+XBT_PUBLIC xbt_automaton_propositional_symbol_t xbt_automaton_propositional_symbol_new_pointer(xbt_automaton_t a,
+ const char* id,
+ int* value)
+{
+ xbt_automaton_propositional_symbol_t prop_symb = xbt_new0(struct xbt_automaton_propositional_symbol, 1);
+ prop_symb->pred = xbt_strdup(id);
+ prop_symb->callback = NULL;
+ prop_symb->data = value;
+ prop_symb->free_function = NULL;
+ xbt_dynar_push(a->propositional_symbols, &prop_symb);
+ return prop_symb;
+}
+
+XBT_PUBLIC xbt_automaton_propositional_symbol_t xbt_automaton_propositional_symbol_new_callback(
+ xbt_automaton_t a, const char* id, xbt_automaton_propositional_symbol_callback_type callback, void* data,
+ xbt_automaton_propositional_symbol_free_function_type free_function)
+{
+ xbt_automaton_propositional_symbol_t prop_symb = xbt_new0(struct xbt_automaton_propositional_symbol, 1);
+ prop_symb->pred = xbt_strdup(id);
+ prop_symb->callback = callback;
+ prop_symb->data = data;
+ prop_symb->free_function = free_function;