aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/object.c
diff options
context:
space:
mode:
authorGravatar Tom Willemse2022-08-12 23:18:02 -0700
committerGravatar Tom Willemse2022-08-12 23:18:02 -0700
commitf4185577e56a893b9375bc94d71bef5f9eb51891 (patch)
tree656ef8538ad937ed873374b69588d66ae9b5190e /clox/src/object.c
parentf1e60bd6413fab1959400a3346a14177bbf2af7a (diff)
downloadcrafting-interpreters-f4185577e56a893b9375bc94d71bef5f9eb51891.tar.gz
crafting-interpreters-f4185577e56a893b9375bc94d71bef5f9eb51891.zip
Chapter 27.3
Diffstat (limited to 'clox/src/object.c')
-rw-r--r--clox/src/object.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/clox/src/object.c b/clox/src/object.c
index 935a258..a431314 100644
--- a/clox/src/object.c
+++ b/clox/src/object.c
@@ -53,6 +53,13 @@ ObjFunction *newFunction() {
return function;
}
+ObjInstance *newInstance(ObjClass *klass) {
+ ObjInstance *instance = ALLOCATE_OBJ(ObjInstance, OBJ_INSTANCE);
+ instance->klass = klass;
+ initTable(&instance->fields);
+ return instance;
+}
+
ObjNative *newNative(NativeFn function) {
ObjNative *native = ALLOCATE_OBJ(ObjNative, OBJ_NATIVE);
native->function = function;
@@ -131,6 +138,9 @@ void printObject(Value value) {
case OBJ_FUNCTION:
printFunction(AS_FUNCTION(value));
break;
+ case OBJ_INSTANCE:
+ printf("%s instance", AS_INSTANCE(value)->klass->name->chars);
+ break;
case OBJ_NATIVE:
printf("<native fn>");
break;