Native Function Loader
Last updated
Last updated
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 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.
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 C0Value
s.
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