typedef union u_rax_value {
      rax_oset_t         rax_oset;
      rax_tuple_t        rax_tuple;
      rax_string_t       rax_string;
      rax_real_t         rax_real;
      rax_boolean_t      rax_boolean;
      rax_number_t       rax_number;
      rax_time_t         rax_time;
      rax_absolute_t     rax_absolute;
      rax_relative_t     rax_relative;
      rax_interval_t     rax_interval;
      rax_modulo_t       rax_modulo;
      rax_function_t     rax_function;
      union u_rax_value *rax_p_value;
      char              *rax_charpointer;
      char             **rax_charpointerpointer;
      void              *rax_pointer;
    } u_rax_value_t;

The u_rax_value_t is a union that can store Rax values of all types. There is a field for every Rax type[14], plus a couple of helper fields.

[14] rax_modulo is a type that will be implemented in the future