fa_string_t pair_show(fa_ptr_t a) { fa_pair_t b = (fa_pair_t) a; fa_string_t s = fa_string("("); s = fa_string_dappend(s, fa_string_show(b->values[0])); s = fa_string_dappend(s, fa_string(",")); s = fa_string_dappend(s, fa_string_show(b->values[1])); s = fa_string_dappend(s, fa_string(")")); return s; }
fa_pair_t fa_signal_to_tree(fa_signal_t signal) { switch (signal->tag) { case time_signal: return pair(string("time"), empty()); case random_signal: return pair(string("random"), empty()); case constant_signal: return pair( fa_string_to_string( fa_from_double( constant_get(signal, value))), empty()); case lift_signal: return pair( lift_get(signal, name), list(fa_signal_to_tree(lift_get(signal, a)))); case lift2_signal: return pair( lift_get(signal, name), list( fa_signal_to_tree(lift2_get(signal, a)), fa_signal_to_tree(lift2_get(signal, b)))); case input_signal: return pair( concat( string("input "), fa_string_show(fa_from_int32(input_get(signal, c)))), empty()); case output_signal: return pair( concat( string("output "), fa_string_show(fa_from_int32(output_get(signal, c))), string("[-"), fa_string_show(fa_from_int32(output_get(signal, n))), string("]") ), list(fa_signal_to_tree(output_get(signal, a)))); default: assert(false); } }
fa_ptr_t receive_(fa_ptr_t x, fa_signal_name_t n, fa_signal_message_t msg) { printf("Received %s : %s!\n", fa_unstring(n), fa_unstring(fa_string_show(msg))); return x; }