X-Git-Url: http://git.harvie.cz/?p=svn%2FCll1h%2F.git;a=blobdiff_plain;f=demos%2Fobjects%2Fobjects-confederation.c;fp=demos%2Fobjects%2Fobjects-hierarchy.c;h=61b479878c08ea609ddd951ea22178eeed3637bf;hp=4c81c7b9aa4743e43adf3572bbb63f43923476ab;hb=29c30fdf2f28e2540573b40d95440e919553d0ae;hpb=b79112e5436c4b443c70ba3d62e4c35391224d63 diff --git a/demos/objects/objects-hierarchy.c b/demos/objects/objects-confederation.c similarity index 94% rename from demos/objects/objects-hierarchy.c rename to demos/objects/objects-confederation.c index 4c81c7b..61b4798 100644 --- a/demos/objects/objects-hierarchy.c +++ b/demos/objects/objects-confederation.c @@ -2,10 +2,7 @@ /* This is example of advanced C<<1 object oriented features... */ -def_type(Point); -def_type(Shape); - -def_mem(PointInterface) +def_interface(Point, PointInterface) { void method(move) (Shape self, int x, int y); str method(desc) (Shape self); @@ -13,22 +10,21 @@ def_mem(PointInterface) int count; }; -def_mem(ShapeInterface) +def_interface(Shape, ShapeInterface) { + federation(Point); void method(draw) (Shape self); - void method(move) (Shape self, int x, int y); - str method(desc) (Shape self); - void method(rename) (Shape self, str name); void method(reset) (Shape self, int x1, int y1, int x2, int y2, int x3, int y3); float method(area) (Shape self); int count; }; -/* This is example of hierarchical object architecture in C<<1 */ +/* This is example of non-hierarchical object federation architecture in C<<1 */ def_obj(Point) { interface(PointInterface); + shape Shape; /* this is optional, but we will use it do demonstrate power of C<<1 */ int x1, y1; str desc; } @@ -204,9 +200,11 @@ void nameRect(Shape community, str newname) construct(Tri,ShapeInterface) (Tri self, int x1, int y1, int x2, int y2, int x3, int y3) { + self->point = confederate_obj(Point); + _(move, self->point, x1, x2); self->name = "TRIANGLE"; interface_of(self)->count++; - _(reset, self, x1, y1, x2, y2, x3, y3); + _(reset, self, x2, y2, x3, y3); return self; }