Manpage logo

SPVM::Document::NativeAPI::Compiler - Compiler Native APIs

Name  Usage  Description  Compiler Native APIs  new_instance  free_instance  get_start_line  set_start_line  get_start_file  set_start_file  get_include_dirs_length  get_include_dir  add_include_dir  clear_include_dirs  add_class_file  delete_class_file  get_class_file  compile  get_error_messages_length  get_error_message  get_runtime  prepend_include_dir  compile_anon_class  compile_script  Native API IDs  See Also  Copyright & License 

Name

SPVM::Document::NativeAPI::Compiler − Compiler Native APIs

Usage

SPVM_API_COMPILER* api_compiler = env−>api−>compiler;
void* compiler = api_compiler−>new_instance();
api_compiler−>add_include_dir(compiler, "lib");
api_compiler−>set_start_file(compiler, __FILE__);
api_compiler−>get_start_line(compiler, __LINE__ + 1);
int32_t status = api_compiler−>compile(compiler, "MyClass");
api_compiler−>free_instance(compiler);

Description

The compiler native APIs in SPVM are the APIs for SPVM compilers.

Compiler Native APIs

new_instance

"void* (*new_instance)(void);"

Creates a new compiler and returns it.

free_instance

"void (*free_instance)(void* compiler);"

Frees the compiler compiler.

get_start_line

"int32_t (*get_start_line)(void* compiler);"

Returns the value of the "start_line" field. The starting line for an exception call stack is stored to this field.

set_start_line

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

Sets start_line to the "start_line" field.

get_start_file

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

Returns the value of the "start_file" field. The starting file path for an exception call stack is stored to this field.

set_start_file

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

Sets start_file to the "start_file" field.

get_include_dirs_length

"int32_t (*get_include_dirs_length)(void* compiler);"

Returns the length of the class search directories.

get_include_dir

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

Searches a class search directory given the index index.

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

add_include_dir

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

Adds include_dir at the end of the class search directories.

clear_include_dirs

"void (*clear_include_dirs)(SPVM_COMPILER* compiler);"

Removes all class search directories.

add_class_file

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

Creates the class file for the class given by class_name, and adds it to the symbol table of the compiler compiler.

If the class file already exists, nothing is performed.

delete_class_file

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

Removes the class file for the class given by the class name class_name.

get_class_file

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

Returns the class file for the class given by the class name class_name.

compile

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

Compiles the SPVM class given by the class name class_name. Classes loaded by the class and classes subsequently loaded are also compiled.

The runtime is build.

If the compilation is successful, returns 0. Otherwise, returns a non−zero value.

This native API can be called repeatedly to compile other classes.

get_error_messages_length

"int32_t (*get_error_messages_length)(void* compiler);"

Returns the length of the compilation error messages.

get_error_message

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

Searches the compiler error message given the index index.

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

get_runtime

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

Returns the runtime that is build by the compiler compiler.

prepend_include_dir

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

Prepends include_dir to the class search directory.

compile_anon_class

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

Compiles an SPVM anon class given the source code source. Classes loaded by the class and classes subsequently loaded are also compiled.

The runtime is build.

If the compilation is successful, returns 0. Otherwise, returns a non−zero value.

The generated anon class name is set to the value referenced by anon_basic_type_name_ptr.

This native API can be called repeatedly to compile other classes.

Examples:

const char* source = "
class {
use Fn;
static method main : void () {
my $var = 1;
say $var;
}
}
";

compile_script

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

Same as "compile_anon_class".

Examples:

const char* source = "
use Fn;
my $var = 1;
say $var;
";

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
18 compile_anon_class
19 compile_script

See Also

SPVM::Document::NativeAPI

SPVM::Document::NativeAPI::ClassFile

SPVM::Document::NativeAPI::Runtime

SPVM::Document::NativeClass

SPVM::Document

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License


Updated 2026-06-01 - jenkler.se | uex.se