SPVM::D...::Method(3)

πŸ“¦ version 0.990125, in alpine 3.24

🌸 NAME 🌸

SPVM::Document::NativeAPI::Method β€” Method Native APIs

Okay bestie, this is the SPVM::Document::NativeAPI::Method page, the one your manual header files under SPVM::D...::Method(3) in User Contributed Perl Documentation. It's all about the method native APIs in SPVM, no cap. ✨

✨ DESCRIPTION ✨

The method native APIs in SPVM are the APIs to get definition information for methods. That's the whole point: you're pulling definition info for methods, and it's giving very "I know what this method is" energy. πŸ’…

🫢 USAGE 🫢

Here's the usage block exactly as it lives:

  SPVM_API_METHOD* api_method = env->api->method;

  void* basic_type = env->get_basic_type(env, stack, "Foo");

  void* method = env->api->basic_type->get_method_by_name(env->runtime, basic_type, "get");

  const char* method_name = api_method->get_name(env->runtime, method);

So you grab api_method from env->api->method, get basic_type with env->get_basic_type(...), fetch method by name, and then api_method->get_name(...) hands you method_name. Iconic. ✨

πŸ’… NATIVE APIS πŸ’…

Every single one of these, bestie. Signatures stay exact; facts stay intact. No skipping, periodt. 🫢

get_name πŸŽ€

const char* (*get_name)(void* runtime, void* method);

Returns the name of the method method.

get_index πŸ’–

int32_t (*get_index)(void* runtime, void* method);

Returns the index of the method method. This index is the position of the method method in its belonging class.

get_return_basic_type πŸ¦‹

void* (*get_return_basic_type)(void* runtime, void* method);

Returns the basic type of the return type of the method method.

get_return_type_dimension 🌸

int32_t (*get_return_type_dimension)(void* runtime, void* method);

Returns the type dimention of the return type of the method method.

get_return_type_flag ⭐

int32_t (*get_return_type_flag)(void* runtime, void* method);

Returns the type flag ID of the return type of the method method.

get_arg_by_index πŸ’œ

void* (*get_arg_by_index)(void* runtime, void* method, int32_t
       arg_index);

Searches for the argument at the index arg_index.

If it is found, returns it. Otherwise, returns NULL.

get_args_length 🧚

int32_t (*get_args_length)(void* runtime, void* method);

Returns the length of the arguments of the method method.

get_required_args_length πŸ“

int32_t (*get_required_args_length)(void* runtime, void* method);

Returns the length of the required arguments of the method method.

get_current_basic_type 🌈

void* (*get_current_basic_type)(void* runtime, void* method);

Returns the basic type that owns the method method.

get_opcode_by_index πŸ”₯

void* (*get_opcode_by_index)(void* runtime, void* method, int32_t
       opcode_index);

Searches for an operation code at the index opcode_index.

If it is found, returns it. Otherwise, returns NULL.

get_opcodes_length πŸ‘‘

int32_t (*get_opcodes_length)(void* runtime, void* method);

Returns the length of operation codes.

is_class_method πŸŽ€

int32_t (*is_class_method)(void* runtime, void* method);

If the method method is a class method, returns 1, otherwise returns 0.

is_anon πŸ’«

int32_t (*is_anon)(void* runtime, void* method);

If the method method is an anon method, returns 1, otherwise returns 0.

is_native 🧚

int32_t (*is_native)(void* runtime, void* method);

If the method method is a native method, returns 1, otherwise returns 0.

is_precompile πŸ¦‹

int32_t (*is_precompile)(void* runtime, void* method);

If the method method is a method with the precompile attribute, returns 1, otherwise returns 0.

is_enum 🌸

int32_t (*is_enum)(void* runtime, void* method);

If the method method is an enumeration, returns 1, otherwise returns 0.

get_byte_vars_width πŸ“

int32_t (*get_byte_vars_width)(void* runtime, void* method);

Returns the length of the variables of the byte type allocated by the method method.

get_short_vars_width πŸ’œ

int32_t (*get_short_vars_width)(void* runtime, void* method);

Returns the length of the variables of the short type allocated by the method method.

get_int_vars_width ⭐

int32_t (*get_int_vars_width)(void* runtime, void* method);

Returns the length of the variables of the int type allocated by the method method.

get_long_vars_width πŸ”₯

int32_t (*get_long_vars_width)(void* runtime, void* method);

