The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Name

SPVM::Document::NativeAPI::BasicType - Basic Type Native APIs

Description

The basic type native APIs in SPVM are the APIs to get definition information for basic types.

Usage

  int32_t error_id
  
  SPVM_API_BASIC_TYPE* api_basic_type = env->api->basic_type;
  
  void* basic_type = env->get_basic_type(env, stack, "Int");
  
  const char* basic_type_name = api_basic_type->get_name(env->runtime, basic_type);

Native APIs

get_name

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

Returns the name of the basic type basic_type.

get_id

int32_t (*get_id)(void* runtime, void* basic_type);

Returns the ID of the basic type basic_type.

get_category

int32_t (*get_category)(void* runtime, void* basic_type);

Returns the base type category ID of the basic type basic_type.

get_parent

void* (*get_parent)(void* runtime, void* basic_type);

Returns the parent basic type object of the basic type basic_type.

get_version_string

const char* (*get_version_string)(void* runtime, void* basic_type);

Returns the version string of the basic type basic_type.

get_class_dir

const char* (*get_class_dir)(void* runtime, void* basic_type);

Returns the class directory of the basic type basic_type.

get_class_rel_file

const char* (*get_class_rel_file)(void* runtime, void* basic_type);

Returns the class relative file of the basic type basic_type.

is_pointer

int32_t (*is_pointer)(void* runtime, void* basic_type);

If the basic type basic_type is a pointer class, returns 1, otherwise returns 0.

is_anon

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

If the basic type basic_type is an anon class, returns 1, otherwise returns 0.

get_class_var_by_index

void* (*get_class_var_by_index)(void* runtime, void* basic_type, int32_t class_var_index);

Searches a class variable owned by the basic type basic_type given the class variable index class_var_index.

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

get_class_var_by_name

void* (*get_class_var_by_name)(void* runtime, void* basic_type, const char* class_var_name);

Searches a class variable owned by the basic type basic_type given the class variable name class_var_name.

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

get_class_vars_length

int32_t (*get_class_vars_length)(void* runtime, void* basic_type);

Returns the length of the class variables owned by the basic type basic_type.

get_field_by_index

void* (*get_field_by_index)(void* runtime, void* basic_type, int32_t field_index);

Searches a field owned by the basic type basic_type given the field index field_index.

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

get_field_by_name

void* (*get_field_by_name)(void* runtime, void* basic_type, const char* field_name);

Searches a field owned by the basic type basic_type given the field name field_name.

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

get_fields_length

int32_t (*get_fields_length)(void* runtime, void* basic_type);

Returns the length of the fields owned by the basic type basic_type.

get_method_by_index

void* (*get_method_by_index)(void* runtime, void* basic_type, int32_t method_index);

Searches a method owned by the basic type basic_type given the method index method_index.

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

get_method_by_name

void* (*get_method_by_name)(void* runtime, void* basic_type, const char* method_name);

Searches a method owned by the basic type basic_type given the method name method_name.

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

get_methods_length

int32_t (*get_methods_length)(void* runtime, void* basic_type);

Returns the length of the methods owned by the basic type basic_type.

get_anon_basic_type_by_index

void* (*get_anon_basic_type_by_index)(void* runtime, void* basic_type, int32_t anon_basic_type_index);

Searches an anon basic type owned by the basic type basic_type given an anon basic type index anon_basic_type_index.

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

get_anon_basic_types_length

int32_t (*get_anon_basic_types_length)(void* runtime, void* basic_type);

Returns the length of the anon basic types owned by the basic type basic_type.

has_interface

int32_t (*has_interface)(void* runtime, void* basic_type, void* interface_basic_type);

If the basic type basic_type has an interface interface_basic_type, returns 1, otherwise returns 0.

is_super_class

int32_t (*is_super_class)(void* runtime, void* super_basic_type, void* child_basic_type);

If super_basic_type is a super class of child_basic_type, returns 1, otherwise returns 0.

get_file

const char* (*get_file)(void* runtime, void* basic_type);

Returns the file path of the basic type basic_type.

This can be changed by a file directive.

  #file /tempaltes/foo.html.ep
  class Foo {
  
  }

get_current_runtime

void* (*get_current_runtime)(void* runtime, void* basic_type);

Returns the runtime that owns the basic type basic_type.

Native API IDs

  0 get_name
  1 get_id
  2 get_category
  3 get_parent
  4 get_version_string
  5 get_class_dir
  6 get_class_rel_file
  7 is_pointer
  8 is_anon
  9 get_class_var_by_index
  10 get_class_var_by_name
  11 get_class_vars_length
  12 get_field_by_index
  13 get_field_by_name
  14 get_fields_length
  15 get_method_by_index
  16 get_method_by_name
  17 get_methods_length
  18 get_anon_basic_type_by_index
  19 get_anon_basic_types_length
  20 has_interface
  21 is_super_class
  22 get_file
  23 get_current_runtime

See Aloso

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License