3 def_community(Drawable_object
,Actions
);
7 void method(init
) (Drawable_object self
, ...);
8 void method(draw
) (Drawable_object self
);
9 int method(desc
) (Drawable_object self
,int something
);
15 int x1
, y1
, x2
, y2
, x3
, y3
;
24 construct_obj(Tri
,Actions
);
26 construct_obj(Rect
,Actions
);
31 Drawable_object object
;
35 Actions
init_tri_interface(Actions
this)
37 this->init
= init_tri
;
38 this->draw
= draw_tri
;
39 this->desc
= desc_tri
;
44 Actions
init_rect_interface(Actions
this)
46 this->init
= init_tri
;
47 this->draw
= draw_rect
;
48 this->desc
= desc_rect
;
53 void draw_tri(Drawable_object community
)
57 printf("imagine I am drawing %d,%d - %d,%d - %d,%d\n",
58 self
->x1
,self
->y1
,self
->x2
,self
->y2
,self
->x3
,self
->y3
);
61 void draw_rect(Drawable_object community
)
65 printf("imagine I am drawing %d,%d - %d,%d\n",
66 self
->x1
,self
->y1
,self
->x2
,self
->y2
);
69 int desc_tri(Drawable_object community
,int something
)
73 printf("I am triangle %d,%d - %d,%d - %d,%d, method draw called with argument: %d\n",
74 self
->x1
,self
->y1
,self
->x2
,self
->y2
,self
->x3
,self
->y3
,something
);
79 int desc_rect(Drawable_object community
,int something
)
83 printf("I am rectangle %d,%d - %d,%d, method draw called with argument: %d\n",
84 self
->x1
,self
->y1
,self
->x2
,self
->y2
,something
);
89 Tri
init_tri(Drawable_object self
, int x1
, int y1
, int x2
, int y2
, int x3
, int y3
)
103 Rect
init_rect(Drawable_object self
, int x1
, int y1
, int x2
, int y2
)
117 Init_mem(tri_interface
,Actions
,init_tri_interface
);
118 Init_mem(rect_interface
,Actions
,init_rect_interface
);
119 Object_list all
= NULL
, one
= get_mem(Object_list
);
121 one
->object
= init_obj_as(Drawable_data
, Rect
, rect_interface
, 0, 10, 1, 11);
123 one
->object
= init_obj_as(Drawable_data
, Tri
, tri_interface
, 0, 0, 0, 4, 3, 0);
125 one
->object
= init_obj_as(Drawable_data
, Rect
, rect_interface
, 10, 0, 11, 1);
130 printf("(return value %d)\n", _(one
->object
,desc
));