update generate_extern.sh

This commit is contained in:
tequ
2025-11-04 14:01:37 +09:00
parent 2e6e64b1b6
commit 047b7139f7
4 changed files with 120 additions and 199 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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"

View File

@@ -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)