design_pattern_for_c  V 1.00
prototype.h
Go to the documentation of this file.
1 
5 #ifndef PROTOTYPE_H
6 #define PROTOTYPE_H
7 
11 struct prototype_manager_t;
14 
18 struct prototype_factory_t;
21 
22 #define PROTOTYPE_SUCCESS (0)
23 #define PROTOTYPE_FAILED (-1)
24 
36  void * (*clone) (void * base, size_t base_length);
44  void (*free) (void * cloned_data);
51  void (*free_base) (void * base_data);
52 };
53 
55 
63 PrototypeManager prototype_manager_new(int is_threadsafe);
70 
83 PrototypeFactory prototype_register(PrototypeManager this, void * base, size_t base_length, prototype_factory_method_t * factory_method);
84 
107 void prototype_free(PrototypeFactory this, void * cloned_data);
108 #endif
PrototypeFactory methods interface definition, to set prototype_register.
void prototype_manager_free(PrototypeManager this)
free class handle
void(* free_base)(void *base_data)
free api of a base data, please free deep data
Definition: prototype.h:51
PrototypeManager class member definition, defined in prototype_manager.c.
struct prototype_factory_t * PrototypeFactory
PrototypeFactory class definition, member is defined in prototype_factory_t.
Definition: prototype.h:20
void * prototype_clone(PrototypeFactory this)
Clone base pointer by using PrototypeFactory class.
struct prototype_manager_t * PrototypeManager
PrototypeManager class definition, member is defined in prototype_manager_t.
Definition: prototype.h:13
void(* free)(void *cloned_data)
free api of a clone data, to do deep copy
Definition: prototype.h:44
void prototype_free(PrototypeFactory this, void *cloned_data)
Free cloned pointer.
PrototypeManager prototype_manager_new(int is_threadsafe)
Create PrototypeManager class.
PrototypeFactory prototype_register(PrototypeManager this, void *base, size_t base_length, prototype_factory_method_t *factory_method)
Register PrototypeFactory class.
void prototype_unregister(PrototypeManager this, PrototypeFactory factory)
Unregister PrototypeFactory class.
PrototypeFactory methods interface definition, to set prototype_register.
Definition: prototype.h:28