The ovm_int_t type

The ovm_int_t type is the OrchIDS incarnation of the data type of signed machine integers.

It is defined this way in src/lang.h:

typedef struct ovm_int_s ovm_int_t;
struct ovm_int_s
{
  gc_header_t gc;
  long val;
};

This is a type of garbage-collectable data.  To allocate a new object of type ovm_int_t, use the function:

ovm_var_t *ovm_int_new(gc_t *gc_ctx, long val);

This creates a new ovm_int_t object with value val. Its return type is the universal type ovm_var_t instead of ovm_int_t, for practical reasons. Calling res the result, one always has TYPE(res)==T_INT.

The result is created white, and much be gc_touch()ed before storing it into a garbage-collectable object.

The returned ovm_int_t object res is modifiable. One can read from or write from it by using the INT() macro (e.g., int i=INT(res); INT(res) = 3;).