From 4269ef736b596ebb1fe06962bdec2d0a4be715f8 Mon Sep 17 00:00:00 2001 From: tequ Date: Thu, 30 Oct 2025 21:02:06 +0900 Subject: [PATCH] additional refactor --- src/ripple/app/hook/Enum.h | 165 +++++++++++++++++++------------------ 1 file changed, 85 insertions(+), 80 deletions(-) diff --git a/src/ripple/app/hook/Enum.h b/src/ripple/app/hook/Enum.h index 3af3d0cc75..06501fbbdb 100644 --- a/src/ripple/app/hook/Enum.h +++ b/src/ripple/app/hook/Enum.h @@ -1,3 +1,7 @@ +#ifndef GUARD_CHECKER_BUILD +#include +#include +#endif #include #include #include @@ -371,12 +375,13 @@ const double fee_base_multiplier = 1.1f; #define I32 0x7FU #define I64 0x7EU -#define HOOK_API_DEFINITION(RETURN_TYPE, FUNCTION_NAME, ...) \ - { \ - FUNCTION_NAME, \ - { \ - RETURN_TYPE, __VA_ARGS__ \ - } \ +#define HOOK_WRAP_PARAMS(...) __VA_ARGS__ +#define HOOK_API_DEFINITION(RETURN_TYPE, FUNCTION_NAME, PARAMS_TUPLE) \ + { \ +#FUNCTION_NAME, \ + { \ + RETURN_TYPE, HOOK_WRAP_PARAMS PARAMS_TUPLE \ + } \ } using APIWhitelist = std::map>; @@ -386,86 +391,86 @@ using APIWhitelist = std::map>; // code (vec[0] and its parameters vec[>0]) as wasm type codes static const APIWhitelist import_whitelist{ // clang-format off - HOOK_API_DEFINITION(I32, "_g", I32, I32), - HOOK_API_DEFINITION(I64, "accept", I32, I32, I64), - HOOK_API_DEFINITION(I64, "rollback", I32, I32, I64), - HOOK_API_DEFINITION(I64, "util_raddr", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "util_accid", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "util_verify", I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "util_sha512h", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "util_keylet", I32, I32, I32, I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "sto_validate", I32, I32), - HOOK_API_DEFINITION(I64, "sto_subfield", I32, I32, I32), - HOOK_API_DEFINITION(I64, "sto_subarray", I32, I32, I32), - HOOK_API_DEFINITION(I64, "sto_emplace", I32, I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "sto_erase", I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "etxn_burden"), - HOOK_API_DEFINITION(I64, "etxn_details", I32, I32), - HOOK_API_DEFINITION(I64, "etxn_fee_base", I32, I32), - HOOK_API_DEFINITION(I64, "etxn_reserve", I32), - HOOK_API_DEFINITION(I64, "etxn_generation"), - HOOK_API_DEFINITION(I64, "etxn_nonce", I32, I32), - HOOK_API_DEFINITION(I64, "emit", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "float_set", I32, I64), - HOOK_API_DEFINITION(I64, "float_multiply", I64, I64), - HOOK_API_DEFINITION(I64, "float_mulratio", I64, I32, I32, I32), - HOOK_API_DEFINITION(I64, "float_negate", I64), - HOOK_API_DEFINITION(I64, "float_compare", I64, I64, I32), - HOOK_API_DEFINITION(I64, "float_sum", I64, I64), - HOOK_API_DEFINITION(I64, "float_sto", I32, I32, I32, I32, I32, I32, I64, I32), - HOOK_API_DEFINITION(I64, "float_sto_set", I32, I32), - HOOK_API_DEFINITION(I64, "float_invert", I64), - HOOK_API_DEFINITION(I64, "float_divide", I64, I64), - HOOK_API_DEFINITION(I64, "float_one"), - HOOK_API_DEFINITION(I64, "float_mantissa", I64), - HOOK_API_DEFINITION(I64, "float_sign", I64), - HOOK_API_DEFINITION(I64, "float_int", I64, I32, I32), - HOOK_API_DEFINITION(I64, "float_log", I64), - HOOK_API_DEFINITION(I64, "float_root", I64, I32), - HOOK_API_DEFINITION(I64, "fee_base"), - HOOK_API_DEFINITION(I64, "ledger_seq"), - HOOK_API_DEFINITION(I64, "ledger_last_time"), - HOOK_API_DEFINITION(I64, "ledger_last_hash", I32, I32), - HOOK_API_DEFINITION(I64, "ledger_nonce", I32, I32), - HOOK_API_DEFINITION(I64, "ledger_keylet", I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "hook_account", I32, I32), - HOOK_API_DEFINITION(I64, "hook_hash", I32, I32, I32), - HOOK_API_DEFINITION(I64, "hook_param_set", I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "hook_param", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "hook_again"), - HOOK_API_DEFINITION(I64, "hook_skip", I32, I32, I32), - HOOK_API_DEFINITION(I64, "hook_pos"), - HOOK_API_DEFINITION(I64, "slot", I32, I32, I32), - HOOK_API_DEFINITION(I64, "slot_clear", I32), - HOOK_API_DEFINITION(I64, "slot_count", I32), - HOOK_API_DEFINITION(I64, "slot_set", I32, I32, I32), - HOOK_API_DEFINITION(I64, "slot_size", I32), - HOOK_API_DEFINITION(I64, "slot_subarray", I32, I32, I32), - HOOK_API_DEFINITION(I64, "slot_subfield", I32, I32, I32), - HOOK_API_DEFINITION(I64, "slot_type", I32, I32), - HOOK_API_DEFINITION(I64, "slot_float", I32), - HOOK_API_DEFINITION(I64, "state_set", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "state_foreign_set", I32, I32, I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "state", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "state_foreign", I32, I32, I32, I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "trace", I32, I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "trace_num", I32, I32, I64), - HOOK_API_DEFINITION(I64, "trace_float", I32, I32, I64), - HOOK_API_DEFINITION(I64, "otxn_burden"), - HOOK_API_DEFINITION(I64, "otxn_field", I32, I32, I32), - HOOK_API_DEFINITION(I64, "otxn_generation"), - HOOK_API_DEFINITION(I64, "otxn_id", I32, I32, I32), - HOOK_API_DEFINITION(I64, "otxn_type"), - HOOK_API_DEFINITION(I64, "otxn_slot", I32), - HOOK_API_DEFINITION(I64, "otxn_param", I32, I32, I32, I32), - HOOK_API_DEFINITION(I64, "meta_slot", I32), + HOOK_API_DEFINITION(I32, _g, (I32, I32)), + HOOK_API_DEFINITION(I64, accept, (I32, I32, I64)), + HOOK_API_DEFINITION(I64, rollback, (I32, I32, I64)), + HOOK_API_DEFINITION(I64, util_raddr, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, util_accid, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, util_verify, (I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, util_sha512h, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, util_keylet, (I32, I32, I32, I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, sto_validate, (I32, I32)), + HOOK_API_DEFINITION(I64, sto_subfield, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, sto_subarray, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, sto_emplace, (I32, I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, sto_erase, (I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, etxn_burden, ()), + HOOK_API_DEFINITION(I64, etxn_details, (I32, I32)), + HOOK_API_DEFINITION(I64, etxn_fee_base, (I32, I32)), + HOOK_API_DEFINITION(I64, etxn_reserve, (I32)), + HOOK_API_DEFINITION(I64, etxn_generation, ()), + HOOK_API_DEFINITION(I64, etxn_nonce, (I32, I32)), + HOOK_API_DEFINITION(I64, emit, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, float_set, (I32, I64)), + HOOK_API_DEFINITION(I64, float_multiply, (I64, I64)), + HOOK_API_DEFINITION(I64, float_mulratio, (I64, I32, I32, I32)), + HOOK_API_DEFINITION(I64, float_negate, (I64)), + HOOK_API_DEFINITION(I64, float_compare, (I64, I64, I32)), + HOOK_API_DEFINITION(I64, float_sum, (I64, I64)), + HOOK_API_DEFINITION(I64, float_sto, (I32, I32, I32, I32, I32, I32, I64, I32)), + HOOK_API_DEFINITION(I64, float_sto_set, (I32, I32)), + HOOK_API_DEFINITION(I64, float_invert, (I64)), + HOOK_API_DEFINITION(I64, float_divide, (I64, I64)), + HOOK_API_DEFINITION(I64, float_one, ()), + HOOK_API_DEFINITION(I64, float_mantissa, (I64)), + HOOK_API_DEFINITION(I64, float_sign, (I64)), + HOOK_API_DEFINITION(I64, float_int, (I64, I32, I32)), + HOOK_API_DEFINITION(I64, float_log, (I64)), + HOOK_API_DEFINITION(I64, float_root, (I64, I32)), + HOOK_API_DEFINITION(I64, fee_base, ()), + HOOK_API_DEFINITION(I64, ledger_seq, ()), + HOOK_API_DEFINITION(I64, ledger_last_time, ()), + HOOK_API_DEFINITION(I64, ledger_last_hash, (I32, I32)), + HOOK_API_DEFINITION(I64, ledger_nonce, (I32, I32)), + HOOK_API_DEFINITION(I64, ledger_keylet, (I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, hook_account, (I32, I32)), + HOOK_API_DEFINITION(I64, hook_hash, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, hook_param_set, (I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, hook_param, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, hook_again, ()), + HOOK_API_DEFINITION(I64, hook_skip, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, hook_pos, ()), + HOOK_API_DEFINITION(I64, slot, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, slot_clear, (I32)), + HOOK_API_DEFINITION(I64, slot_count, (I32)), + HOOK_API_DEFINITION(I64, slot_set, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, slot_size, (I32)), + HOOK_API_DEFINITION(I64, slot_subarray, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, slot_subfield, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, slot_type, (I32, I32)), + HOOK_API_DEFINITION(I64, slot_float, (I32)), + HOOK_API_DEFINITION(I64, state_set, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, state_foreign_set, (I32, I32, I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, state, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, state_foreign, (I32, I32, I32, I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, trace, (I32, I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, trace_num, (I32, I32, I64)), + HOOK_API_DEFINITION(I64, trace_float, (I32, I32, I64)), + HOOK_API_DEFINITION(I64, otxn_burden, ()), + HOOK_API_DEFINITION(I64, otxn_field, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, otxn_generation, ()), + HOOK_API_DEFINITION(I64, otxn_id, (I32, I32, I32)), + HOOK_API_DEFINITION(I64, otxn_type, ()), + HOOK_API_DEFINITION(I64, otxn_slot, (I32)), + HOOK_API_DEFINITION(I64, otxn_param, (I32, I32, I32, I32)), + HOOK_API_DEFINITION(I64, meta_slot, (I32)), // clang-format on }; // featureHooks1 static const APIWhitelist import_whitelist_1{ // clang-format off - HOOK_API_DEFINITION(I64, "xpop_slot", I32, I32) + HOOK_API_DEFINITION(I64, xpop_slot, (I32, I32)), // clang-format on };