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
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
type C0Native = {
numArgs: number;
readonly functionType: C0NativeFuncType,
readonly f: (
hooks: ReactUIHook,
mem: C0HeapAllocator,
...args: C0Value<C0TypeClass>[]
) => C0Value<C0TypeClass>;
};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
const native: C0Native = nativeFuncLoader(index);
// to call this native
const retval:C0Value<C0TypeClass> = native.f(hooks, mem, arg1, arg2);Last updated