static int get_timetag(term_t sec, term_t frac, lo_timetag *ts) { int64_t s, f; int ok = PL_get_int64(sec, &s) && PL_get_int64(frac, &f); ts->sec = s; ts->frac = f; return ok; }
static int get_offset_ex(term_t t, table_offset_t *v) { int64_t i; if ( PL_get_int64(t, &i) ) { if ( i < 0 ) return domain_error(t, "nonneg"); *v = (table_offset_t)i; /* TBD: Check on 32-bit systems */ return TRUE; } return type_error(t, "integer"); }
int get_uint(term_t term, unsigned *value) { int64_t v0; if ( !PL_get_int64(term, &v0)) return FALSE; #if 0 /* tipc users are somewhat cavalier about using -1 in place of 4294967295U */ if(v0 < -1 || v0 > UINT_MAX) return FALSE; #endif *value = (unsigned) v0 & 0xffffffff; return TRUE; }
static int get_table_ex(term_t handle, Table *table) { int64_t l; if ( PL_get_int64(handle, &l) ) { Table t = (Table)(intptr_t)l; if ( t->magic == TABLE_MAGIC ) { *table = t; return TRUE; } return existence_error(handle, "table"); } return type_error(handle, "table"); }