=head1 Name
SPVM::Document::NativeAPI::Method - Method Native APIs
=head1 Description
The method native APIs in L<SPVM> are the APIs to get definition information
for
methods.
=head1 Usage
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);
=head1 Native APIs
=head2 get_name
C<const char* (
*get_name
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the name of the method I<method>.
=head2 get_index
C<int32_t (
*get_index
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
index
of the method I<method>. This
index
is the position of the method I<method> in its belonging class.
=head2 get_return_basic_type
C<void* (
*get_return_basic_type
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the L<basic type|SPVM::Document::NativeAPI::BasicType> of the
return
type of the method I<method>.
=head2 get_return_type_dimension
C<int32_t (
*get_return_type_dimension
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the type dimention of the
return
type of the method I<method>.
=head2 get_return_type_flag
C<int32_t (
*get_return_type_flag
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the L<type flag ID|SPVM::Document::NativeAPI/
"Type Flag IDs"
> of the
return
type of the method I<method>.
=head2 get_arg_by_index
C<void* (
*get_arg_by_index
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>, int32_t arg_index);>
Searches a L<argument|SPVM::Document::NativeAPI::Argument> at the
index
I<arg_index>.
If it is found, returns it. Otherwise, returns C<NULL>.
=head2 get_args_length
C<int32_t (
*get_args_length
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the arguments of the method I<method>.
=head2 get_required_args_length
C<int32_t (
*get_required_args_length
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the required arguments of the method I<method>.
=head2 get_current_basic_type
C<void* (
*get_current_basic_type
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the L<basic type|SPVM::Document::NativeAPI::BasicType> that owns the method I<method>.
=head2 get_opcode_by_index
C<void* (
*get_opcode_by_index
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>, int32_t opcode_index);>
Searches an operation code at the
index
I<opcode_index>.
If it is found, returns it. Otherwise, returns C<NULL>.
=head2 get_opcodes_length
C<int32_t (
*get_opcodes_length
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of operation codes.
=head2 is_class_method
C<int32_t (
*is_class_method
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
If the method I<method> is a class method, returns 1, otherwise returns 0.
=head2 is_anon
C<int32_t (
*is_anon
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
If the method I<method> is an anon method, returns 1, otherwise returns 0.
=head2 is_native
C<int32_t (
*is_native
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
If the method I<method> is a native method, returns 1, otherwise returns 0.
=head2 is_precompile
C<int32_t (
*is_precompile
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
If the method I<method> is a method
with
the C<precompile> attribute, returns 1, otherwise returns 0.
=head2 is_enum
C<int32_t (
*is_enum
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
If the method I<method> is an enumeration, returns 1, otherwise returns 0.
=head2 get_byte_vars_width
C<int32_t (
*get_byte_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<byte> type allocated by the method I<method>.
=head2 get_short_vars_width
C<int32_t (
*get_short_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<short> type allocated by the method I<method>.
=head2 get_int_vars_width
C<int32_t (
*get_int_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<
int
> type allocated by the method I<method>.
=head2 get_long_vars_width
C<int32_t (
*get_long_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<long> type allocated by the method I<method>.
=head2 get_float_vars_width
C<int32_t (
*get_float_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<float> type allocated by the method I<method>.
=head2 get_double_vars_width
C<int32_t (
*get_double_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the C<double> type allocated by the method I<method>.
=head2 get_object_vars_width
C<int32_t (
*get_object_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the object type allocated by the method I<method>.
=head2 get_ref_vars_width
C<int32_t (
*get_ref_vars_width
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the variables of the reference type allocated by the method I<method>.
=head2 get_mortal_stack_length
C<int32_t (
*get_mortal_stack_length
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the
length
of the mortal stack of the method I<method>.
=head2 get_native_address
C<void* (
*get_native_address
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the C<native_address> field of the method I<method>. The address of the machine code
for
a native method is stored to this field.
=head2 set_native_address
C<void (
*set_native_address
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>, void* address);>
Sets I<address> to the C<native_address> field of the method I<method>.
=head2 get_precompile_address
C<void* (
*get_precompile_address
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>);>
Returns the C<precompile_address> field of the method I<method>. The address of the machine code
for
a precompiled method is stored to this field.
=head2 set_precompile_address
C<void (
*set_precompile_address
)(L<void* runtime|SPVM::Document::NativeAPI::Runtime>, L<void* method|SPVM::Document::NativeAPI::Method>, void* address);>
Sets I<address> to the C<precompile_address> field of the method I<method>.
=head2 is_precompile_fallback
C<int32_t (
*is_precompile_fallback
)(void* runtime, void* method);>
Gets the C<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.
=head2
C<void (
*set_is_precompile_fallback
)(void* runtime, void* method, int32_t is_precompile_fallback);>
Sets the C<is_precompile_fallback> field to I<is_precompile_fallback>.
=head1 Native API IDs
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
=head1 See Also
=over 2
=item * L<SPVM::Document::NativeAPI>
=item * L<SPVM::Document::NativeClass>
=item * L<SPVM::Document>
=back
=head1 Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License