create a ton of functions to reduce boilerplate in extlibs
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user