Files
Comet/include/cometlib.h
SpookyDervish baada169d4 added destructors to extlibs
also removed all generic stuff from extlibs cause it will probs never work
2026-07-05 18:51:35 +10:00

98 lines
2.7 KiB
C

#ifndef COMETLIB_H
#define COMETLIB_H
#include <stdint.h>
#include <stdbool.h>
#include "vm.h"
#include "function.h"
#include "typemap.h"
#if defined(_WIN32) || defined(__CYGWIN__)
#define API_EXPORT __declspec(dllexport)
#else
#ifdef __GNUC__
#define API_EXPORT __attribute__((visibility("default")))
#else
#define API_EXPORT
#endif
#endif
#define on_import void onImport(CometEnvironment* env, CometTypeMap* typeMap)
typedef CometFunction* cometFuncPtr;
typedef struct {
char* name;
CometType type;
FieldAttribute attribute;
} StructField;
UseList(CometSerializedFunc);
UseList(cometFuncPtr);
UseList(StructField);
CometType cometCreateArrayType(CometType elem, uint8_t dimensions, bool isFixedSize[], uint64_t fixedSize[]);
API_EXPORT CometSerializedFunc cometSerializeFunction(
CometVM* vm,
CometFunction* func,
externalLibFunc funcPtr
);
API_EXPORT CometObject* cometCreateObject(CometSerializedStruct* structType);
API_EXPORT CometOperand cometValue(CometValueTypeKind valueType, ...);
API_EXPORT int8_t cometArgSmall(int64_t argVal);
API_EXPORT int32_t cometArgInt(int64_t argVal);
API_EXPORT int64_t cometArgBig(int64_t argVal);
API_EXPORT float cometArgFloat(int64_t argVal);
API_EXPORT double cometArgDouble(int64_t argVal);
API_EXPORT bool cometArgBool(int64_t argVal);
API_EXPORT char* cometArgString(int64_t argVal);
API_EXPORT uintptr_t cometArgPointer(int64_t argVal);
API_EXPORT int64_t cometSerializeString(char* cString);
API_EXPORT CometFunction* cometDefineFunc(
CometEnvironment* env,
char* name,
CometType returnType,
uint32_t numArgs,
bool isVarArgs,
...
);
API_EXPORT CometFunction* cometDefineMethod(
CometEnvironment* env,
char* name,
CometStruct* cometStruct,
CometType returnType,
uint32_t numArgs,
bool isVarArgs,
...
);
API_EXPORT StructField cometCreateField(char* name, CometType type, FieldAttribute attribute);
API_EXPORT void cometSetStructFieldsAndMethods(CometStruct* cometStruct, List(StructField) fields, List(cometFuncPtr) methods);
API_EXPORT CometStruct* cometDefineStruct(CometEnvironment* env, char* name, CometStruct* parent);
API_EXPORT void cometDefineConstructor(
CometEnvironment* env,
CometStruct* structType,
uint32_t numArgs,
bool isVarArgs,
...
);
API_EXPORT void cometDefineDestructor(
CometEnvironment* env,
CometStruct* structType
);
API_EXPORT void cometSetField(CometObject* object, uint32_t index, int64_t value);
API_EXPORT CometSerializedStruct* cometVMGetStruct(CometVM* vm, char* structName);
API_EXPORT ResultType(int64_t, objectPtr) cometError(CometVM* vm, char* errorName, char* errorMessage);
#endif