diff options
Diffstat (limited to 'src/examples/eina_model_04_human.c')
-rw-r--r-- | src/examples/eina_model_04_human.c | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/examples/eina_model_04_human.c b/src/examples/eina_model_04_human.c deleted file mode 100644 index d9a10ab..0000000 --- a/src/examples/eina_model_04_human.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * human.c - * - */ - -#include "eina_model_04_human.h" -#include "eina_model_04_whistler.h" - -static Eina_Bool initialized = EINA_FALSE; - -static void -_human_eat(Eina_Model *m) -{ - printf("%s\t%s", eina_model_type_name_get(eina_model_type_get(m)), - __func__); - printf("\t\t Salad\n"); -} - -static void -_human_walk(Eina_Model *m) -{ - printf("%s\t%s", eina_model_type_name_get(eina_model_type_get(m)), - __func__); - printf("\t\t Walk\n"); -} - -static void -_human_whistle(Eina_Model *m) -{ - printf("%s\t%s", eina_model_type_name_get(eina_model_type_get(m)), - __func__); - printf("\t\t Whistle Human\n"); -} - -static void -_human_swim(Eina_Model *m) -{ - printf("%s\t%s", eina_model_type_name_get(eina_model_type_get(m)), - __func__); - printf("\t\t Swim Human\n"); -} - -static void -_human_dive(Eina_Model *m) -{ - printf("%s\t%s", eina_model_type_name_get(eina_model_type_get(m)), - __func__); - printf("\t\t Dive Human\n"); -} -/* - * defining Human Model Instance - * defining Whistler Interface instance - * defining Swimmer Interface instance - * defining Diver Interface instance - */ - -const char *HUMAN_MODEL_TYPE_NAME = NULL; - -static Human_Type _HUMAN_TYPE; -const Eina_Model_Type * const HUMAN_TYPE = (Eina_Model_Type *) &_HUMAN_TYPE; - -static const Whistler_Interface _WHISTLER_INTERFACE; -static const Eina_Model_Interface * const WHISTLER_INTERFACE = - (Eina_Model_Interface *) &_WHISTLER_INTERFACE; - -static const Swimmer_Interface _SWIMMER_INTERFACE; -static const Eina_Model_Interface * const SWIMMER_INTERFACE = - (Eina_Model_Interface *) &_SWIMMER_INTERFACE; - -static const Diver_Interface _DIVER_INTERFACE; -static const Eina_Model_Interface * const DIVER_INTERFACE = - (Eina_Model_Interface *) &_DIVER_INTERFACE; - -/* - * defining parent interfaces for Diver Interface instance - * defining Interfaces for Human Model instance - */ -static const Eina_Model_Interface * PARENT_INTERFACES_ARRAY[] = - { &_SWIMMER_INTERFACE.base_interface, NULL }; //this array is for model -static const Eina_Model_Interface * MODEL_INTERFACES_ARRAY[] = - { &_WHISTLER_INTERFACE.base_interface, &_DIVER_INTERFACE.base_interface, - NULL }; //this array is for model - -void -human_init() -{ - Eina_Model_Type *type; - - if (initialized) return; - initialized = EINA_TRUE; - - animal_init(); - - /* - * Initializing Whistler Interface Instance - */ - Eina_Model_Interface *iface = (Eina_Model_Interface *) &_WHISTLER_INTERFACE; - iface->version = EINA_MODEL_INTERFACE_VERSION; - iface->interface_size = sizeof(Whistler_Interface); - iface->name = WHISTLER_INTERFACE_NAME; - WHISTLER_INTERFACE(iface)->whistle = _human_whistle; - - /* - * Initializing Swimmer Interface Instance - */ - iface = (Eina_Model_Interface *) &_SWIMMER_INTERFACE; - iface->version = EINA_MODEL_INTERFACE_VERSION; - iface->interface_size = sizeof(Swimmer_Interface); - iface->name = SWIMMER_INTERFACE_NAME; - SWIMMER_INTERFACE(iface)->swim = _human_swim; - - /* - * Initializing Diver Interface Instance - * Diver_Interface is inherited from Swimmer - */ - iface = (Eina_Model_Interface *) &_DIVER_INTERFACE; - iface->version = EINA_MODEL_INTERFACE_VERSION; - iface->interface_size = sizeof(Diver_Interface); - iface->name = DIVER_INTERFACE_NAME; - iface->interfaces = PARENT_INTERFACES_ARRAY; - DIVER_INTERFACE(iface)->dive = _human_dive; - - /* - * Initializing instance of Human Model - */ - - HUMAN_MODEL_TYPE_NAME = "Human_Model_Type"; - - type = (Eina_Model_Type *) &_HUMAN_TYPE; - type->version = EINA_MODEL_TYPE_VERSION; - type->name = HUMAN_MODEL_TYPE_NAME; - type->private_size = 0; - - eina_model_type_subclass_setup(type, ANIMAL_TYPE); - - type->type_size = sizeof(Human_Type); - type->interfaces = MODEL_INTERFACES_ARRAY; - - ANIMAL_TYPE(type)->eat = _human_eat; - HUMAN_TYPE(type)->walk =_human_walk; -} - - -/* - * call for implemented Human Class function - */ -void -human_walk(Eina_Model *m) -{ - EINA_SAFETY_ON_FALSE_RETURN(eina_model_instance_check(m, HUMAN_TYPE)); - - void (*pf)(Eina_Model *m); - pf = eina_model_method_resolve(m, Human_Type, walk); - EINA_SAFETY_ON_NULL_RETURN(pf); - printf("%s() \t", __func__); - pf(m); -} |