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.
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
See Also
Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License