-
-
Save lumi-c/0a84df98685460d43c281fa508e86b25 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unit wren; | |
interface | |
const | |
WREN_VERSION_MAJOR = 0; | |
WREN_VERSION_MINOR = 4; | |
WREN_VERSION_PATCH = 0; | |
WREN_VERSION_STRING = '0.4.0'; | |
type | |
Pchar = ^char; | |
Plongint = ^longint; | |
PWrenConfiguration = ^WrenConfiguration; | |
PWrenHandle = ^WrenHandle; | |
PWrenVM = ^WrenVM; | |
{$IFDEF FPC} | |
{$PACKRECORDS C} | |
{$ENDIF} | |
WrenVM = record | |
end; | |
WrenHandle = record | |
end; | |
WrenReallocateFn = function (memory:pointer; newSize:size_t; userData:pointer):pointer;cdecl; | |
WrenForeignMethodFn = procedure (vm:PWrenVM);cdecl; | |
WrenFinalizerFn = procedure (data:pointer);cdecl; | |
WrenResolveModuleFn = function (vm:PWrenVM; importer:Pchar; name:Pchar):Pchar;cdecl; | |
WrenLoadModuleResult = record | |
source : Pchar; | |
onComplete : Pointer; | |
userData : pointer; | |
end; | |
WrenLoadModuleCompleteFn = procedure (vm:PWrenVM; name:Pchar; result_:WrenLoadModuleResult);cdecl; | |
WrenLoadModuleFn = function (vm:PWrenVM; name:Pchar):WrenLoadModuleResult;cdecl; | |
WrenBindForeignMethodFn = function (vm:PWrenVM; module:Pchar; className:Pchar; isStatic:boolean; signature:Pchar):WrenForeignMethodFn;cdecl; | |
WrenWriteFn = procedure (vm:PWrenVM; text:Pchar);cdecl; | |
WrenErrorType = (WREN_ERROR_COMPILE,WREN_ERROR_RUNTIME, | |
WREN_ERROR_STACK_TRACE); | |
WrenErrorFn = procedure (vm:PWrenVM; _type:WrenErrorType; module:Pchar; line:longint; message:Pchar);cdecl; | |
WrenForeignClassMethods = record | |
allocate : WrenForeignMethodFn; | |
finalize : WrenFinalizerFn; | |
end; | |
WrenBindForeignClassFn = function (vm:PWrenVM; module:Pchar; className:Pchar):WrenForeignClassMethods;cdecl; | |
WrenConfiguration = record | |
reallocateFn : WrenReallocateFn; | |
resolveModuleFn : WrenResolveModuleFn; | |
loadModuleFn : WrenLoadModuleFn; | |
bindForeignMethodFn : WrenBindForeignMethodFn; | |
bindForeignClassFn : WrenBindForeignClassFn; | |
writeFn : WrenWriteFn; | |
errorFn : WrenErrorFn; | |
initialHeapSize : size_t; | |
minHeapSize : size_t; | |
heapGrowthPercent : longint; | |
userData : pointer; | |
end; | |
WrenInterpretResult = (WREN_RESULT_SUCCESS,WREN_RESULT_COMPILE_ERROR, | |
WREN_RESULT_RUNTIME_ERROR); | |
WrenType = (WREN_TYPE_BOOL,WREN_TYPE_NUM,WREN_TYPE_FOREIGN, | |
WREN_TYPE_LIST,WREN_TYPE_MAP,WREN_TYPE_NULL, | |
WREN_TYPE_STRING,WREN_TYPE_UNKNOWN); | |
procedure wrenInitConfiguration(configuration:PWrenConfiguration)cdecl; external 'wren.dll'; | |
function wrenNewVM(configuration:PWrenConfiguration):PWrenVM; cdecl; external 'wren.dll'; | |
procedure wrenFreeVM(vm:PWrenVM);cdecl; external 'wren.dll'; | |
procedure wrenCollectGarbage(vm:PWrenVM);cdecl; external 'wren.dll'; | |
function wrenInterpret(vm:PWrenVM; module:Pchar; source:Pchar):WrenInterpretResult; cdecl; external 'wren.dll'; | |
function wrenMakeCallHandle(vm:PWrenVM; signature:Pchar):PWrenHandle; cdecl; external 'wren.dll'; | |
function wrenCall(vm:PWrenVM; method:PWrenHandle):WrenInterpretResult; cdecl; external 'wren.dll'; | |
procedure wrenReleaseHandle(vm:PWrenVM; handle:PWrenHandle); cdecl; external 'wren.dll'; | |
function wrenGetSlotCount(vm:PWrenVM):longint; cdecl; external 'wren.dll'; | |
procedure wrenEnsureSlots(vm:PWrenVM; numSlots:longint); cdecl; external 'wren.dll'; | |
function wrenGetSlotType(vm:PWrenVM; slot:longint):WrenType; cdecl; external 'wren.dll'; | |
function wrenGetSlotBool(vm:PWrenVM; slot:longint):boolean; cdecl; external 'wren.dll'; | |
function wrenGetSlotBytes(vm:PWrenVM; slot:longint; length:Plongint):Pchar; cdecl; external 'wren.dll'; | |
function wrenGetSlotDouble(vm:PWrenVM; slot:longint):double; cdecl; external 'wren.dll'; | |
function wrenGetSlotForeign(vm:PWrenVM; slot:longint):pointer; cdecl; external 'wren.dll'; | |
function wrenGetSlotString(vm:PWrenVM; slot:longint):Pchar; cdecl; external 'wren.dll'; | |
function wrenGetSlotHandle(vm:PWrenVM; slot:longint):PWrenHandle; cdecl; external 'wren.dll'; | |
procedure wrenSetSlotBool(vm:PWrenVM; slot:longint; value:boolean); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotBytes(vm:PWrenVM; slot:longint; bytes:Pchar; length:size_t); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotDouble(vm:PWrenVM; slot:longint; value:double); cdecl; external 'wren.dll'; | |
function wrenSetSlotNewForeign(vm:PWrenVM; slot:longint; classSlot:longint; size:size_t):pointer; cdecl; external 'wren.dll'; | |
procedure wrenSetSlotNewList(vm:PWrenVM; slot:longint); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotNewMap(vm:PWrenVM; slot:longint); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotNull(vm:PWrenVM; slot:longint); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotString(vm:PWrenVM; slot:longint; text:Pchar); cdecl; external 'wren.dll'; | |
procedure wrenSetSlotHandle(vm:PWrenVM; slot:longint; handle:PWrenHandle); cdecl; external 'wren.dll'; | |
function wrenGetListCount(vm:PWrenVM; slot:longint):longint; cdecl; external 'wren.dll'; | |
procedure wrenGetListElement(vm:PWrenVM; listSlot:longint; index:longint; elementSlot:longint); cdecl; external 'wren.dll'; | |
procedure wrenSetListElement(vm:PWrenVM; listSlot:longint; index:longint; elementSlot:longint); cdecl; external 'wren.dll'; | |
procedure wrenInsertInList(vm:PWrenVM; listSlot:longint; index:longint; elementSlot:longint); cdecl; external 'wren.dll'; | |
function wrenGetMapCount(vm:PWrenVM; slot:longint):longint; cdecl; external 'wren.dll'; | |
function wrenGetMapContainsKey(vm:PWrenVM; mapSlot:longint; keySlot:longint):boolean; cdecl; external 'wren.dll'; | |
procedure wrenGetMapValue(vm:PWrenVM; mapSlot:longint; keySlot:longint; valueSlot:longint); cdecl; external 'wren.dll'; | |
procedure wrenSetMapValue(vm:PWrenVM; mapSlot:longint; keySlot:longint; valueSlot:longint); cdecl; external 'wren.dll'; | |
procedure wrenRemoveMapValue(vm:PWrenVM; mapSlot:longint; keySlot:longint; removedValueSlot:longint); cdecl; external 'wren.dll'; | |
procedure wrenGetVariable(vm:PWrenVM; module:Pchar; name:Pchar; slot:longint); cdecl; external 'wren.dll'; | |
function wrenHasVariable(vm:PWrenVM; module:Pchar; name:Pchar):boolean; cdecl; external 'wren.dll'; | |
function wrenHasModule(vm:PWrenVM; module:Pchar):boolean; cdecl; external 'wren.dll'; | |
procedure wrenAbortFiber(vm:PWrenVM; slot:longint); cdecl; external 'wren.dll'; | |
function wrenGetUserData(vm:PWrenVM):pointer; cdecl; external 'wren.dll'; | |
procedure wrenSetUserData(vm:PWrenVM; userData:pointer); cdecl; external 'wren.dll'; | |
implementation | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment