diff options
Diffstat (limited to 'gfsm/gfsm/src/libgfsm/tests/lab2ary.c')
-rw-r--r-- | gfsm/gfsm/src/libgfsm/tests/lab2ary.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gfsm/gfsm/src/libgfsm/tests/lab2ary.c b/gfsm/gfsm/src/libgfsm/tests/lab2ary.c new file mode 100644 index 0000000..e6dbee9 --- /dev/null +++ b/gfsm/gfsm/src/libgfsm/tests/lab2ary.c @@ -0,0 +1,62 @@ +#include <gfsm.h> +#include <stdlib.h> + + +gfsmAutomaton *fsm; +gfsmAlphabet *ialph; +const char *tfstname = "lab2ary.tfst"; +gfsmError *err = NULL; + + +int main (int argc, char **argv) { + guint i; + ialph = gfsm_identity_alphabet_new(); + //GArray *ary; + GPtrArray *ary; + + fsm = gfsm_automaton_new(); + if (!gfsm_automaton_compile_filename(fsm,tfstname,&err)) { + g_printerr("%s: compile failed for '%s': %s\n", *argv, tfstname, err->message); + exit(255); + } + printf("%s: compiled test automaton from '%s'\n", *argv, tfstname); + + ialph = gfsm_automaton_get_alphabet(fsm, gfsmLSLower, ialph); + + printf("--\n"); + printf("alphabet size=%u ; min=%u ; max=%u\n", + gfsm_alphabet_size(ialph), ialph->lab_min, ialph->lab_max); + + printf("--\n"); + printf("alphabet array={"); + /*-- ok + ary = g_array_new(FALSE,FALSE,sizeof(gfsmLabelVal)); + gfsm_alphabet_labels_to_array(ialph,ary); + */ + /*-- ok + ary = g_array_sized_new(FALSE,FALSE,sizeof(gfsmLabelVal),gfsm_alphabet_size(ialph)); + gfsm_alphabet_labels_to_array(ialph,ary); + */ + /*-- ok */ + //ary = gfsm_alphabet_labels_to_array(ialph,NULL); + + /*-- ptr_array */ + ary = g_ptr_array_sized_new(gfsm_alphabet_size(ialph)); + gfsm_alphabet_labels_to_array(ialph,ary); + + for (i=0; i < ary->len; i++) { + //printf(" %u", g_array_index(ary,gfsmLabelVal,i)); + printf(" %u", (gfsmLabelVal)g_ptr_array_index(ary,i)); + } + printf(" }\n"); + + //-- cleanup + //g_array_free(ary,TRUE); + g_ptr_array_free(ary,TRUE); + + gfsm_automaton_free(fsm); + gfsm_alphabet_free(ialph); + + return 0; +} + |