/** * This file was automatically generated by running the './srcutil/method_dispatch.pl' * script. Do not modify this file directly. * * There are various macros in this header and they can be * enabled within various sections of code by doing the following * * #define PLTUBA_METGHV_STRUCT * #include "this_header_name" * #undef PLTUBA_METHGV_STRUCT * * which will paste the definition of the methgv struct */ /** Structure defining GVs for all our callback methods */ #ifdef PLTUBA_METHGV_STRUCT struct { GV* on_string; GV* on_key; GV* on_number; GV* on_object; GV* on_list; GV* on_data; GV* on_json; GV* on_special; GV* on_boolean; GV* on_null; GV* on_any; GV* start_string; GV* start_key; GV* start_number; GV* start_object; GV* start_list; GV* start_data; GV* start_json; GV* start_special; GV* start_boolean; GV* start_null; GV* start_any; GV* end_string; GV* end_key; GV* end_number; GV* end_object; GV* end_list; GV* end_data; GV* end_json; GV* end_special; GV* end_boolean; GV* end_null; GV* end_any; } methgv; #endif /* PLTUBA_METHGV_STRUCT */ /** X-Macro for method names */ #ifdef PLTUBA_DEFINE_XMETHGV #define PLTUBA_XMETHGV \ X(on, string) \ X(on, key) \ X(on, number) \ X(on, object) \ X(on, list) \ X(on, data) \ X(on, json) \ X(on, special) \ X(on, boolean) \ X(on, null) \ X(on, any) \ X(start, string) \ X(start, key) \ X(start, number) \ X(start, object) \ X(start, list) \ X(start, data) \ X(start, json) \ X(start, special) \ X(start, boolean) \ X(start, null) \ X(start, any) \ X(end, string) \ X(end, key) \ X(end, number) \ X(end, object) \ X(end, list) \ X(end, data) \ X(end, json) \ X(end, special) \ X(end, boolean) \ X(end, null) \ X(end, any) \ #endif /* PLTUBA_DEFINE_XMETHGV */ /** * This generates a large switch statement which will * return the proper method name and the pointer to the GV * slot in the methgv structure */ #ifdef PLTUBA_METH_GETMETH switch(action) { /* on */ case '>': { switch(cbtype) { case '"': /* string */ methname = "on_string"; methgvp = &tuba->methgv.on_string; break; case '#': /* key */ methname = "on_key"; methgvp = &tuba->methgv.on_key; break; case '=': /* number */ methname = "on_number"; methgvp = &tuba->methgv.on_number; break; case '{': /* object */ methname = "on_object"; methgvp = &tuba->methgv.on_object; break; case '[': /* list */ methname = "on_list"; methgvp = &tuba->methgv.on_list; break; case 'c': /* data */ methname = "on_data"; methgvp = &tuba->methgv.on_data; break; case 'D': /* json */ methname = "on_json"; methgvp = &tuba->methgv.on_json; break; case '^': /* special */ methname = "on_special"; methgvp = &tuba->methgv.on_special; break; case '?': /* boolean */ methname = "on_boolean"; methgvp = &tuba->methgv.on_boolean; break; case '~': /* null */ methname = "on_null"; methgvp = &tuba->methgv.on_null; break; case '.': /* any */ methname = "on_any"; methgvp = &tuba->methgv.on_any; break; default: break; } break; } /* start */ case '+': { switch(cbtype) { case '"': /* string */ methname = "start_string"; methgvp = &tuba->methgv.start_string; break; case '#': /* key */ methname = "start_key"; methgvp = &tuba->methgv.start_key; break; case '=': /* number */ methname = "start_number"; methgvp = &tuba->methgv.start_number; break; case '{': /* object */ methname = "start_object"; methgvp = &tuba->methgv.start_object; break; case '[': /* list */ methname = "start_list"; methgvp = &tuba->methgv.start_list; break; case 'c': /* data */ methname = "start_data"; methgvp = &tuba->methgv.start_data; break; case 'D': /* json */ methname = "start_json"; methgvp = &tuba->methgv.start_json; break; case '^': /* special */ methname = "start_special"; methgvp = &tuba->methgv.start_special; break; case '?': /* boolean */ methname = "start_boolean"; methgvp = &tuba->methgv.start_boolean; break; case '~': /* null */ methname = "start_null"; methgvp = &tuba->methgv.start_null; break; case '.': /* any */ methname = "start_any"; methgvp = &tuba->methgv.start_any; break; default: break; } break; } /* end */ case '-': { switch(cbtype) { case '"': /* string */ methname = "end_string"; methgvp = &tuba->methgv.end_string; break; case '#': /* key */ methname = "end_key"; methgvp = &tuba->methgv.end_key; break; case '=': /* number */ methname = "end_number"; methgvp = &tuba->methgv.end_number; break; case '{': /* object */ methname = "end_object"; methgvp = &tuba->methgv.end_object; break; case '[': /* list */ methname = "end_list"; methgvp = &tuba->methgv.end_list; break; case 'c': /* data */ methname = "end_data"; methgvp = &tuba->methgv.end_data; break; case 'D': /* json */ methname = "end_json"; methgvp = &tuba->methgv.end_json; break; case '^': /* special */ methname = "end_special"; methgvp = &tuba->methgv.end_special; break; case '?': /* boolean */ methname = "end_boolean"; methgvp = &tuba->methgv.end_boolean; break; case '~': /* null */ methname = "end_null"; methgvp = &tuba->methgv.end_null; break; case '.': /* any */ methname = "end_any"; methgvp = &tuba->methgv.end_any; break; default: break; } break; } default: methname = NULL; methgvp = NULL; break; } #endif /* PLTUBA_METH_GETMETH */