C values (v0.9)
Values are "vars" that are not stored in dynamic memory. These are :
- $VOID: The null object.
- booleans: $TRUE or $FALSE
- (16 bit aligned C pointers) : (void *)
Numbers:
- Integers : 60 bit integer. (60 lower bits of 'int64_t')
- Dates : 60 bit integer. (60 lower bits of 'int64_t')
- Floats : 63 bit double. ( 1 sign bit , 11 exponent bits and 52 mantissa bits (51 explicitly stored))
API
- $VOID, $TRUE , $FALSE are constants.
- $T( const char "..."): Creates a constant char * with 16-bit alignment.
- $POINTER(void *) : Transform a 16-bit aligned pointer in a valid untyped var. (void * -> var). This allows treat pointers as var's.
// creation of a var pointing to a raw C char *
var raw_c_str = $POINTER( $T("My new raw string") );
- $P(var) : Transform a var in a 16-bit aligned pointer. (var -> void *). This allow treat var's as C-pointers.
// creation of a var pointing to a raw C char *
char *txt = $P( $POINTER( $T("My new raw string") ) );
- $INT( uint64_t ) : Creates an integer var, integer vars don't need arenas ( int64_t -> var )
var i = $INT(12754);
- $I( var ) : returns a raw c integer value. (var -> int64_t)
int64_t ci = $I(i);
- $DATE( uint64_t ) : Creates a date var from the number of milliseconds since 1970-01-01 (EPOCH), date vars don't need arenas ( int64_t -> var )
var i = $DATE(1275454566);
- $DT( var ) : returns the number of milliseconds since 1970-01-01 (EPOCH) of a date var. (var -> int64_t)
int64_t ci = $DT(i);
- $FLOAT( long double ) : Creates a float var, float vars don't need arenas ( int64_t -> var )
var f = $INT(12754.4546);
- $F( var ) : returns a raw c integer value. (var -> int64_t)
long double cf = $I(f);
- $O(arena, cvar) : Generical constuctor: Creates a var from a c raw variable:
- if cvar is a char * then $O(arena, str) is equivalent to $S(arena,str)
- if cvar is a int , unsigned int, uint64_t or int64_t $O(arena, i) is equivalent to $INT(i)
- if cvar is a float or double then $O(arena, f) is equivalent to $FLOAT(f)