17 #define impl_afw_object_get_meta \
18 afw_object_impl_internal_get_meta
20 #define impl_afw_object_get_property_meta \
21 afw_object_impl_internal_get_property_meta
23 #define impl_afw_object_get_next_property_meta \
24 afw_object_impl_internal_get_next_property_meta
28 #define AFW_IMPLEMENTATION_ID "value_meta"
46 &data_type->data_type_id, self->pub.p, xctx);
65 self->key, self->pub.p, xctx);
78 return self->evaluated_value;
91 &self->value->inf->rti.implementation_id,
101 { &afw_s_dataType, impl_get_dataType, NULL },
102 { &afw_s_key, impl_get_key, NULL },
103 { &afw_s_value, impl_get_value, NULL },
104 { &afw_s_valueInfId, impl_get_valueInfId, NULL }
109 ((
char *)&impl_handler[0] +
sizeof(impl_handler));
169 for (h = &impl_handler[0]; h < impl_handler_end; h++) {
172 return h->get(
self, property_name, xctx);
179 if (self->additional) {
181 property_name, xctx);
224 if (*(
void **)iterator >= (
void *)&impl_handler[0])
227 for (; h < impl_handler_end; h++)
229 result = h->get(
self, h->property_name, xctx);
233 *property_name = h->property_name;
248 if (self->additional) {
256 iterator, &next_property_name, xctx);
260 for (h = &impl_handler[0];
261 h < impl_handler_end &&
264 if (h >= impl_handler_end) {
266 *property_name = next_property_name;
276 *property_name = NULL;
309 return (self->immutable) ? NULL : &
self->setter;
326 self->immutable =
true;
343 AFW_OBJECT_IMPL_ASSERT_SELF_MUTABLE;
346 for (h = &impl_handler[0]; h < impl_handler_end; h++) {
349 h->set(
self, property_name, value, xctx);
356 if (!self->additional) {
366 afw_value_internal_create_meta_object_self(
375 self->pub.inf = &impl_afw_object_inf;
380 self->meta_object_value.internal = (
const afw_object_t *)
self;
381 self->setter.inf = &impl_afw_object_setter_inf;
392 afw_value_internal_get_evaluated_meta_default(
399 self = afw_value_internal_create_meta_object_self(
401 return (
const afw_value_t *)&
self->meta_object_value;
407 afw_value_internal_get_evaluated_metas_default(
426 afw_value_internal_get_evaluated_meta_for_list(
435 self = afw_value_internal_create_meta_object_self(
437 return (
const afw_value_t *)&
self->meta_object_value;
443 afw_value_internal_get_evaluated_metas_for_list(
456 for (iterator = NULL;;) {
471 afw_value_internal_get_evaluated_meta_for_object(
483 self = afw_value_internal_create_meta_object_self(
487 return (
const afw_value_t *)&
self->meta_object_value;
493 afw_value_internal_get_evaluated_metas_for_object(
507 for (iterator = NULL;;) {
509 &iterator, &property_name, p, xctx);
510 if (!property_meta) {
#define AFW_DEFINE_INTERNAL(type)
Define an internal function for /src/afw/ source*.c files.
Adaptive Framework Core Internal.
Interface afw_interface implementation declares.
Interface afw_interface implementation declares.
afw_value_create_list(const afw_list_t *internal, const afw_pool_t *p, afw_xctx_t *xctx)
Create function for unmanaged data type list value.
afw_value_as_list(const afw_value_t *value, afw_xctx_t *xctx)
Typesafe cast of data type list.
afw_value_as_object(const afw_value_t *value, afw_xctx_t *xctx)
Typesafe cast of data type object.
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.
struct afw_iterator_s afw_iterator_t
apr_size_t afw_size_t
size_t.
#define AFW_THROW_ERROR_Z(code, message_z, xctx)
Macro used to set error and 0 rv in xctx and throw it.
#define afw_list_get_next_entry_meta(instance, iterator, p, xctx)
Call method get_next_entry_meta of interface afw_list.
const afw_list_t * afw_list_const_create_null_terminated_array_of_values(const afw_value_t *const *values, const afw_pool_t *p, afw_xctx_t *xctx)
Create an immutable list from NULL terminated array of values.
#define afw_list_create_generic(p, xctx)
Create an value list in memory.
afw_list_add_value(const afw_list_t *instance, const afw_value_t *value, afw_xctx_t *xctx)
Call method add_value of interface afw_list_setter.
const afw_object_setter_t * impl_afw_object_get_setter(const afw_object_t *instance, afw_xctx_t *xctx)
void impl_afw_object_add_reference(const afw_object_t *instance, afw_xctx_t *xctx)
const afw_value_t * impl_afw_object_get_next_property(const afw_object_t *instance, const afw_iterator_t **iterator, const afw_utf8_t **property_name, afw_xctx_t *xctx)
void impl_afw_object_release(const afw_object_t *instance, afw_xctx_t *xctx)
const afw_value_t * impl_afw_object_get_property(const afw_object_t *instance, const afw_utf8_t *property_name, afw_xctx_t *xctx)
afw_boolean_t impl_afw_object_has_property(const afw_object_t *instance, const afw_utf8_t *property_name, afw_xctx_t *xctx)
afw_size_t impl_afw_object_get_count(const afw_object_t *instance, afw_xctx_t *xctx)
#define afw_object_get_property(instance, property_name, xctx)
Call method get_property 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_next_property_meta(instance, iterator, property_name, p, xctx)
Call method get_next_property_meta of interface afw_object.
void impl_afw_object_setter_set_immutable(const afw_object_setter_t *instance, afw_xctx_t *xctx)
void 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)
#define afw_object_create(p, xctx)
Create an empty unmanaged object in memory.
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_malloc(instance, size, xctx)
Call method malloc of interface afw_pool.
#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_evaluated_meta(instance, p, xctx)
Call method get_evaluated_meta of interface afw_value.
#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_list 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.