- Most of the structs here follow a simple way of naming. Although it may differ sometimes, the structs exposed for the user are
type defined (using the keyword typedef)
as struct_name_t. A simple example is
typedef struct afl_raw_input {
u8 * bytes;
size_t len;
struct raw_input_functions *functions;
} afl_raw_input_t;
The structs which aren't type defined
are meant mostly for the internal use by the library. And the user need not play with it themself.
-
Most of the structs implemented here have a
vtable struct
and the name of thisvtable struct
is name_of_orig_struct_functions, e.g forstruct queue_entry
the vtable isstruct queue_entry_functions
-
For the vtable, many of the functions have a default implementation that is provided for each function (if we see it fit). The name of these functions start and end with an
_
e.g_get_queue_size_
, so users can know this is the default behaviour of the function pointer.