From 708954192219feead526f84c0c8bdb29088aeae0 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 6 Jun 2014 14:14:00 -0400 Subject: objects: Use a vtable to shrink object structs. --- libdimension/torus.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libdimension/torus.c') diff --git a/libdimension/torus.c b/libdimension/torus.c index 5723fdb..dd3f9ce 100644 --- a/libdimension/torus.c +++ b/libdimension/torus.c @@ -140,7 +140,12 @@ dmnsn_torus_inside_fn(const dmnsn_object *object, dmnsn_vector point) return dmajor*dmajor + point.y*point.y < torus->minor*torus->minor; } -/* Allocate a new torus */ +/** Torus vtable. */ +static const dmnsn_object_vtable dmnsn_torus_vtable = { + .intersection_fn = dmnsn_torus_intersection_fn, + .inside_fn = dmnsn_torus_inside_fn, +}; + dmnsn_object * dmnsn_new_torus(dmnsn_pool *pool, double major, double minor) { @@ -150,8 +155,7 @@ dmnsn_new_torus(dmnsn_pool *pool, double major, double minor) dmnsn_object *object = &torus->object; dmnsn_init_object(object); - object->intersection_fn = dmnsn_torus_intersection_fn; - object->inside_fn = dmnsn_torus_inside_fn; + object->vtable = &dmnsn_torus_vtable; double extent = major + minor; object->bounding_box.min = dmnsn_new_vector(-extent, -minor, -extent); -- cgit v1.2.3