#ifndef GROUND_EXT_H #define GROUND_EXT_H #include "groundvm.h" #ifdef __cplusplus extern "C" { #endif // Forward declaration of the scope structure used in interpreter struct GroundScope; typedef struct GroundScope GroundScope; /* * Function pointer type for native functions. * scope: The current execution scope (opaque). * args: A List of arguments passed to the function. */ typedef GroundValue (*NativeGroundFunction)(GroundScope* scope, List args); /* * Registers a native function in the given scope. * * scope: The scope to register the function in. * name: The name of the function in Ground. * fn: The C function to call. * returnType: The return type of the function. * argCount: The number of arguments the function expects. * ...: A sequence of (GroundValueType type, char* name) for each argument. */ void groundAddNativeFunction(GroundScope* scope, char* name, NativeGroundFunction fn, GroundValueType returnType, int argCount, ...); #ifdef __cplusplus } #endif #endif