3 #ifndef GLOBUS_OBJECT_H
4 #define GLOBUS_OBJECT_H
19 typedef void (*globus_object_copy_func_t) (
void * src_instance_data,
20 void ** dst_instance_data);
22 typedef void (*globus_object_destructor_func_t) (
void * instance_data);
24 typedef struct globus_object_type_s {
25 const struct globus_object_type_s *
const parent_type;
26 globus_object_copy_func_t
const copy_func;
27 globus_object_destructor_func_t
const destructor;
28 void *
const class_data;
29 } globus_object_type_t;
31 typedef struct globus_object_s {
32 const globus_object_type_t * type;
33 struct globus_object_s * parent_object;
38 typedef char * (*globus_object_printable_string_func_t)
39 (globus_object_t * error);
46 extern globus_object_t *
47 globus_object_construct (
const globus_object_type_t * create_type);
51 extern globus_object_t *
52 globus_object_initialize_base (globus_object_t *
object);
54 extern globus_object_t *
55 globus_object_construct_base ();
57 #define globus_object_static_initializer(object_type, \
66 extern globus_object_t *
67 globus_object_copy (
const globus_object_t *
object);
72 globus_object_reference(globus_object_t *
object);
75 globus_object_free (globus_object_t *
object);
79 #define globus_object_type_static_initializer(parent_type, \
90 #define globus_object_printable_type_static_initializer(pt,cf,df,s) \
91 globus_object_type_static_initializer((pt),(cf),(df),(void *)(s))
93 extern globus_object_t *
94 globus_object_initialize_printable (globus_object_t *
object);
96 extern globus_object_t *
97 globus_object_construct_printable ();
104 extern const globus_object_type_t GLOBUS_OBJECT_TYPE_BASE_DEFINITION;
105 #define GLOBUS_OBJECT_TYPE_BASE (&GLOBUS_OBJECT_TYPE_BASE_DEFINITION)
107 extern const globus_object_type_t
108 GLOBUS_OBJECT_TYPE_PRINTABLE_DEFINITION;
109 #define GLOBUS_OBJECT_TYPE_PRINTABLE \
110 (&GLOBUS_OBJECT_TYPE_PRINTABLE_DEFINITION)
116 extern globus_object_t GLOBUS_OBJECT_BASE_STATIC_PROTOTYPE;
117 #define GLOBUS_OBJECT_BASE_PROTOTYPE (&GLOBUS_OBJECT_BASE_STATIC_PROTOTYPE)
119 extern globus_object_t
120 GLOBUS_OBJECT_PRINTABLE_STATIC_PROTOTYPE;
121 #define GLOBUS_OBJECT_PRINTABLE_PROTOTYPE \
122 (&GLOBUS_OBJECT_PRINTABLE_STATIC_PROTOTYPE)
128 extern const globus_object_type_t *
129 globus_object_get_type (
const globus_object_t *
object);
133 extern const globus_object_type_t *
134 globus_object_type_get_parent_type (
const globus_object_type_t * type);
139 globus_object_is_static (
const globus_object_t *
object);
145 globus_object_type_get_class_data (
const globus_object_type_t * type);
150 globus_object_type_match (
const globus_object_type_t * subtype,
151 const globus_object_type_t * supertype);
155 extern globus_object_t *
156 globus_object_upcast (globus_object_t *
object,
157 const globus_object_type_t * desired_type);
165 globus_object_set_local_instance_data (globus_object_t *
object,
166 void * instance_data);
170 globus_object_get_local_instance_data (
const globus_object_t *
object);
176 globus_object_printable_to_string (globus_object_t *
object);
178 extern globus_object_printable_string_func_t
179 globus_object_printable_get_string_func (globus_object_t *
object);
185 #define GLOBUS_OBJECT_MODULE (&globus_i_object_module)
Reference Counting Module Activation and Deactivation.
int globus_bool_t
Boolean type.
Definition: globus_types.h:78
Module Descriptor.
Definition: globus_module.h:55