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::Compiler - Compiler Native APIs

Usage

void* compiler = env->api->compiler->new_instance();

env->api->compiler->add_include_dir(compiler, "lib");

env->api->compiler->set_start_file(compiler, __FILE__);
env->api->compiler->get_start_line(compiler, __LINE__ + 1);
int32_t status = env->api->compiler->compile(compiler, "MyClass");

env->api->compiler->free_instance(compiler);

Description

The compiler native APIs of SPVM are the APIs to compile SPVM modules.

Compiler Native APIs

new_instance

void* (*new_instance)(void);

Creates a compiler object.

free_instance

void (*free_instance)(void* compiler);

Frees a compiler.

get_start_line

int32_t (*get_start_line)(void* compiler);

Gets the start line.

set_start_line

void (*set_start_line)(void* compiler, int32_t start_line);

Sets a start line.

get_start_file

const char* (*get_start_file)(void* compiler);

Gets the start file.

set_start_file

void (*set_start_file)(void* compiler, const char* start_file);

Set a start file.

get_include_dirs_length

int32_t (*get_include_dirs_length)(void* compiler);

Gets the length of the directories for searching modules.

get_include_dir

const char* (*get_include_dir)(void* compiler, int32_t index);

Gets a directory for searching modules by an index.

add_include_dir

void (*add_include_dir)(void* compiler, const char* include_dir);

Adds a directory for searching modules.

prepend_include_dir

void (*prepend_include_dir)(void* compiler, const char* include_dir);

Prepends a directory for searching modules.

clear_include_dirs

void (*clear_include_dirs)(SPVM_COMPILER* compiler);

Clears the directories for searching modules.

add_class_file

void (*add_class_file)(void* compiler, const char* class_name);

Adds a class file object for a module.

If the class file already exists, nothing is performed.

delete_class_file

void (*delete_class_file)(void* compiler, const char* class_name);

Deletes a class file object for a module.

get_class_file

void* (*get_class_file)(void* compiler, const char* class_name);

Gets the class file object for a module.

compile

int32_t (*compile)(void* compiler, const char* class_name);

Compiles a SPVM class.

get_error_messages_length

int32_t (*get_error_messages_length)(void* compiler);

Gets the length of the compilation error messages.

get_error_message

const char* (*get_error_message)(void* compiler, int32_t index);

Gets a compiler error message by an index.

get_runtime

void* (*get_runtime)(void* compiler);

Gets the runtime.

compile_anon_class

int32_t (*compile_anon_class)(void* compiler, const char* source, const char** anon_basic_type_name_ptr);

Compiles a SPVM anon class with a source source. The generated anon class name is set to anon_basic_type_name_ptr.

Native API IDs

0 new_instance
1 free_instance
2 get_start_line
3 set_start_line
4 get_start_file
5 set_start_file
6 get_include_dirs_length
7 get_include_dir
8 add_include_dir
9 clear_include_dirs
10 add_class_file
11 delete_class_file
12 get_class_file
13 compile
14 get_error_message
15 get_error_messages_length
16 get_runtime
17 prepend_include_dir

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License