Created
October 22, 2025 19:45
-
-
Save twist84/a6161a1eb2c86fafb47ce7be106854bc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #pragma region MACRO_FUNCTION_EVALUATE | |
| #define EVAL0(...) __VA_ARGS__ | |
| #define EVAL1(...) EVAL0(EVAL0(__VA_ARGS__)) | |
| #define EVAL2(...) EVAL1(EVAL1(__VA_ARGS__)) | |
| #define EVAL3(...) EVAL2(EVAL2(__VA_ARGS__)) | |
| #define EVAL(...) EVAL3(EVAL3(__VA_ARGS__)) | |
| #define FORCE_EXPAND(macro, ...) EVAL(macro(__VA_ARGS__)) | |
| #define EXPAND_IMPL(macro, args) macro args | |
| #define EXPAND_TYPES_0() | |
| #define EXPAND_TYPES_1(A1) A1##_ | |
| #define EXPAND_TYPES_2(A1, A2) EXPAND_TYPES_1(A1), A2##_ | |
| #define EXPAND_TYPES_3(A1, A2, A3) EXPAND_TYPES_2(A1, A2), A3##_ | |
| #define EXPAND_TYPES_4(A1, A2, A3, A4) EXPAND_TYPES_3(A1, A2, A3), A4##_ | |
| #define EXPAND_TYPES_5(A1, A2, A3, A4, A5) EXPAND_TYPES_4(A1, A2, A3, A4), A5##_ | |
| #define EXPAND_TYPES_6(A1, A2, A3, A4, A5, A6) EXPAND_TYPES_5(A1, A2, A3, A4, A5), A6##_ | |
| #define EXPAND_TYPES_7(A1, A2, A3, A4, A5, A6, A7) EXPAND_TYPES_6(A1, A2, A3, A4, A5, A6), A7##_ | |
| #define EXPAND_TYPES_8(A1, A2, A3, A4, A5, A6, A7, A8) EXPAND_TYPES_7(A1, A2, A3, A4, A5, A6, A7), A8##_ | |
| #define EXPAND_TYPES_9(A1, A2, A3, A4, A5, A6, A7, A8, A9) EXPAND_TYPES_8(A1, A2, A3, A4, A5, A6, A7, A8), A9##_ | |
| #define EXPAND_TYPES_10(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) EXPAND_TYPES_9(A1, A2, A3, A4, A5, A6, A7, A8, A9), A10##_ | |
| #define EXPAND_TYPES_11(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) EXPAND_TYPES_10(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10), A11##_ | |
| #define EXPAND_TYPES_12(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) EXPAND_TYPES_11(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11), A12##_ | |
| #define EXPAND_CALLS_0() | |
| #define EXPAND_CALLS_1(A1) *(A1##_*)&actual_parameters[0] | |
| #define EXPAND_CALLS_2(A1, A2) EXPAND_CALLS_1(A1), *(A2##_*)&actual_parameters[1] | |
| #define EXPAND_CALLS_3(A1, A2, A3) EXPAND_CALLS_2(A1, A2), *(A3##_*)&actual_parameters[2] | |
| #define EXPAND_CALLS_4(A1, A2, A3, A4) EXPAND_CALLS_3(A1, A2, A3), *(A4##_*)&actual_parameters[3] | |
| #define EXPAND_CALLS_5(A1, A2, A3, A4, A5) EXPAND_CALLS_4(A1, A2, A3, A4), *(A5##_*)&actual_parameters[4] | |
| #define EXPAND_CALLS_6(A1, A2, A3, A4, A5, A6) EXPAND_CALLS_5(A1, A2, A3, A4, A5), *(A6##_*)&actual_parameters[5] | |
| #define EXPAND_CALLS_7(A1, A2, A3, A4, A5, A6, A7) EXPAND_CALLS_6(A1, A2, A3, A4, A5, A6), *(A7##_*)&actual_parameters[6] | |
| #define EXPAND_CALLS_8(A1, A2, A3, A4, A5, A6, A7, A8) EXPAND_CALLS_7(A1, A2, A3, A4, A5, A6, A7), *(A8##_*)&actual_parameters[7] | |
| #define EXPAND_CALLS_9(A1, A2, A3, A4, A5, A6, A7, A8, A9) EXPAND_CALLS_8(A1, A2, A3, A4, A5, A6, A7, A8), *(A9##_*)&actual_parameters[8] | |
| #define EXPAND_CALLS_10(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) EXPAND_CALLS_9(A1, A2, A3, A4, A5, A6, A7, A8, A9), *(A10##_*)&actual_parameters[9] | |
| #define EXPAND_CALLS_11(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) EXPAND_CALLS_10(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10), *(A11##_*)&actual_parameters[10] | |
| #define EXPAND_CALLS_12(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) EXPAND_CALLS_11(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11), *(A12##_*)&actual_parameters[11] | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_void(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) \ | |
| int32 result = 0; \ | |
| if constexpr (FORMAL_PARAMETER_COUNT == 0) \ | |
| { \ | |
| reinterpret_cast<void(__cdecl*)()>(FUNCTION)(); \ | |
| hs_return(thread_index, result); \ | |
| } \ | |
| else if (int32* actual_parameters = hs_macro_function_evaluate(function_index, thread_index, initialize)) \ | |
| { \ | |
| reinterpret_cast<void(__cdecl*)(FORCE_EXPAND(EXPAND_TYPES_##FORMAL_PARAMETER_COUNT, __VA_ARGS__))>(FUNCTION)(FORCE_EXPAND(EXPAND_CALLS_##FORMAL_PARAMETER_COUNT, __VA_ARGS__)); \ | |
| hs_return(thread_index, result); \ | |
| } | |
| #define MACRO_FUNCTION_EVALUATE_IMPL(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) \ | |
| int32 result = 0; \ | |
| if constexpr (FORMAL_PARAMETER_COUNT == 0) \ | |
| { \ | |
| *(RETURN_TYPE##_*)&result = reinterpret_cast<RETURN_TYPE##_(__cdecl*)()>(FUNCTION)(); \ | |
| hs_return(thread_index, result); \ | |
| } \ | |
| else if (int32* actual_parameters = hs_macro_function_evaluate(function_index, thread_index, initialize)) \ | |
| { \ | |
| *(RETURN_TYPE##_*)&result = reinterpret_cast<RETURN_TYPE##_(__cdecl*)(FORCE_EXPAND(EXPAND_TYPES_##FORMAL_PARAMETER_COUNT, __VA_ARGS__))>(FUNCTION)(FORCE_EXPAND(EXPAND_CALLS_##FORMAL_PARAMETER_COUNT, __VA_ARGS__)); \ | |
| hs_return(thread_index, result); \ | |
| } | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_bool(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_boolean(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_real(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_short_integer(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_long_integer(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_string(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_script(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_string_id(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_unit_seat_mapping(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_trigger_volume(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cutscene_flag(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cutscene_camera_point(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cutscene_title(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cutscene_recording(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_device_group(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai_command_list(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai_command_script(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai_behavior(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai_orders(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_ai_line(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_starting_profile(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_conversation(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_zone_set(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_designer_zone(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_point_ref(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_style(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_object_list(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_folder(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_sound(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_effect(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_damage(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_looping_sound(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_animation_graph(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_damage_effect(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_object_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_bitmap(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_shader(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_render_model_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_structure_bsp_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_structure_lightmap_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cinematic_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cinematic_scene_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_bink_definition(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_any_tag(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_any_tag_not_resolving(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_game_difficulty(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_team(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_mp_team(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_controller(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_button_preset(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_joystick_preset(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_player_color(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_player_character_type(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_voice_output_setting(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_voice_mask(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_subtitle_setting(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_actor_type(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_model_state(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_event(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_character_physics_override(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_primary_skull(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_enum_secondary_skull(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_object(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_unit(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_vehicle(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_weapon(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_device(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_scenery(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_effect_scenery(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_object_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_unit_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_vehicle_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_weapon_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_device_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_scenery_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_effect_scenery_name(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_cinematic_lightprobe(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_budget_reference_animation_graph(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_budget_reference_looping_sound(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE__hs_type_budget_reference_sound(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, ...) EXPAND_IMPL(MACRO_FUNCTION_EVALUATE_IMPL, (RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__)) | |
| #define MACRO_FUNCTION_EVALUATE(STRUCT_NAME, EXTRA_BYTES_SIZE, RETURN_TYPE, NAME, FLAGS, FUNCTION, DOCUMENTATION, PARAMETERS, FORMAL_PARAMETER_COUNT, ...) \ | |
| COMPILE_ASSERT(EXTRA_BYTES_SIZE == sizeof(int16) * FORMAL_PARAMETER_COUNT); \ | |
| COMPILE_ASSERT(VALID_COUNT(FORMAL_PARAMETER_COUNT, MAX_HS_FUNCTION_PARAMETERS)); \ | |
| void NAME##_##FUNCTION##_##FORMAL_PARAMETER_COUNT##_evaluate(int16 function_index, int32 thread_index, bool initialize) \ | |
| { \ | |
| MACRO_FUNCTION_EVALUATE_##RETURN_TYPE(RETURN_TYPE, FUNCTION, FORMAL_PARAMETER_COUNT, __VA_ARGS__) \ | |
| } \ | |
| static $##STRUCT_NAME##$_extra_bytes_##EXTRA_BYTES_SIZE NAME##_##FORMAL_PARAMETER_COUNT##_definition = \ | |
| { \ | |
| .return_type = (RETURN_TYPE), \ | |
| .name = #NAME, \ | |
| .flags = (FLAGS), \ | |
| .parse = hs_macro_function_parse, \ | |
| .evaluate = NAME##_##FUNCTION##_##FORMAL_PARAMETER_COUNT##_evaluate, \ | |
| .documentation = (DOCUMENTATION), \ | |
| .parameters = (PARAMETERS), \ | |
| .formal_parameter_count = (FORMAL_PARAMETER_COUNT), \ | |
| .formal_parameters = { __VA_ARGS__ }, \ | |
| } | |
| #pragma endregion // MACRO_FUNCTION_EVALUATE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment