16 #define impl_afw_object_get_meta \
17 afw_object_impl_internal_get_meta
19 #define impl_afw_object_get_property_meta \
20 afw_object_impl_internal_get_property_meta
22 #define impl_afw_object_get_next_property_meta \
23 afw_object_impl_internal_get_next_property_meta
39 #define AFW_IMPLEMENTATION_ID "object_impl_property_meta"
59 &data_type->data_type_id, self->pub.p, xctx);
87 if (self->property_name) {
89 self->property_name, self->pub.p, xctx);
102 return self->property_value;
114 self->property_name, value, xctx);
127 &self->property_value->inf->rti.implementation_id,
136 impl_set_error_immutable(
151 { &afw_s_dataType, impl_get_dataType, impl_set_dataType },
152 { &afw_s_key, impl_get_key, impl_set_error_immutable },
153 { &afw_s_value, impl_get_value, impl_set_value },
154 { &afw_s_valueInfId, impl_get_valueInfId, impl_set_error_immutable }
159 (((
char *)& impl_handler[0]) +
sizeof(impl_handler));
182 impl_afw_object_add_reference(
209 impl_afw_object_get_property(
219 for (h = &impl_handler[0]; h < impl_handler_end; h++) {
222 return h->get(
self, property_name, xctx);
229 if (self->property_type_object) {
231 self->property_type_object,
232 property_name, xctx);
245 impl_afw_object_get_next_property(
275 if (*(
void **)iterator >= (
void *)&impl_handler[0])
278 for (; h < impl_handler_end; h++)
280 result = h->get(
self, h->property_name, xctx);
284 *property_name = h->property_name;
299 if (self->property_type_object) {
306 iterator, &next_property_name, xctx);
310 for (h = &impl_handler[0];
311 h < impl_handler_end &&
314 if (h >= impl_handler_end) {
316 *property_name = next_property_name;
326 *property_name = NULL;
337 impl_afw_object_has_property(
342 return impl_afw_object_get_property(instance, property_name, xctx) != NULL;
351 impl_afw_object_get_setter(
358 return (!self->is_immutable &&
377 self->is_immutable =
true;
396 for (h = &impl_handler[0]; h < impl_handler_end; h++) {
399 h->set(
self, property_name, value, xctx);
409 property_name, value, xctx);
426 instance, property_name, p, xctx);
444 instance, iterator, property_name, p, xctx);
463 property_name, xctx);
464 if (!property_value) {
470 self->pub.inf = &impl_afw_object_inf;
472 self->owning_object = instance;
473 self->setter.inf = &impl_afw_object_setter_inf;
476 self->meta_object_value.internal = (
const afw_object_t *)
self;
477 self->property_value = property_value;
479 self->property_name = property_name;
480 self->property_type_object =
483 return (
const afw_value_t *)&
self->meta_object_value;
505 iterator, &next_property_name, xctx);
507 if (property_value) {
509 *property_name = next_property_name;
512 next_property_name, p, xctx);
#define AFW_DEFINE_INTERNAL(type)
Define an internal function for /src/afw/ source*.c files.
#define AFW_DECLARE(type)
Declare a public afw function.
Adaptive Framework Core Internal.
Interface afw_interface implementation declares.
Interface afw_interface implementation declares.
afw_value_evaluated_object_inf
Unmanaged evaluated value inf for data type object.
afw_value_create_string(const afw_utf8_t *internal, const afw_pool_t *p, afw_xctx_t *xctx)
Create function for unmanaged data type string value.
#define AFW_UTF8_FMT_ARG(A_STRING)
Convenience Macro for use with AFW_UTF8_FMT to specify arg.
struct afw_iterator_s afw_iterator_t
#define AFW_UTF8_FMT
Format string specifier used for afw_utf8_t.
apr_size_t afw_size_t
size_t.
#define AFW_THROW_ERROR_FZ(code, xctx, format_z,...)
Macro used to set error and 0 rv in xctx and throw it.
#define AFW_THROW_ERROR_Z(code, message_z, xctx)
Macro used to set error and 0 rv in xctx and throw it.
void impl_afw_object_release(const afw_object_t *instance, afw_xctx_t *xctx)
afw_size_t impl_afw_object_get_count(const afw_object_t *instance, afw_xctx_t *xctx)
const afw_value_t * afw_object_impl_get_property_meta(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_pool_t *p, afw_xctx_t *xctx)
A general impl of method get_property_meta for interface afw_object that can be accessed externally.
afw_object_impl_internal_get_property_meta(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_pool_t *p, afw_xctx_t *xctx)
A general impl of method get_property_meta for interface afw_object.
const afw_value_t * afw_object_impl_get_next_property_meta(const afw_object_t *instance, const afw_iterator_t **iterator, const afw_utf8_t **property_name, const afw_pool_t *p, afw_xctx_t *xctx)
A general impl of method get_next_property_meta for interface afw_object that can be accessed externa...
afw_object_impl_internal_get_next_property_meta(const afw_object_t *instance, const afw_iterator_t **iterator, const afw_utf8_t **property_name, const afw_pool_t *p, afw_xctx_t *xctx)
A general impl of method get_next_property_meta for interface afw_object.
#define afw_object_get_property(instance, property_name, xctx)
Call method get_property of interface afw_object.
#define afw_object_get_property_meta(instance, property_name, p, xctx)
Call method get_property_meta of interface afw_object.
#define afw_object_get_next_property(instance, iterator, property_name, xctx)
Call method get_next_property of interface afw_object.
#define afw_object_get_setter(instance, xctx)
Call method get_setter of interface afw_object.
impl_afw_object_setter_set_immutable(const afw_object_setter_t *instance, afw_xctx_t *xctx)
impl_afw_object_setter_set_property(const afw_object_setter_t *instance, const afw_utf8_t *property_name, const afw_value_t *value, afw_xctx_t *xctx)
afw_object_set_property(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_value_t *value, afw_xctx_t *xctx)
Set the value of an object's property.
#define afw_pool_calloc_type(instance, type, xctx)
Macro to allocate cleared memory to hold type in pool.
afw_boolean_t afw_utf8_equal(const afw_utf8_t *s1, const afw_utf8_t *s2)
Check to see if a string equals another string.
#define afw_value_get_data_type(instance, xctx)
Call method get_data_type of interface afw_value.
#define afw_value_evaluate(value, p, xctx)
Evaluate value if needed using specific pool.
Interface afw_data_type public struct.
Interface afw_object public struct.
Interface afw_object_setter public struct.
Interface afw_pool public struct.
NFC normalized UTF-8 string.
struct for data type object values.
Interface afw_value public struct.
Interface afw_xctx public struct.