21         integer->
digit = eDigitLong;
 
   22         integer->
sign = eSignUnsigned;
 
   27         integer->
digit = eDigitSize;
 
   28         integer->
sign = eSignUnsigned;
 
   33         integer->
digit = eDigitLong;
 
   34         integer->
sign = eSignSigned;
 
   39         integer->
digit = eDigitInt;
 
   40         integer->
sign = eSignUnsigned;
 
   44         integer->
digit = eDigitInt;
 
   45         integer->
sign = eSignSigned;
 
   51     int ret = mpz_init_set_str(integer->
value, copy, (
int)base);
 
   58         msg_notify(logger, &kEvent_InvalidIntegerLiteral, node, 
"failed to parse base %zu digit '%s'", base, str);
 
CT_BROKER_API void ctx_error(const where_t *where, const void *state, const scan_t *scan, const char *msg)
 
CT_BROKER_API logger_t * ctx_get_logger(const scan_t *scan)
 
CT_BROKER_API arena_t * ctx_get_arena(const scan_t *scan)
 
CT_NODISCARD CT_SCAN_API node_t * node_new(const scan_t *scan, where_t where)
create a new node on the heap
 
CT_NODISCARD CT_ARENA_API char * arena_strndup(STA_READS(len) const char *str, size_t len, arena_t *arena)
allocate a copy of a string with a maximum length from a custom allocator
 
CT_ARENA_API void arena_free(STA_RELEASE void *ptr, size_t size, arena_t *arena)
release memory from a custom allocator
 
CT_NOTIFY_API event_builder_t msg_notify(INOUT_NOTNULL logger_t *logs, const diagnostic_t *diagnostic, const node_t *node, STA_FORMAT_STRING const char *fmt,...)
notify the logger of a new message
 
CT_NODISCARD CT_PUREFN CT_STD_API bool str_endswithn(STA_READS(len) const char *str, size_t len, const char *suffix)
check if a string ends with a substring
 
void ctu_parse_digit(scan_t *scan, where_t where, ctu_integer_t *integer, const char *str, int len, size_t base)
 
void ctuerror(where_t *where, void *state, scan_t *scan, const char *msg)
 
a position in a source file
 
a location inside a scanner locations are inclusive and 0-based