@@ -242,7 +242,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
242242 f << " " << t.type << " " << t.name << " ;\n " ;
243243 },
244244 [&](const EventTypeByteRange& t) {
245- f << " " << " uint8_t " << " *" << t.name_data << " ;\n " ;
245+ f << " " << t. type_c_arg << " *" << t.name_data << " ;\n " ;
246246 f << " " << " uint32_t" << " " << t.name_length << " ;\n " ;
247247 },
248248 [&](const EventTypeByteArray& t) {
@@ -279,7 +279,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
279279 f << " " << t.type << " " << t.name << " )\n " ;
280280 },
281281 [&](const EventTypeByteRange& t) {
282- f << " \n const Memory *_Nonnull mem, const uint8_t *_Nullable " << t.name_data << " , uint32_t " << t.name_length << " )\n " ;
282+ f << " \n const Memory *_Nonnull mem, const " << t. type_c_arg << " *_Nullable " << t.name_data << " , uint32_t " << t.name_length << " )\n " ;
283283 },
284284 [&](const EventTypeByteArray& t) {
285285 f << " const uint8_t " << t.name << " [" << t.length_constant << " ])\n " ;
@@ -303,9 +303,9 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
303303 f << " assert(" << t.name_length << " == 0);\n " ;
304304 f << " return true;\n }\n\n " ;
305305 if (t.null_terminated ) {
306- f << " uint8_t *" << t.name_data << " _copy = (uint8_t *)mem_balloc(mem, " << t.name_length << " + 1);\n\n " ;
306+ f << " " << t. type_c_arg << " *" << t.name_data << " _copy = (" << t. type_c_arg << " *)mem_balloc(mem, " << t.name_length << " + 1);\n\n " ;
307307 } else {
308- f << " uint8_t *" << t.name_data << " _copy = (uint8_t *)mem_balloc(mem, " << t.name_length << " );\n\n " ;
308+ f << " " << t. type_c_arg << " *" << t.name_data << " _copy = (" << t. type_c_arg << " *)mem_balloc(mem, " << t.name_length << " );\n\n " ;
309309 }
310310 f << " if (" << t.name_data << " _copy == nullptr) {\n " ;
311311 f << " return false;\n }\n\n " ;
@@ -342,7 +342,7 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
342342 f << " (const Tox_Event_" << event_name << " *" << event_name_l << " )\n " ;
343343 f << " {\n assert(" << event_name_l << " != nullptr);\n " ;
344344 f << " return " << event_name_l << " ->" << t.name_length << " ;\n }\n " ;
345- f << " const uint8_t *tox_event_" << event_name_l << " _get_" << t.name_data ;
345+ f << " const " << t. type_c_arg << " *tox_event_" << event_name_l << " _get_" << t.name_data ;
346346 f << " (const Tox_Event_" << event_name << " *" << event_name_l << " )\n " ;
347347 f << " {\n assert(" << event_name_l << " != nullptr);\n " ;
348348 f << " return " << event_name_l << " ->" << t.name_data << " ;\n }\n\n " ;
@@ -435,7 +435,11 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
435435 }
436436 },
437437 [&](const EventTypeByteRange& t) {
438- f << " bin_pack_bin(bp, event->" << t.name_data << " , event->" << t.name_length << " )" ;
438+ if (t.type_c_arg == " char" ) {
439+ f << " bin_pack_str(bp, event->" << t.name_data << " , event->" << t.name_length << " )" ;
440+ } else {
441+ f << " bin_pack_bin(bp, event->" << t.name_data << " , event->" << t.name_length << " )" ;
442+ }
439443 },
440444 [&](const EventTypeByteArray& t) {
441445 f << " bin_pack_bin(bp, event->" << t.name << " , " << t.length_constant << " )" ;
@@ -471,7 +475,11 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
471475 }
472476 },
473477 [&](const EventTypeByteRange& t) {
474- f << " bin_unpack_bin(bu, &event->" << t.name_data << " , &event->" << t.name_length << " )" ;
478+ if (t.type_c_arg == " char" ) {
479+ f << " bin_unpack_str(bu, &event->" << t.name_data << " , &event->" << t.name_length << " )" ;
480+ } else {
481+ f << " bin_unpack_bin(bu, &event->" << t.name_data << " , &event->" << t.name_length << " )" ;
482+ }
475483 },
476484 [&](const EventTypeByteArray& t) {
477485 f << " bin_unpack_bin_fixed(bu, event->" << t.name << " , " << t.length_constant << " )" ;
@@ -550,28 +558,31 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
550558
551559)" ;
552560 f << " void tox_events_handle_" << event_name_l << " (\n " ;
553- f << " Tox *tox " ;
561+ bool first_arg = true ;
554562
555563 for (const auto & t : event_types) {
564+ f << " " ;
556565 std::visit (
557566 overloaded{
558567 [&](const EventTypeTrivial& t) {
559- f << " , " << (t.cb_type .empty () ? t.type : t.cb_type ) << " " << t.name ;
568+ f << (t.cb_type .empty () ? t.type : t.cb_type ) << " " << t.name ;
560569 },
561570 [&](const EventTypeByteRange& t) {
562- f << " , const " << t.type_c_arg << " *" << t.name_data << " , " << t.type_length_cb << " " << t.name_length_cb ;
571+ f << " const " << t.type_c_arg << " *" << t.name_data << " , " << t.type_length_cb << " " << t.name_length_cb ;
563572 },
564573 [&](const EventTypeByteArray& t) {
565- f << " , const uint8_t *" << t.name ;
574+ f << " const uint8_t *" << t.name ;
566575 }
567576 },
568577 t
569578 );
579+ f << " ,\n " ;
580+ first_arg = false ;
570581 }
571582
572- f << " , \n void *user_data )\n {\n " ;
573- f << " Tox_Events_State *state = tox_events_alloc(user_data); \n " ;
574- f << " Tox_Event_ " << event_name << " * " << event_name_l << " = tox_event_ " << event_name_l << " _alloc(state); \n\n " ;
583+ f << " Tox_Events_State *state )\n {\n " ;
584+ f << " Tox_Event_ " << event_name << " * " << event_name_l << " = tox_event_ " << event_name_l << " _alloc( tox_events_alloc(state)); \n \n" ;
585+
575586 f << " if (" << event_name_l << " == nullptr) {\n return;\n }\n\n " ;
576587
577588 for (const auto & t : event_types) {
@@ -582,9 +593,6 @@ void generate_event_impl(const std::string& event_name, const std::vector<EventT
582593 },
583594 [&](const EventTypeByteRange& t) {
584595 f << " tox_event_" << event_name_l << " _set_" << t.name_data << " (" << event_name_l << " , state->mem, " ;
585- if (t.type_c_arg != " uint8_t" ) {
586- f << " (const uint8_t *)" ;
587- }
588596 f << t.name_data << " , " << t.name_length_cb << " );\n " ;
589597 },
590598 [&](const EventTypeByteArray& t) {
0 commit comments