.title Embedding AWK To embed the awk interpreter to an application, the developer should provide the following routines. * System functions including memory management * Source code I/O functions * I/O functions to interface with the console, files, and pipes. ase_awk_open creates an awk object and requires a pointer to a structure holding system functions. The structure is described in ase_awk_prmfns_t. {{{ struct ase_awk_prmfns_t { /* memory */ void* (*malloc) (ase_size_t n, void* custom_data); void* (*realloc) (void* ptr, ase_size_t n, void* custom_data); void (*free) (void* ptr, void* custom_data); /* thread lock */ ase_awk_lk_t lock; ase_awk_lk_t unlock; /* character class */ ase_bool_t (*is_upper) (ase_cint_t c); ase_bool_t (*is_lower) (ase_cint_t c); ase_bool_t (*is_alpha) (ase_cint_t c); ase_bool_t (*is_digit) (ase_cint_t c); ase_bool_t (*is_xdigit) (ase_cint_t c); ase_bool_t (*is_alnum) (ase_cint_t c); ase_bool_t (*is_space) (ase_cint_t c); ase_bool_t (*is_print) (ase_cint_t c); ase_bool_t (*is_graph) (ase_cint_t c); ase_bool_t (*is_cntrl) (ase_cint_t c); ase_bool_t (*is_punct) (ase_cint_t c); ase_cint_t (*to_upper) (ase_cint_t c); ase_cint_t (*to_lower) (ase_cint_t c); /* utilities */ void* (*memcpy) (void* dst, const void* src, ase_size_t n); void* (*memset) (void* dst, int val, ase_size_t n); ase_real_t (*pow) (ase_real_t x, ase_real_t y); int (*sprintf) (ase_char_t* buf, ase_size_t size, const ase_char_t* fmt, ...); void (*aprintf) (const ase_char_t* fmt, ...); /* assertion */ void (*dprintf) (const ase_char_t* fmt, ...); /* debug */ void (*abort) (void); void* custom_data; }; }}}