18 #define impl_afw_value_optional_release NULL
19 #define impl_afw_value_get_reference NULL
23 #define AFW_IMPLEMENTATION_SPECIFIC (const void *)&afw_data_type_expression_direct
26 #define AFW_IMPLEMENTATION_INF_VARIABLES \
27 (const void *)&afw_data_type_expression_direct, \
30 #define impl_afw_value_get_evaluated_meta \
31 afw_value_internal_get_evaluated_meta_default
33 #define impl_afw_value_get_evaluated_metas \
34 afw_value_internal_get_evaluated_metas_default
37 #define AFW_IMPLEMENTATION_ID "expression_definition"
38 #define AFW_IMPLEMENTATION_INF_SPECIFIER AFW_DEFINE_CONST_DATA
39 #define AFW_IMPLEMENTATION_INF_LABEL afw_value_expression_definition_inf
56 result->contextual = contextual;
57 result->assignments = assignments;
58 result->value = value;
93 if (self->assignments) {
94 for (assignment = self->assignments; *assignment; assignment++) {
123 impl_afw_value_get_data_type(
134 impl_afw_value_get_evaluated_data_type(
147 impl_afw_value_get_evaluated_data_type_parameter(
160 impl_afw_value_produce_compiler_listing(
169 afw_value_compiler_listing_begin_value(writer, instance,
170 self->contextual, xctx);
175 if (self->assignments)
for (a = self->assignments; *a; a++) {
178 afw_value_compiler_listing_value((*a)->value, writer, xctx);
180 afw_value_compiler_listing_value(self->value, writer, xctx);
191 impl_afw_value_decompile(
203 if (self->assignments)
for (a = self->assignments; *a; a++) {
227 impl_afw_value_get_info(
237 info->value_inf_id = &instance->inf->rti.implementation_id;
238 info->contextual =
self->contextual;
AFW_DEFINE(const afw_object_t *)
Adaptive Framework Core Internal.
Interface afw_interface implementation declares.
afw_data_type_expression
Data type struct for expression.
#define AFW_FINALLY
Always executed regardless of error.
#define AFW_ENDTRY
Ends an AFW try block.
#define AFW_TRY
Begin an AFW TRY block.
#define afw_memory_clear(to)
Clear preallocated memory for sizeof(*(to)).
#define afw_pool_calloc_type(instance, type, xctx)
Macro to allocate cleared memory to hold type in pool.
const afw_value_t * impl_afw_value_optional_evaluate(const afw_value_t *instance, const afw_pool_t *p, afw_xctx_t *xctx)
afw_value_expression_definition_create(const afw_compile_value_contextual_t *contextual, const afw_value_assignment_t *const *assignments, const afw_value_t *value, const afw_pool_t *p, afw_xctx_t *xctx)
Create function for expression definition value.
#define afw_value_evaluate(value, p, xctx)
Evaluate value if needed using specific pool.
afw_value_expression_definition_inf
Value expression inf.
afw_value_decompile_value(const afw_value_t *instance, const afw_writer_t *writer, afw_xctx_t *xctx)
Decompile Value::.
#define afw_writer_increment_indent(instance, xctx)
Call method increment_indent of interface afw_writer.
#define afw_writer_write_eol(instance, xctx)
Call method write_eol of interface afw_writer.
#define afw_writer_decrement_indent(instance, xctx)
Call method decrement_indent of interface afw_writer.
#define afw_writer_write_z(writer, s_z, xctx)
Call afw_writer_write() with zero terminated string.
#define afw_writer_write_utf8(writer, S, xctx)
Call afw_writer_write() with a afw_utf8_t string.
int afw_xctx_begin_stack_frame(afw_xctx_t *xctx)
Begin stack frame.
afw_xctx_set_local_variable(const afw_utf8_t *name, const afw_value_t *value, afw_xctx_t *xctx)
Set a variable then current xctx frame.
#define afw_xctx_evaluation_stack_push_value(VALUE, xctx)
Push VALUE onto execution stack.
#define afw_xctx_evaluation_stack_pop_value(xctx)
Pop top VALUE off execution stack.
void afw_xctx_end_stack_frame(int top, afw_xctx_t *xctx)
Set stack top.
Contextual information provided in some values.
Interface afw_data_type public struct.
const afw_compile_value_contextual_t * contextual
Contextual information or NULL.
Interface afw_pool public struct.
NFC normalized UTF-8 string.
Struct for value assignment.
Struct for expression value.
Filled in by afw_value get_info method.
Interface afw_value public struct.
Interface afw_writer public struct.
Interface afw_xctx public struct.