19 impl_current_variable_get_cb(
31 if (current_variables)
for (
32 current_variable = current_variables;
37 result = (*current_variable)->get_cb(entry, name, xctx);
57 impl_current_variable_get_cb, data, p, xctx);
58 entry->
wa = (
void *)variables;
73 &afw_s__AdaptiveContextType_, context_type_id, xctx);
76 &afw_s_contextTypeId, context_type_id, xctx);
92 context_type_object, &afw_s_qualifierDefinitions, xctx);
96 context_type_object, &afw_s_qualifierDefinitions,
99 &afw_s__AdaptiveQualifierDefinitions_, xctx);
117 qualifier_definitions =
119 context_type_object, xctx);
124 qualifier_definitions, qualifier_id, xctx);
126 &afw_s__AdaptivePropertyTypes_, xctx);
149 context_type_id, xctx->env->p, xctx);
150 qualifier_definitions =
152 context_type_object, xctx);
154 &afw_s_a_context_type_application_qualifier_definitions_path,
157 &afw_s_description, description_z, xctx);
159 variable_definitions =
161 context_type_object, qualifier_id, xctx);
163 for (variable = variables;
167 if (include_mask & ((*variable)->include_mask))
170 variable_definitions,
171 (*variable)->meta->name,
173 (*variable)->meta->value_inf,
174 (*variable)->meta->label_z,
175 (*variable)->description_z,
176 (*variable)->meta->data_type_parameter_z,
177 (*variable)->meta->data_type_parameter_formatted_z,
183 context_type_object, xctx);
207 variable_name, xctx);
209 &afw_s__AdaptiveValueMeta_, xctx);
211 value.inf = value_inf;
215 &data_type->data_type_id, xctx);
219 string_value->internal.s = label_z;
220 string_value->internal.len = strlen(label_z);
226 string_value->internal.s = description_z;
227 string_value->internal.len = strlen(description_z);
231 if (data_type_parameter_z) {
233 string_value->internal.s = data_type_parameter_z;
234 string_value->internal.len = strlen(data_type_parameter_z);
238 if (data_type_parameter_formatted_z) {
240 string_value->internal.s = data_type_parameter_formatted_z;
241 string_value->internal.len = strlen(data_type_parameter_formatted_z);
263 definitions_to_add, &iterator, &property_name, xctx)))
265 if (replace_duplicates ||
291 definitions_to_add, &iterator, &property_name, xctx)))
293 variable_definitions =
295 qualifier_definitions, property_name, xctx);
296 if (variable_definitions)
298 variable_definitions_to_add =
301 variable_definitions, variable_definitions_to_add,
302 replace_duplicates, xctx);
306 property_name, value, xctx);
330 const afw_pool_t *p = variable_definitions->p;
335 object_type_object = NULL;
341 if (!object_type_object) {
350 object_type_object, &afw_s_propertyTypes, xctx);
352 object_type_object, &afw_s_otherProperties, xctx);
355 &iterator, &property_name, xctx)))
359 if (property_types) {
361 property_name, xctx);
364 pt = other_properties;
382 &afw_s_dataType, xctx);
385 if (data_type && data_type->evaluated) {
386 if (value_data_type && value_data_type->evaluated) {
402 &iterator2, &property_name2, xctx)))
417 if (value_data_type) {
419 &afw_s_dataType, &value_data_type->data_type_id, xctx);
425 property_name, pt, xctx);
439 const afw_pool_t *p = variable_definitions->p;
452 object_type_id, xctx);
453 if (!object_type_object) {
462 object_type_object, &afw_s_propertyTypes, xctx);
465 property_types, &iterator, &property_name, xctx)))
474 &afw_s_dataType, xctx);
480 if (data_type && data_type->evaluated) {
481 if (!include_evaluated) {
499 source_value->internal.len = object_type_id->len;
501 object_type_id->s, object_type_id->len, p, xctx);
505 property_name, pt, xctx);
523 variable_definitions_object =
525 context_type_object, qualifier_id, xctx);
531 detail_source_location,
false, NULL, xctx);
532 variable_definitions_object =
534 context_type_object, qualifier_id, xctx);
536 variable_definitions_object,
object, xctx);
555 objects, &iterator, &qualifier_id, xctx)))
563 context_type_object,
object,
564 qualifier_id, detail_source_location, xctx);
AFW_DEFINE(const afw_object_t *)
Adaptive Framework Core Internal.
afw_object_set_property_as_object(const afw_object_t *object, const afw_utf8_t *property_name, const afw_object_t *internal, afw_xctx_t *xctx)
Set property function for data type object values.
#define afw_object_old_get_property_as_object(object, property_name, xctx)
Get property function for data type object value.
#define afw_object_old_get_next_property_as_object(object, iterator, property_name, xctx)
Get next property function for data type object value.
afw_value_as_object(const afw_value_t *value, afw_xctx_t *xctx)
Typesafe cast of data type object.
#define afw_object_old_get_property_as_string(object, property_name, xctx)
Get property function for data type string value.
afw_value_allocate_string(const afw_pool_t *p, afw_xctx_t *xctx)
Allocate function for unmanaged data type string value.
afw_object_set_property_as_string(const afw_object_t *object, const afw_utf8_t *property_name, const afw_utf8_t *internal, afw_xctx_t *xctx)
Set property function for data type string values.
#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.
afw_utf8_octet_t afw_utf8_z_t
NFC normalized UTF-8 null terminated string.
char afw_utf8_octet_t
8 bits of utf-8 codepoint.
afw_compile_expressions_templates_and_hybrids(const afw_object_t *object, const afw_utf8_t *source_location, afw_boolean_t recursive, const afw_compile_shared_t *shared, afw_xctx_t *xctx)
Compile object's expressions, templates, and hybrids.
afw_context_variable_definitions_add(const afw_object_t *variable_definitions, const afw_object_t *definitions_to_add, afw_boolean_t replace_duplicates, afw_xctx_t *xctx)
Add variable definitions.
afw_context_qualifier_definitions_merge(const afw_object_t *qualifier_definitions, const afw_object_t *definitions_to_add, afw_boolean_t replace_duplicates, afw_xctx_t *xctx)
Merge qualifier definitions.
afw_context_variable_definitions_add_based_on_object(const afw_object_t *variable_definitions, const afw_object_t *object, afw_xctx_t *xctx)
Add variable definitions based on object.
afw_context_variable_definition_add_z(const afw_object_t *variable_definitions, const afw_utf8_t *variable_name, const afw_utf8_t *source, const afw_value_inf_t *value_inf, const afw_utf8_z_t *label_z, const afw_utf8_z_t *description_z, const afw_utf8_z_t *data_type_parameter_z, const afw_utf8_z_t *data_type_parameter_formatted_z, afw_xctx_t *xctx)
Add variable definition using 0 terminated label and description.
afw_context_type_register_cb_variables(const afw_utf8_t *context_type_id, const afw_utf8_t *qualifier_id, const afw_utf8_octet_t *description_z, const afw_context_cb_variable_t *const *variables, int include_mask, afw_xctx_t *xctx)
Register context type id for array of current variable callbacks.
afw_context_variable_definitions_compile_and_add_based_on_qualifiers_object(const afw_object_t *context_type_object, const afw_object_t *objects, const afw_utf8_t *source_location, afw_xctx_t *xctx)
Compile and add variable definitions based on AdaptiveHybridProperties object.
afw_context_type_insure_qualifier_definitions_object_exists(const afw_object_t *context_type_object, afw_xctx_t *xctx)
Insure qualifier definitions object exists.
afw_context_variable_definitions_compile_and_add_based_on_object(const afw_object_t *context_type_object, const afw_object_t *object, const afw_utf8_t *qualifier_id, const afw_utf8_t *source_location, afw_xctx_t *xctx)
Compile and add variable definitions based on AdaptiveHybridProperties object.
afw_context_type_insure_variable_definitions_object_exists(const afw_object_t *context_type_object, const afw_utf8_t *qualifier_id, afw_xctx_t *xctx)
Insure variable definitions object exists for qualifier id.
afw_context_variable_definitions_add_based_on_object_type_id(const afw_object_t *variable_definitions, const afw_utf8_t *object_type_id, afw_boolean_t include_evaluated, afw_xctx_t *xctx)
Add variable definitions based on object type id.
afw_context_type_create(const afw_utf8_t *context_type_id, const afw_pool_t *p, afw_xctx_t *xctx)
Create a context type object.
afw_context_push_cb_variables(const afw_utf8_t *qualifier_id, const afw_context_cb_variable_t *const *variables, void *data, const afw_pool_t *p, afw_xctx_t *xctx)
Push NULL terminated list of variable callback structs.
void afw_environment_register_context_type(const afw_utf8_t *context_type_id, const afw_object_t *context_type_object, afw_xctx_t *xctx)
Register an context type.
const afw_data_type_t * afw_environment_get_data_type(const afw_utf8_t *type, afw_xctx_t *xctx)
Get the data_type associated with configuration entry type.
#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 * afw_memory_dup(const void *from, apr_size_t size, const afw_pool_t *p, afw_xctx_t *xctx)
Duplicate a block of memory into specified pool.
#define afw_object_get_next_property(instance, iterator, property_name, xctx)
Call method get_next_property of interface afw_object.
#define afw_object_has_property(instance, property_name, xctx)
Call method has_property of interface afw_object.
afw_object_options_composite
Object processing options - composite only.
afw_object_view_create(const afw_object_t *instance, const afw_utf8_t *entity_path, const afw_object_options_t *options, const afw_pool_t *p, afw_xctx_t *xctx)
Create an object view of an object in specified pool.
afw_object_create_clone(const afw_object_t *object, const afw_pool_t *p, afw_xctx_t *xctx)
Clone an object to a specified pool.
#define afw_object_create(p, xctx)
Create an empty unmanaged object in memory.
afw_object_set_property_as_string_from_utf8_z(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_utf8_z_t *string_z, afw_xctx_t *xctx)
Set an string property from utf8_z.
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.
const afw_object_t * afw_object_create_embedded(const afw_object_t *embedding_object, const afw_utf8_t *property_name, afw_xctx_t *xctx)
Create an empty embedded object in a memory object.
afw_runtime_get_object(const afw_utf8_t *object_type_id, const afw_utf8_t *object_id, afw_xctx_t *xctx)
Get a runtime object.
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.
afw_utf8_printf(const afw_pool_t *p, afw_xctx_t *xctx, const afw_utf8_z_t *format,...)
Create a utf-8 string using a c format string in specified pool.
#define afw_value_get_data_type(instance, xctx)
Call method get_data_type of interface afw_value.
#define afw_value_is_annotated(A_VALUE)
Macro to determine if value is an annotated.
afw_xctx_push_qualifier(const afw_utf8_t *qualifier, const afw_object_t *qualifier_object, afw_boolean_t secure, afw_xctx_get_variable_t get, void *data, const afw_pool_t *p, afw_xctx_t *xctx)
Push qualifier on to stack.
Struct passed to afw_context_type_register_cb_variables()
Interface afw_data_type public struct.
Interface afw_object public struct.
Interface afw_pool public struct.
NFC normalized UTF-8 string.
Struct for annotated value.
Interface afw_value_inf_s struct.
Interface afw_value public struct.
struct for data type string values.
void * wa
Work area used by get/set.
Interface afw_xctx public struct.