27 #define PROT_FACT_DEFAULT_METHOD(key) prototype_default_ ## key 29 #define PROT_FACT_SET_METHOD(this, factory_method, key) \ 30 if(factory_method && factory_method->key) instance->factory_method.key = factory_method->key;\ 31 else instance->factory_method.key = PROT_FACT_DEFAULT_METHOD(key) 36 void * clone_data = malloc(base_length);
37 if(!clone_data)
return NULL;
40 memcpy(clone_data, base, base_length);
61 instance->
base = base;
72 this->factory_method.free_base(this->base);
78 return this->factory_method.clone(this->base, this->base_len);
83 this->factory_method.free(data);
void prototype_factory_instance_free(PrototypeFactoryInstance this)
free
static void * prototype_default_clone(void *base, size_t base_length)
clone
static void prototype_default_free(void *clone_base)
free
void(* free)(EventInstance this)
prototype_factory_instance, PrototypeFactory class instance definition
void * prototype_factory_instance_clone_data(PrototypeFactoryInstance this)
clone data
void prototype_factory_instance_free_data(PrototypeFactoryInstance this, void *data)
free data
PrototypeFactoryInstance prototype_factory_instance_new(void *base, size_t base_length, prototype_factory_method_t *factory_method)
new
This is API for PrototypeFactoryInstance class.
#define PROT_FACT_SET_METHOD(this, factory_method, key)
define to set method
prototype_factory_method_t factory_method
static void prototype_default_free_base(void *base)
free base
PrototypeFactory methods interface definition, to set prototype_register.