@@ -564,131 +564,132 @@ void tox_event_destruct(Tox_Event *event, const Memory *mem)
564564 event -> data .value = nullptr ;
565565}
566566
567- bool tox_event_pack (const Tox_Event * event , Bin_Pack * bp )
567+ non_null ()
568+ static bool tox_event_type_pack (Tox_Event_Type type , Bin_Pack * bp )
568569{
569- assert (event -> type != TOX_EVENT_INVALID );
570-
571- if (!(bin_pack_array (bp , 2 ) && bin_pack_u32 (bp , event -> type ))) {
572- return false;
573- }
570+ return bin_pack_u32 (bp , (uint32_t )type );
571+ }
574572
575- switch (event -> type ) {
573+ non_null ()
574+ static bool tox_event_data_pack (Tox_Event_Type type , const Tox_Event_Data * data , Bin_Pack * bp )
575+ {
576+ switch (type ) {
576577 case TOX_EVENT_CONFERENCE_CONNECTED :
577- return tox_event_conference_connected_pack (event -> data . conference_connected , bp );
578+ return tox_event_conference_connected_pack (data -> conference_connected , bp );
578579
579580 case TOX_EVENT_CONFERENCE_INVITE :
580- return tox_event_conference_invite_pack (event -> data . conference_invite , bp );
581+ return tox_event_conference_invite_pack (data -> conference_invite , bp );
581582
582583 case TOX_EVENT_CONFERENCE_MESSAGE :
583- return tox_event_conference_message_pack (event -> data . conference_message , bp );
584+ return tox_event_conference_message_pack (data -> conference_message , bp );
584585
585586 case TOX_EVENT_CONFERENCE_PEER_LIST_CHANGED :
586- return tox_event_conference_peer_list_changed_pack (event -> data . conference_peer_list_changed , bp );
587+ return tox_event_conference_peer_list_changed_pack (data -> conference_peer_list_changed , bp );
587588
588589 case TOX_EVENT_CONFERENCE_PEER_NAME :
589- return tox_event_conference_peer_name_pack (event -> data . conference_peer_name , bp );
590+ return tox_event_conference_peer_name_pack (data -> conference_peer_name , bp );
590591
591592 case TOX_EVENT_CONFERENCE_TITLE :
592- return tox_event_conference_title_pack (event -> data . conference_title , bp );
593+ return tox_event_conference_title_pack (data -> conference_title , bp );
593594
594595 case TOX_EVENT_FILE_CHUNK_REQUEST :
595- return tox_event_file_chunk_request_pack (event -> data . file_chunk_request , bp );
596+ return tox_event_file_chunk_request_pack (data -> file_chunk_request , bp );
596597
597598 case TOX_EVENT_FILE_RECV_CHUNK :
598- return tox_event_file_recv_chunk_pack (event -> data . file_recv_chunk , bp );
599+ return tox_event_file_recv_chunk_pack (data -> file_recv_chunk , bp );
599600
600601 case TOX_EVENT_FILE_RECV_CONTROL :
601- return tox_event_file_recv_control_pack (event -> data . file_recv_control , bp );
602+ return tox_event_file_recv_control_pack (data -> file_recv_control , bp );
602603
603604 case TOX_EVENT_FILE_RECV :
604- return tox_event_file_recv_pack (event -> data . file_recv , bp );
605+ return tox_event_file_recv_pack (data -> file_recv , bp );
605606
606607 case TOX_EVENT_FRIEND_CONNECTION_STATUS :
607- return tox_event_friend_connection_status_pack (event -> data . friend_connection_status , bp );
608+ return tox_event_friend_connection_status_pack (data -> friend_connection_status , bp );
608609
609610 case TOX_EVENT_FRIEND_LOSSLESS_PACKET :
610- return tox_event_friend_lossless_packet_pack (event -> data . friend_lossless_packet , bp );
611+ return tox_event_friend_lossless_packet_pack (data -> friend_lossless_packet , bp );
611612
612613 case TOX_EVENT_FRIEND_LOSSY_PACKET :
613- return tox_event_friend_lossy_packet_pack (event -> data . friend_lossy_packet , bp );
614+ return tox_event_friend_lossy_packet_pack (data -> friend_lossy_packet , bp );
614615
615616 case TOX_EVENT_FRIEND_MESSAGE :
616- return tox_event_friend_message_pack (event -> data . friend_message , bp );
617+ return tox_event_friend_message_pack (data -> friend_message , bp );
617618
618619 case TOX_EVENT_FRIEND_NAME :
619- return tox_event_friend_name_pack (event -> data . friend_name , bp );
620+ return tox_event_friend_name_pack (data -> friend_name , bp );
620621
621622 case TOX_EVENT_FRIEND_READ_RECEIPT :
622- return tox_event_friend_read_receipt_pack (event -> data . friend_read_receipt , bp );
623+ return tox_event_friend_read_receipt_pack (data -> friend_read_receipt , bp );
623624
624625 case TOX_EVENT_FRIEND_REQUEST :
625- return tox_event_friend_request_pack (event -> data . friend_request , bp );
626+ return tox_event_friend_request_pack (data -> friend_request , bp );
626627
627628 case TOX_EVENT_FRIEND_STATUS :
628- return tox_event_friend_status_pack (event -> data . friend_status , bp );
629+ return tox_event_friend_status_pack (data -> friend_status , bp );
629630
630631 case TOX_EVENT_FRIEND_STATUS_MESSAGE :
631- return tox_event_friend_status_message_pack (event -> data . friend_status_message , bp );
632+ return tox_event_friend_status_message_pack (data -> friend_status_message , bp );
632633
633634 case TOX_EVENT_FRIEND_TYPING :
634- return tox_event_friend_typing_pack (event -> data . friend_typing , bp );
635+ return tox_event_friend_typing_pack (data -> friend_typing , bp );
635636
636637 case TOX_EVENT_SELF_CONNECTION_STATUS :
637- return tox_event_self_connection_status_pack (event -> data . self_connection_status , bp );
638+ return tox_event_self_connection_status_pack (data -> self_connection_status , bp );
638639
639640 case TOX_EVENT_GROUP_PEER_NAME :
640- return tox_event_group_peer_name_pack (event -> data . group_peer_name , bp );
641+ return tox_event_group_peer_name_pack (data -> group_peer_name , bp );
641642
642643 case TOX_EVENT_GROUP_PEER_STATUS :
643- return tox_event_group_peer_status_pack (event -> data . group_peer_status , bp );
644+ return tox_event_group_peer_status_pack (data -> group_peer_status , bp );
644645
645646 case TOX_EVENT_GROUP_TOPIC :
646- return tox_event_group_topic_pack (event -> data . group_topic , bp );
647+ return tox_event_group_topic_pack (data -> group_topic , bp );
647648
648649 case TOX_EVENT_GROUP_PRIVACY_STATE :
649- return tox_event_group_privacy_state_pack (event -> data . group_privacy_state , bp );
650+ return tox_event_group_privacy_state_pack (data -> group_privacy_state , bp );
650651
651652 case TOX_EVENT_GROUP_VOICE_STATE :
652- return tox_event_group_voice_state_pack (event -> data . group_voice_state , bp );
653+ return tox_event_group_voice_state_pack (data -> group_voice_state , bp );
653654
654655 case TOX_EVENT_GROUP_TOPIC_LOCK :
655- return tox_event_group_topic_lock_pack (event -> data . group_topic_lock , bp );
656+ return tox_event_group_topic_lock_pack (data -> group_topic_lock , bp );
656657
657658 case TOX_EVENT_GROUP_PEER_LIMIT :
658- return tox_event_group_peer_limit_pack (event -> data . group_peer_limit , bp );
659+ return tox_event_group_peer_limit_pack (data -> group_peer_limit , bp );
659660
660661 case TOX_EVENT_GROUP_PASSWORD :
661- return tox_event_group_password_pack (event -> data . group_password , bp );
662+ return tox_event_group_password_pack (data -> group_password , bp );
662663
663664 case TOX_EVENT_GROUP_MESSAGE :
664- return tox_event_group_message_pack (event -> data . group_message , bp );
665+ return tox_event_group_message_pack (data -> group_message , bp );
665666
666667 case TOX_EVENT_GROUP_PRIVATE_MESSAGE :
667- return tox_event_group_private_message_pack (event -> data . group_private_message , bp );
668+ return tox_event_group_private_message_pack (data -> group_private_message , bp );
668669
669670 case TOX_EVENT_GROUP_CUSTOM_PACKET :
670- return tox_event_group_custom_packet_pack (event -> data . group_custom_packet , bp );
671+ return tox_event_group_custom_packet_pack (data -> group_custom_packet , bp );
671672
672673 case TOX_EVENT_GROUP_CUSTOM_PRIVATE_PACKET :
673- return tox_event_group_custom_private_packet_pack (event -> data . group_custom_private_packet , bp );
674+ return tox_event_group_custom_private_packet_pack (data -> group_custom_private_packet , bp );
674675
675676 case TOX_EVENT_GROUP_INVITE :
676- return tox_event_group_invite_pack (event -> data . group_invite , bp );
677+ return tox_event_group_invite_pack (data -> group_invite , bp );
677678
678679 case TOX_EVENT_GROUP_PEER_JOIN :
679- return tox_event_group_peer_join_pack (event -> data . group_peer_join , bp );
680+ return tox_event_group_peer_join_pack (data -> group_peer_join , bp );
680681
681682 case TOX_EVENT_GROUP_PEER_EXIT :
682- return tox_event_group_peer_exit_pack (event -> data . group_peer_exit , bp );
683+ return tox_event_group_peer_exit_pack (data -> group_peer_exit , bp );
683684
684685 case TOX_EVENT_GROUP_SELF_JOIN :
685- return tox_event_group_self_join_pack (event -> data . group_self_join , bp );
686+ return tox_event_group_self_join_pack (data -> group_self_join , bp );
686687
687688 case TOX_EVENT_GROUP_JOIN_FAIL :
688- return tox_event_group_join_fail_pack (event -> data . group_join_fail , bp );
689+ return tox_event_group_join_fail_pack (data -> group_join_fail , bp );
689690
690691 case TOX_EVENT_GROUP_MODERATION :
691- return tox_event_group_moderation_pack (event -> data . group_moderation , bp );
692+ return tox_event_group_moderation_pack (data -> group_moderation , bp );
692693
693694 case TOX_EVENT_INVALID :
694695 return false;
@@ -697,6 +698,15 @@ bool tox_event_pack(const Tox_Event *event, Bin_Pack *bp)
697698 return false;
698699}
699700
701+ bool tox_event_pack (const Tox_Event * event , Bin_Pack * bp )
702+ {
703+ assert (event -> type != TOX_EVENT_INVALID );
704+
705+ return bin_pack_array (bp , 2 )
706+ && tox_event_type_pack (event -> type , bp )
707+ && tox_event_data_pack (event -> type , & event -> data , bp );
708+ }
709+
700710non_null ()
701711static bool tox_event_type_from_int (uint32_t value , Tox_Event_Type * out )
702712{
0 commit comments