Native Function Loader

Implemented in path ./src/vm_core/native, the native functions allow C0VM to do many interesting and useful things (like printing to stdout!).

This documentation will provide detailed explanation on how we transcribe C Native Functions works into TypeScript. We will also show the native functions we planned to implement and our progress on them.

Native Functions

Native functions are lower-level functions that is hard to implement using the C0 code itself / is more efficient if implemented using native code.

In C0VM, there are several categories of the native functions, listed as below:

Status Code:

🟒 Supported

🟑 Not Implemented Yet

πŸ”΄ No Plan to Implement

Category Name
Explanation
Status

Command Line Argument

Receive CLI argument, Parse CLI argument

🟑

Standard I/O

Print content to STDOUT and Receives STDIN

🟒

Cursor

Cursor related utility

πŸ”΄

Double Arithmetic

double number arithmetic operation

πŸ”΄

File I/O

File read/write operations

πŸ”΄

Float Arithmetic

float number arithmetic operation

πŸ”΄

Image

Image reading, operation and saving

πŸ”΄

Parse String

Convert string to data (int, char or boolean)

🟒

String Operation

String-related operation like concat etc.

🟒

Native Function Implementation

The native function object is defined as above.

The numArgs represent the number of argument the native function will receive.

The functionType stores the name of native function

The f stores the actual native function, which receives a ReactUIHook, a HeapAllocator and several C0Values.

Native Function Loading

Defined in ./src/vm_core/native/native_interface.ts, the function nativeFuncLoader receives an index and returns the corresponding C0Native object.

To call the corresponding native function, use syntax like

Last updated