C values (v0.9)

From Native Big Data Documentation
Jump to: navigation, search


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)