- 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 structand the name of thisvtable structis name_of_orig_struct_functions, e.g forstruct queue_entrythe 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.