create a ton of functions to reduce boilerplate in extlibs

This commit is contained in:
2026-06-24 21:22:48 +10:00
parent f8dbc860df
commit 5a18d14bdd
2 changed files with 47 additions and 0 deletions

View File

@@ -57,6 +57,15 @@ API_EXPORT CometOperand cometDeserializeValue(int64_t value, CometType type);
API_EXPORT void* cometArrayToCArray(CometOperand arrayValue, CometType elemType);
API_EXPORT CometOperand CArrayToCometArray(void* arrayValue, size_t length, CometType elemType);
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 int64_t cometSerializeString(char* cString);
API_EXPORT CometFunction* cometDefineFunc(
CometEnvironment* env,
char* name,
@@ -75,6 +84,8 @@ API_EXPORT CometFunction* cometDefineMethod(
...
);
API_EXPORT StructField cometCreateField(char* name, CometType type);
API_EXPORT void cometSetStructFieldsAndMethods(CometStruct* cometStruct, List(StructField) fields, List(cometFuncPtr) methods);
API_EXPORT CometStruct* cometDefineStruct(CometEnvironment* env, char* name, CometStruct* parent);

View File

@@ -21,6 +21,35 @@ CometType const cometTypeString = {
.arrayType = &stringArray
};
int8_t cometArgSmall(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeSmall).imm.smallVal;
}
int32_t cometArgInt(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeInt).imm.intVal;
}
int64_t cometArgBig(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeBig).imm.bigVal;
}
float cometArgFloat(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeFloat).imm.floatVal;
}
double cometArgDouble(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeDouble).imm.doubleVal;
}
bool cometArgBool(int64_t argVal) {
return cometDeserializeValue(argVal, cometTypeBool).imm.boolVal;
}
char* cometArgString(int64_t argVal) {
CometOperand stringArr = cometDeserializeValue(argVal, cometTypeString);
return cometArrayToCArray(stringArr, cometTypeSmall);
}
int64_t cometSerializeString(char* cString) {
CometOperand cometArray = CArrayToCometArray(cString, strlen(cString) + 1, cometTypeSmall);
return cometSerializeValue(cometArray);
}
int64_t Exception_INIT(int64_t* args, CometVM* vm) {
CometObject* exception = (CometObject*)args[0];
cometSetField(exception, 0, args[1]);
@@ -400,6 +429,13 @@ CometFunction* cometDefineMethod(
return func;
}
StructField cometCreateField(char* name, CometType type) {
return (StructField){
.name = strdup(name),
.type = type
};
}
void cometDefineConstructor(
CometEnvironment* env,
CometStruct* cometStruct,