Returns the length of the variables of the long type allocated by the method method.

get_float_vars_width 🌈

int32_t (*get_float_vars_width)(void* runtime, void* method);

Returns the length of the variables of the float type allocated by the method method.

get_double_vars_width πŸ’«

int32_t (*get_double_vars_width)(void* runtime, void* method);

Returns the length of the variables of the double type allocated by the method method.

get_object_vars_width 🧚

int32_t (*get_object_vars_width)(void* runtime, void* method);

Returns the length of the variables of the object type allocated by the method method.

get_ref_vars_width πŸŽ€

int32_t (*get_ref_vars_width)(void* runtime, void* method);

Returns the length of the variables of the reference type allocated by the method method.

get_mortal_stack_length πŸ‘‘

int32_t (*get_mortal_stack_length)(void* runtime, void* method);

Returns the length of the mortal stack of the method method.

get_native_address πŸ”₯

void* (*get_native_address)(void* runtime, void* method);

Returns the native_address field of the method method. The address of the machine code for a native method is stored in this field.

set_native_address πŸ’₯

void (*set_native_address)(void* runtime, void* method, void*
       address);

Sets address to the native_address field of the method method.

get_precompile_address πŸ¦‹

void* (*get_precompile_address)(void* runtime, void* method);

Returns the precompile_address field of the method method. The address of the machine code for a precompiled method is stored in this field.

set_precompile_address 🌟

void (*set_precompile_address)(void* runtime, void* method, void*
       address);

Sets address to the precompile_address field of the method method.

is_precompile_fallback πŸ’«

int32_t (*is_precompile_fallback)(void* runtime, void* method);

Gets the is_precompile_fallback field.

If this field is a true value, the precompilation method that does not have the execution address is fallback to the vm method.

set_is_precompile_fallback 🧚

void (*set_is_precompile_fallback)(void* runtime, void* method, int32_t
       is_precompile_fallback);

Sets the is_precompile_fallback field to is_precompile_fallback.

is_not_permitted 🌸

int32_t (*is_not_permitted)(void* runtime, void* method);

Gets the is_not_permitted field.

If this field is a true value, the method throws an exception with eval_error_id set to the basic type ID of L<>.

set_is_not_permitted πŸ›‘οΈ

void (*set_is_not_permitted)(void* runtime, void* method, int32_t
       is_not_permitted);

Sets the is_not_permitted field to is_not_permitted.

This native API is intended for use by browser applications that want to implement a security sandbox.

get_args_signature πŸŽ€

const char* (*get_args_signature)(void* runtime, void* method);

Returns the arguments signature of the method method.

get_abs_name πŸ‘‘

const char* (*get_abs_name)(void* runtime, void* method);

Returns the absolute name of the method method.

πŸ”₯ NATIVE API IDS πŸ”₯

The ID map is iconic and stays intact:

 0 get_name
 1 get_index
 2 get_return_basic_type
 3 get_return_type_dimension
 4 get_return_type_flag
 5 get_arg_by_index
 6 get_args_length
 7 get_required_args_length
 8 get_current_basic_type
 9 get_opcode_by_index
10 get_opcodes_length
11 is_class_method
12 is_anon
13 is_native
14 is_precompile
15 is_enum
16 get_byte_vars_width
17 get_short_vars_width
18 get_int_vars_width
19 get_long_vars_width
20 get_float_vars_width
21 get_double_vars_width
22 get_object_vars_width
23 get_ref_vars_width
24 get_mortal_stack_length
25 get_native_address
26 set_native_address
27 get_precompile_address
28 set_precompile_address
29 is_precompile_fallback
30 set_is_precompile_fallback
31 is_not_permitted
32 set_is_not_permitted
33 get_args_signature
34 get_abs_name

πŸ‘€ SEE ALSO πŸ‘€

Go look at these too, bestie:

  • SPVM::Document::NativeAPI
  • SPVM::Document::NativeClass
  • SPVM::Document

Copyright (c) 2023 Yuki Kimoto

MIT License

πŸ’€ POD ERRORS πŸ’€

Hey! The above document had some coding errors, which are explained below:

Around line 219:
    Unterminated L<...> sequence

    An empty L<>

Okay that's the whole page, bestie β€” source/version perl v5.42.2, date 2026-02-03, manual name SPVM::D...::Method(3). Go be the main character of native method APIs. πŸ’–βœ¨

πŸ“¦ where this page comes from