diff --git a/.github/workflows/verify-generated-headers.yml b/.github/workflows/verify-generated-headers.yml index 4120f7b7f9..ce4d382ed5 100644 --- a/.github/workflows/verify-generated-headers.yml +++ b/.github/workflows/verify-generated-headers.yml @@ -24,6 +24,15 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Download and install clang-format + run: | + sudo apt-get update -y + sudo apt-get install -y libtinfo5 + curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz + tar -xf clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz + sudo mv clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04 /opt/clang-10 + sudo ln -s /opt/clang-10/bin/clang-format /usr/local/bin/clang-format-10 + - name: Verify ${{ matrix.target }} run: | set -euo pipefail diff --git a/hook/extern.h b/hook/extern.h index ee34af6ff8..667cec2a4c 100644 --- a/hook/extern.h +++ b/hook/extern.h @@ -82,7 +82,7 @@ sto_erase( uint32_t field_id); extern int64_t -etxn_burden(void); +etxn_burden(); extern int64_t etxn_details(uint32_t write_ptr, uint32_t write_len); @@ -94,7 +94,7 @@ extern int64_t etxn_reserve(uint32_t count); extern int64_t -etxn_generation(void); +etxn_generation(); extern int64_t etxn_nonce(uint32_t write_ptr, uint32_t write_len); @@ -149,7 +149,7 @@ extern int64_t float_divide(int64_t float1, int64_t float2); extern int64_t -float_one(void); +float_one(); extern int64_t float_mantissa(int64_t float1); @@ -167,13 +167,13 @@ extern int64_t float_root(int64_t float1, uint32_t n); extern int64_t -fee_base(void); +fee_base(); extern int64_t -ledger_seq(void); +ledger_seq(); extern int64_t -ledger_last_time(void); +ledger_last_time(); extern int64_t ledger_last_hash(uint32_t write_ptr, uint32_t write_len); @@ -213,13 +213,13 @@ hook_param( uint32_t read_len); extern int64_t -hook_again(void); +hook_again(); extern int64_t hook_skip(uint32_t read_ptr, uint32_t read_len, uint32_t flags); extern int64_t -hook_pos(void); +hook_pos(); extern int64_t slot(uint32_t write_ptr, uint32_t write_len, uint32_t slot); @@ -299,19 +299,19 @@ extern int64_t trace_float(uint32_t read_ptr, uint32_t read_len, int64_t float1); extern int64_t -otxn_burden(void); +otxn_burden(); extern int64_t otxn_field(uint32_t write_ptr, uint32_t write_len, uint32_t field_id); extern int64_t -otxn_generation(void); +otxn_generation(); extern int64_t otxn_id(uint32_t write_ptr, uint32_t write_len, uint32_t flags); extern int64_t -otxn_type(void); +otxn_type(); extern int64_t otxn_slot(uint32_t slot_no); diff --git a/hook/generate_extern.sh b/hook/generate_extern.sh index 2e9598ad02..7a6a2f9ea1 100755 --- a/hook/generate_extern.sh +++ b/hook/generate_extern.sh @@ -4,7 +4,9 @@ set -eu SCRIPT_DIR=$(dirname "$0") SCRIPT_DIR=$(cd "$SCRIPT_DIR" && pwd) -APPLY_HOOK="$SCRIPT_DIR/../src/ripple/app/hook/applyHook.h" +APPLY_HOOK="$SCRIPT_DIR/../src/ripple/app/hook/hook_api.macro" +TMPFILE=$(mktemp) +TMPFILE=$(cd "$(dirname "$TMPFILE")" && pwd)/$(basename "$TMPFILE") { echo '// For documentation please see: https://xrpl-hooks.readme.io/reference/' @@ -19,127 +21,37 @@ APPLY_HOOK="$SCRIPT_DIR/../src/ripple/app/hook/applyHook.h" return s; } - function emit(ret, name, argc, argt, argn) { - attr = (name == "_g") ? " __attribute__((noduplicate))" : ""; - if (!first) - printf("\n"); - first = 0; - printf("extern %s%s\n", ret, attr); - if (argc == 0) { - printf("%s(void);\n", name); - return; - } - if (argc <= 3) { - line = argt[1] " " argn[1]; - for (i = 2; i <= argc; ++i) - line = line ", " argt[i] " " argn[i]; - printf("%s(%s);\n", name, line); - return; - } - printf("%s(\n", name); - for (i = 1; i <= argc; ++i) { - sep = (i < argc) ? "," : ");"; - printf(" %s %s%s\n", argt[i], argn[i], sep); - } - } - - function process(buffer, kind, payload, parts, n, i, arg, tokens, argc, argt, argn) { - if (kind == "func") - sub(/^DECLARE_HOOK_FUNCTION[[:space:]]*\(/, "", buffer); - else - sub(/^DECLARE_HOOK_FUNCNARG[[:space:]]*\(/, "", buffer); - buffer = trim(buffer); - sub(/\)[[:space:]]*$/, "", buffer); - n = split(buffer, parts, ","); - for (i = 1; i <= n; ++i) - parts[i] = trim(parts[i]); - ret = parts[1]; - name = parts[2]; - argc = 0; - delete argt; - delete argn; - for (i = 3; i <= n; ++i) { - arg = parts[i]; - if (arg == "") - continue; - split(arg, tokens, /[[:space:]]+/); - if (length(tokens) < 2) - continue; - ++argc; - argt[argc] = tokens[1]; - argn[argc] = tokens[2]; - } - emit(ret, name, argc, argt, argn); - } - - BEGIN { - first = 1; - in_block = 0; - in_macro = 0; - } - { line = $0; - if (in_block) { - if (line ~ /\*\//) { - sub(/.*\*\//, "", line); - in_block = 0; - } - else - next; - } - while (line ~ /\/\*/) { - if (line ~ /\/\*.*\*\//) { - gsub(/\/\*.*\*\//, "", line); - } - else { - sub(/\/\*.*/, "", line); - in_block = 1; - break; - } - } - sub(/\/\/.*$/, "", line); - line = trim(line); - if (line == "") - next; - - if (!in_macro && line ~ /^DECLARE_HOOK_FUNCTION\(/) { - buffer = line; - kind = "func"; - if (line ~ /\);[[:space:]]*$/) { - sub(/\);[[:space:]]*$/, "", buffer); - process(buffer, kind); - } - else - in_macro = 1; + + # Skip block comments + if (line ~ /\/\*/) { next; } - if (!in_macro && line ~ /^DECLARE_HOOK_FUNCNARG\(/) { - buffer = line; - kind = "narg"; - if (line ~ /\);[[:space:]]*$/) { - sub(/\);[[:space:]]*$/, "", buffer); - process(buffer, kind); + + # Look for comment lines that start with // and contain function signature + if (line ~ /^[[:space:]]*\/\/[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]+[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]*\(/) { + # Remove leading // and trim + sub(/^[[:space:]]*\/\/[[:space:]]*/, "", line); + line = trim(line); + + # Check if function name is "_g" to add attribute + if (line ~ /[[:space:]]+_g[[:space:]]*\(/) { + # Insert __attribute__((noduplicate)) before _g + sub(/[[:space:]]+_g/, " __attribute__((noduplicate)) _g", line); } - else - in_macro = 1; - next; + + # printf("\n"); + + printf("extern %s\n\n", line); } - if (in_macro) { - buffer = buffer " " line; - if (line ~ /\);[[:space:]]*$/) { - sub(/\);[[:space:]]*$/, "", buffer); - process(buffer, kind); - in_macro = 0; - } - } - } - - END { - printf("\n"); } ' "$APPLY_HOOK" echo '#define HOOK_EXTERN' echo '#endif // HOOK_EXTERN' -} +} > "$TMPFILE" + +cd "$SCRIPT_DIR/.." +clang-format --style=file "$TMPFILE" +rm "$TMPFILE" diff --git a/src/ripple/app/hook/hook_api.macro b/src/ripple/app/hook/hook_api.macro index fa9683e2af..d0d479a547 100644 --- a/src/ripple/app/hook/hook_api.macro +++ b/src/ripple/app/hook/hook_api.macro @@ -1,221 +1,221 @@ -// int32_t _g(uint32_t guard_id, uint32_t maxiter) +// int32_t _g(uint32_t guard_id, uint32_t maxiter); HOOK_API_DEFINITION(int32_t, _g, (uint32_t, uint32_t), uint256{}) -// int64_t accept(uint32_t read_ptr, uint32_t read_len, int64_t error_code) +// int64_t accept(uint32_t read_ptr, uint32_t read_len, int64_t error_code); HOOK_API_DEFINITION(int64_t, accept, (uint32_t, uint32_t, int64_t), uint256{}) -// int64_t rollback(uint32_t read_ptr, uint32_t read_len, int64_t error_code) +// int64_t rollback(uint32_t read_ptr, uint32_t read_len, int64_t error_code); HOOK_API_DEFINITION(int64_t, rollback, (uint32_t, uint32_t, int64_t), uint256{}) -// int64_t util_raddr(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t util_raddr(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, util_raddr, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t util_accid(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t util_accid(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, util_accid, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t util_verify(uint32_t dread_ptr, uint32_t dread_len, uint32_t sread_ptr, uint32_t sread_len, uint32_t kread_ptr, uint32_t kread_len) +// int64_t util_verify(uint32_t dread_ptr, uint32_t dread_len, uint32_t sread_ptr, uint32_t sread_len, uint32_t kread_ptr, uint32_t kread_len); HOOK_API_DEFINITION(int64_t, util_verify, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t util_sha512h(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t util_sha512h(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, util_sha512h, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t util_keylet(uint32_t write_ptr, uint32_t write_len, uint32_t keylet_type, uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t e, uint32_t f) +// int64_t util_keylet(uint32_t write_ptr, uint32_t write_len, uint32_t keylet_type, uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t e, uint32_t f); HOOK_API_DEFINITION(int64_t, util_keylet, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t sto_validate(uint32_t tread_ptr, uint32_t tread_len) +// int64_t sto_validate(uint32_t tread_ptr, uint32_t tread_len); HOOK_API_DEFINITION(int64_t, sto_validate, (uint32_t, uint32_t), uint256{}) -// int64_t sto_subfield(uint32_t read_ptr, uint32_t read_len, uint32_t field_id) +// int64_t sto_subfield(uint32_t read_ptr, uint32_t read_len, uint32_t field_id); HOOK_API_DEFINITION(int64_t, sto_subfield, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t sto_subarray(uint32_t read_ptr, uint32_t read_len, uint32_t array_id) +// int64_t sto_subarray(uint32_t read_ptr, uint32_t read_len, uint32_t array_id); HOOK_API_DEFINITION(int64_t, sto_subarray, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t sto_emplace(uint32_t write_ptr, uint32_t write_len, uint32_t sread_ptr, uint32_t sread_len, uint32_t fread_ptr, uint32_t fread_len, uint32_t field_id) +// int64_t sto_emplace(uint32_t write_ptr, uint32_t write_len, uint32_t sread_ptr, uint32_t sread_len, uint32_t fread_ptr, uint32_t fread_len, uint32_t field_id); HOOK_API_DEFINITION(int64_t, sto_emplace, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t sto_erase(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len, uint32_t field_id) +// int64_t sto_erase(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len, uint32_t field_id); HOOK_API_DEFINITION(int64_t, sto_erase, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t etxn_burden() +// int64_t etxn_burden(); HOOK_API_DEFINITION(int64_t, etxn_burden, (), uint256{}) -// int64_t etxn_details(uint32_t write_ptr, uint32_t write_len) +// int64_t etxn_details(uint32_t write_ptr, uint32_t write_len); HOOK_API_DEFINITION(int64_t, etxn_details, (uint32_t, uint32_t), uint256{}) -// int64_t etxn_fee_base(uint32_t read_ptr, uint32_t read_len) +// int64_t etxn_fee_base(uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, etxn_fee_base, (uint32_t, uint32_t), uint256{}) -// int64_t etxn_reserve(uint32_t count) +// int64_t etxn_reserve(uint32_t count); HOOK_API_DEFINITION(int64_t, etxn_reserve, (uint32_t), uint256{}) -// int64_t etxn_generation() +// int64_t etxn_generation(); HOOK_API_DEFINITION(int64_t, etxn_generation, (), uint256{}) -// int64_t etxn_nonce(uint32_t write_ptr, uint32_t write_len) +// int64_t etxn_nonce(uint32_t write_ptr, uint32_t write_len); HOOK_API_DEFINITION(int64_t, etxn_nonce, (uint32_t, uint32_t), uint256{}) -// int64_t emit(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t emit(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, emit, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t float_set(int32_t exponent, int64_t mantissa) +// int64_t float_set(int32_t exponent, int64_t mantissa); HOOK_API_DEFINITION(int64_t, float_set, (int32_t, int64_t), uint256{}) -// int64_t float_multiply(int64_t float1, int64_t float2) +// int64_t float_multiply(int64_t float1, int64_t float2); HOOK_API_DEFINITION(int64_t, float_multiply, (int64_t, int64_t), uint256{}) -// int64_t float_mulratio(int64_t float1, uint32_t round_up, uint32_t numerator, uint32_t denominator) +// int64_t float_mulratio(int64_t float1, uint32_t round_up, uint32_t numerator, uint32_t denominator); HOOK_API_DEFINITION(int64_t, float_mulratio, (int64_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t float_negate(int64_t float1) +// int64_t float_negate(int64_t float1); HOOK_API_DEFINITION(int64_t, float_negate, (int64_t), uint256{}) -// int64_t float_compare(int64_t float1, int64_t float2, uint32_t mode) +// int64_t float_compare(int64_t float1, int64_t float2, uint32_t mode); HOOK_API_DEFINITION(int64_t, float_compare, (int64_t, int64_t, uint32_t), uint256{}) -// int64_t float_sum(int64_t float1, int64_t float2) +// int64_t float_sum(int64_t float1, int64_t float2); HOOK_API_DEFINITION(int64_t, float_sum, (int64_t, int64_t), uint256{}) -// int64_t float_sto(uint32_t write_ptr, uint32_t write_len, uint32_t cread_ptr, uint32_t cread_len, uint32_t iread_ptr, uint32_t iread_len, int64_t float1, uint32_t field_code) +// int64_t float_sto(uint32_t write_ptr, uint32_t write_len, uint32_t cread_ptr, uint32_t cread_len, uint32_t iread_ptr, uint32_t iread_len, int64_t float1, uint32_t field_code); HOOK_API_DEFINITION(int64_t, float_sto, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, int64_t, uint32_t), uint256{}) -// int64_t float_sto_set(uint32_t read_ptr, uint32_t read_len) +// int64_t float_sto_set(uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, float_sto_set, (uint32_t, uint32_t), uint256{}) -// int64_t float_invert(int64_t float1) +// int64_t float_invert(int64_t float1); HOOK_API_DEFINITION(int64_t, float_invert, (int64_t), uint256{}) -// int64_t float_divide(int64_t float1, int64_t float2) +// int64_t float_divide(int64_t float1, int64_t float2); HOOK_API_DEFINITION(int64_t, float_divide, (int64_t, int64_t), uint256{}) -// int64_t float_one() +// int64_t float_one(); HOOK_API_DEFINITION(int64_t, float_one, (), uint256{}) -// int64_t float_mantissa(int64_t float1) +// int64_t float_mantissa(int64_t float1); HOOK_API_DEFINITION(int64_t, float_mantissa, (int64_t), uint256{}) -// int64_t float_sign(int64_t float1) +// int64_t float_sign(int64_t float1); HOOK_API_DEFINITION(int64_t, float_sign, (int64_t), uint256{}) -// int64_t float_int(int64_t float1, uint32_t decimal_places, uint32_t abs) +// int64_t float_int(int64_t float1, uint32_t decimal_places, uint32_t abs); HOOK_API_DEFINITION(int64_t, float_int, (int64_t, uint32_t, uint32_t), uint256{}) -// int64_t float_log(int64_t float1) +// int64_t float_log(int64_t float1); HOOK_API_DEFINITION(int64_t, float_log, (int64_t), uint256{}) -// int64_t float_root(int64_t float1, uint32_t n) +// int64_t float_root(int64_t float1, uint32_t n); HOOK_API_DEFINITION(int64_t, float_root, (int64_t, uint32_t), uint256{}) -// int64_t fee_base() +// int64_t fee_base(); HOOK_API_DEFINITION(int64_t, fee_base, (), uint256{}) -// int64_t ledger_seq() +// int64_t ledger_seq(); HOOK_API_DEFINITION(int64_t, ledger_seq, (), uint256{}) -// int64_t ledger_last_time() +// int64_t ledger_last_time(); HOOK_API_DEFINITION(int64_t, ledger_last_time, (), uint256{}) -// int64_t ledger_last_hash(uint32_t write_ptr, uint32_t write_len) +// int64_t ledger_last_hash(uint32_t write_ptr, uint32_t write_len); HOOK_API_DEFINITION(int64_t, ledger_last_hash, (uint32_t, uint32_t), uint256{}) -// int64_t ledger_nonce(uint32_t write_ptr, uint32_t write_len) +// int64_t ledger_nonce(uint32_t write_ptr, uint32_t write_len); HOOK_API_DEFINITION(int64_t, ledger_nonce, (uint32_t, uint32_t), uint256{}) -// int64_t ledger_keylet(uint32_t write_ptr, uint32_t write_len, uint32_t lread_ptr, uint32_t lread_len, uint32_t hread_ptr, uint32_t hread_len) +// int64_t ledger_keylet(uint32_t write_ptr, uint32_t write_len, uint32_t lread_ptr, uint32_t lread_len, uint32_t hread_ptr, uint32_t hread_len); HOOK_API_DEFINITION(int64_t, ledger_keylet, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t hook_account(uint32_t write_ptr, uint32_t write_len) +// int64_t hook_account(uint32_t write_ptr, uint32_t write_len); HOOK_API_DEFINITION(int64_t, hook_account, (uint32_t, uint32_t), uint256{}) -// int64_t hook_hash(uint32_t write_ptr, uint32_t write_len, int32_t hook_no) +// int64_t hook_hash(uint32_t write_ptr, uint32_t write_len, int32_t hook_no); HOOK_API_DEFINITION(int64_t, hook_hash, (uint32_t, uint32_t, int32_t), uint256{}) -// int64_t hook_param_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t hread_ptr, uint32_t hread_len) +// int64_t hook_param_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t hread_ptr, uint32_t hread_len); HOOK_API_DEFINITION(int64_t, hook_param_set, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t hook_param(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t hook_param(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, hook_param, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t hook_again() +// int64_t hook_again(); HOOK_API_DEFINITION(int64_t, hook_again, (), uint256{}) -// int64_t hook_skip(uint32_t read_ptr, uint32_t read_len, uint32_t flags) +// int64_t hook_skip(uint32_t read_ptr, uint32_t read_len, uint32_t flags); HOOK_API_DEFINITION(int64_t, hook_skip, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t hook_pos() +// int64_t hook_pos(); HOOK_API_DEFINITION(int64_t, hook_pos, (), uint256{}) -// int64_t slot(uint32_t write_ptr, uint32_t write_len, uint32_t slot) +// int64_t slot(uint32_t write_ptr, uint32_t write_len, uint32_t slot); HOOK_API_DEFINITION(int64_t, slot, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t slot_clear(uint32_t slot) +// int64_t slot_clear(uint32_t slot); HOOK_API_DEFINITION(int64_t, slot_clear, (uint32_t), uint256{}) -// int64_t slot_count(uint32_t slot) +// int64_t slot_count(uint32_t slot); HOOK_API_DEFINITION(int64_t, slot_count, (uint32_t), uint256{}) -// int64_t slot_set(uint32_t read_ptr, uint32_t read_len, uint32_t slot) +// int64_t slot_set(uint32_t read_ptr, uint32_t read_len, uint32_t slot); HOOK_API_DEFINITION(int64_t, slot_set, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t slot_size(uint32_t slot) +// int64_t slot_size(uint32_t slot); HOOK_API_DEFINITION(int64_t, slot_size, (uint32_t), uint256{}) -// int64_t slot_subarray(uint32_t parent_slot, uint32_t array_id, uint32_t new_slot) +// int64_t slot_subarray(uint32_t parent_slot, uint32_t array_id, uint32_t new_slot); HOOK_API_DEFINITION(int64_t, slot_subarray, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t slot_subfield(uint32_t parent_slot, uint32_t field_id, uint32_t new_slot) +// int64_t slot_subfield(uint32_t parent_slot, uint32_t field_id, uint32_t new_slot); HOOK_API_DEFINITION(int64_t, slot_subfield, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t slot_type(uint32_t slot_no, uint32_t flags) +// int64_t slot_type(uint32_t slot_no, uint32_t flags); HOOK_API_DEFINITION(int64_t, slot_type, (uint32_t, uint32_t), uint256{}) -// int64_t slot_float(uint32_t slot_no) +// int64_t slot_float(uint32_t slot_no); HOOK_API_DEFINITION(int64_t, slot_float, (uint32_t), uint256{}) -// int64_t state_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len) +// int64_t state_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len); HOOK_API_DEFINITION(int64_t, state_set, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t state_foreign_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t nread_ptr, uint32_t nread_len, uint32_t aread_ptr, uint32_t aread_len) +// int64_t state_foreign_set(uint32_t read_ptr, uint32_t read_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t nread_ptr, uint32_t nread_len, uint32_t aread_ptr, uint32_t aread_len); HOOK_API_DEFINITION(int64_t, state_foreign_set, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t state(uint32_t write_ptr, uint32_t write_len, uint32_t kread_ptr, uint32_t kread_len) +// int64_t state(uint32_t write_ptr, uint32_t write_len, uint32_t kread_ptr, uint32_t kread_len); HOOK_API_DEFINITION(int64_t, state, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t state_foreign(uint32_t write_ptr, uint32_t write_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t nread_ptr, uint32_t nread_len, uint32_t aread_ptr, uint32_t aread_len) +// int64_t state_foreign(uint32_t write_ptr, uint32_t write_len, uint32_t kread_ptr, uint32_t kread_len, uint32_t nread_ptr, uint32_t nread_len, uint32_t aread_ptr, uint32_t aread_len); HOOK_API_DEFINITION(int64_t, state_foreign, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t trace(uint32_t mread_ptr, uint32_t mread_len, uint32_t dread_ptr, uint32_t dread_len, uint32_t as_hex) +// int64_t trace(uint32_t mread_ptr, uint32_t mread_len, uint32_t dread_ptr, uint32_t dread_len, uint32_t as_hex); HOOK_API_DEFINITION(int64_t, trace, (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t trace_num(uint32_t read_ptr, uint32_t read_len, int64_t number) +// int64_t trace_num(uint32_t read_ptr, uint32_t read_len, int64_t number); HOOK_API_DEFINITION(int64_t, trace_num, (uint32_t, uint32_t, int64_t), uint256{}) -// int64_t trace_float(uint32_t read_ptr, uint32_t read_len, int64_t float1) +// int64_t trace_float(uint32_t read_ptr, uint32_t read_len, int64_t float1); HOOK_API_DEFINITION(int64_t, trace_float, (uint32_t, uint32_t, int64_t), uint256{}) -// int64_t otxn_burden() +// int64_t otxn_burden(); HOOK_API_DEFINITION(int64_t, otxn_burden, (), uint256{}) -// int64_t otxn_field(uint32_t write_ptr, uint32_t write_len, uint32_t field_id) +// int64_t otxn_field(uint32_t write_ptr, uint32_t write_len, uint32_t field_id); HOOK_API_DEFINITION(int64_t, otxn_field, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t otxn_generation() +// int64_t otxn_generation(); HOOK_API_DEFINITION(int64_t, otxn_generation, (), uint256{}) -// int64_t otxn_id(uint32_t write_ptr, uint32_t write_len, uint32_t flags) +// int64_t otxn_id(uint32_t write_ptr, uint32_t write_len, uint32_t flags); HOOK_API_DEFINITION(int64_t, otxn_id, (uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t otxn_type() +// int64_t otxn_type(); HOOK_API_DEFINITION(int64_t, otxn_type, (), uint256{}) -// int64_t otxn_slot(uint32_t slot_no) +// int64_t otxn_slot(uint32_t slot_no); HOOK_API_DEFINITION(int64_t, otxn_slot, (uint32_t), uint256{}) -// int64_t otxn_param(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len) +// int64_t otxn_param(uint32_t write_ptr, uint32_t write_len, uint32_t read_ptr, uint32_t read_len); HOOK_API_DEFINITION(int64_t, otxn_param, (uint32_t, uint32_t, uint32_t, uint32_t), uint256{}) -// int64_t meta_slot(uint32_t slot_no) +// int64_t meta_slot(uint32_t slot_no); HOOK_API_DEFINITION(int64_t, meta_slot, (uint32_t), uint256{}) -// int64_t xpop_slot(uint32_t slot_no_tx, uint32_t slot_no_meta) +// int64_t xpop_slot(uint32_t slot_no_tx, uint32_t slot_no_meta); HOOK_API_DEFINITION(int64_t, xpop_slot, (uint32_t, uint32_t), featureHooksUpdate1)