summaryrefslogtreecommitdiff
path: root/ccc/ooc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ccc/ooc.c')
-rw-r--r--ccc/ooc.c78
1 files changed, 0 insertions, 78 deletions
diff --git a/ccc/ooc.c b/ccc/ooc.c
deleted file mode 100644
index aa20488..0000000
--- a/ccc/ooc.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "ooc.h"
-#include "stdio.h"
-#include "string.h"
-
-
-struct van {
- struct vehicle base;
- int cubic_size;
-};
-
-struct bus {
- struct vehicle base;
- int seats;
-};
-
-struct van*
-make_van()
-{
- struct van* v = malloc(sizeof(struct van));
- v->base.type = "van";
- v->cubic_size = 12;
- return v;
-}
-
-struct bus*
-make_bus()
-{
- struct bus* v = malloc(sizeof(struct bus));
- v->base.type = "bus";
- v->seats=112;
- return v;
-}
-
-struct vehicle*
-make_vehicle(const char* type)
-{
- if(!strcmp(type, "van")) return make_van();
- if(!strcmp(type, "bus")) return make_bus();
- return NULL;
-}
-
-void
-do_something_with_a_bus(struct vehicle* v)
-{
- ((struct bus*)v)->seats = 13;
-}
-
-void
-do_something_with_a_van(struct vehicle* v)
-{
- ((struct van*)v)->cubic_size = 11;
-}
-
-void
-do_something(struct vehicle* v)
-{
- if(!strcmp(v->type, "van")) return do_something_with_a_van(v);
- if(!strcmp(v->type, "bus")) return do_something_with_a_bus(v);
-}
-
-int
-main(void) {
- struct van my_van;
- struct vehicle *something = &my_van;
- my_van.cubic_size = 100;
- my_van.base.power = 99;
- printf("%d\n", something->power);
- printf("%d\n", my_van.base.power);
-
- struct bus* bus = make_vehicle("bus");
- printf("%s\n", bus->base.type);
- printf("%d\n", bus->seats);
- do_something(bus);
- printf("%d\n", bus->seats);
-
- return 0;
-}
-