Stuff
This commit is contained in:
@@ -76,6 +76,48 @@ static void writeValue(FILE* f, GroundBytecodeValue* v) {
|
||||
// closures are generated at runtime, not persisted
|
||||
break;
|
||||
}
|
||||
case GroundType_List: {
|
||||
uint8_t tag = 6;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
uint64_t count = v->as.List.count;
|
||||
fwrite(&count, 8, 1, f);
|
||||
for (GroundSize i = 0; i < count; i++) {
|
||||
writeValue(f, &v->as.List.at[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GroundType_Struct: {
|
||||
uint8_t tag = 7;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
uint64_t size = v->as.Struct.size;
|
||||
fwrite(&size, 8, 1, f);
|
||||
for (GroundSize i = 0; i < size; i++) {
|
||||
writeValue(f, &v->as.Struct.values[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GroundType_Object: {
|
||||
uint8_t tag = 8;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
uint64_t size = v->as.Object.size;
|
||||
fwrite(&size, 8, 1, f);
|
||||
for (GroundSize i = 0; i < size; i++) {
|
||||
writeValue(f, &v->as.Object.values[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GroundType_Undefined: {
|
||||
uint8_t tag = 9;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
break;
|
||||
}
|
||||
case GroundType_CoreType: {
|
||||
uint8_t tag = 10;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
uint8_t coreType = (uint8_t)v->as.CoreType;
|
||||
fwrite(&coreType, 1, 1, f);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
uint8_t tag = 0xFF;
|
||||
fwrite(&tag, 1, 1, f);
|
||||
|
||||
Reference in New Issue
Block a user