16 #include "apr_base64.h"
21 impl_clone_and_set_property(
30 impl_afw_data_type_object_clone_internal(
33 const void * from_internal,
51 impl_afw_data_type_utf8_utf8_to_internal(
59 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
67 impl_afw_data_type_utf8_internal_to_utf8(
69 const void * from_internal,
81 impl_afw_data_type_raw_compare_internal(
91 if (v1->size == v2->size) {
92 result = memcmp(v1->ptr, v2->ptr, v1->size);
95 else if (v1->size < v2->size) {
96 result = memcmp(v1->ptr, v2->ptr, v1->size);
97 if (result == 0) result = -1;
101 result = memcmp(v1->ptr, v2->ptr, v2->size);
102 if (result == 0) result = 1;
111 impl_afw_data_type_utf8_compare_internal(
121 if (v1->len == v2->len) {
122 result = memcmp(v1->s, v2->s, v1->len);
125 else if (v1->len < v2->len) {
126 result = memcmp(v1->s, v2->s, v1->len);
127 if (result == 0) result = -1;
131 result = memcmp(v1->s, v2->s, v2->len);
132 if (result == 0) result = 1;
143 impl_afw_data_type_standard_convert_internal(
146 const void * from_internal,
163 impl_afw_data_type_from_utf8_convert_internal(
166 const void * from_internal,
174 (((
const afw_utf8_t *)from_internal)->len == 0))
180 to_internal, (
const afw_utf8_t *)from_internal,
188 impl_afw_data_type_from_raw_convert_internal(
191 const void *from_internal,
198 (((
const afw_memory_t *)from_internal)->size == 0) ?
false :
true;
206 impl_afw_data_type_standard_convert_internal(
207 instance, to_internal, from_internal, to_data_type, p, xctx);
214 impl_afw_data_type_from_pointer_convert_internal(
217 const void *from_internal,
224 (*(
char *)from_internal) ? false :
true;
227 impl_afw_data_type_standard_convert_internal(
228 instance, to_internal, from_internal, to_data_type, p, xctx);
235 impl_afw_data_type_from_dateTime_convert_internal(
238 const void * from_internal,
250 memcpy(&((
afw_date_t *)to_internal)->time_zone,
258 memcpy(&((
afw_time_t *)to_internal)->time_zone,
263 impl_afw_data_type_standard_convert_internal(instance,
264 to_internal, from_internal, to_data_type, p, xctx);
271 impl_afw_data_type_from_double_convert_internal(
274 const void * from_internal,
282 memcpy(to_internal, from_internal,
sizeof(
afw_double_t));
307 impl_afw_data_type_standard_convert_internal(instance,
308 to_internal, from_internal, to_data_type, p, xctx);
315 impl_afw_data_type_from_integer_convert_internal(
318 const void * from_internal,
335 impl_afw_data_type_standard_convert_internal(instance,
336 to_internal, from_internal, to_data_type, p, xctx);
343 impl_afw_data_type_from_date_convert_internal(
346 const void * from_internal,
352 memcpy(to_internal, from_internal,
sizeof(
afw_date_t));
360 &((
const afw_date_t *)from_internal)->time_zone,
364 impl_afw_data_type_standard_convert_internal(instance,
365 to_internal, from_internal, to_data_type, p, xctx);
372 impl_afw_data_type_from_time_convert_internal(
375 const void * from_internal,
381 memcpy(to_internal, from_internal,
sizeof(
afw_time_t));
389 &((
const afw_time_t *)from_internal)->time_zone,
393 impl_afw_data_type_standard_convert_internal(instance,
394 to_internal, from_internal, to_data_type, p, xctx);
403 impl_afw_data_type_anyURI_utf8_to_internal(
411 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
417 impl_afw_data_type_base64Binary_internal_to_utf8(
419 const void * from_internal,
434 impl_afw_data_type_base64Binary_utf8_to_internal(
447 impl_afw_data_type_boolean_internal_to_utf8(
449 const void * from_internal,
453 return (*(
afw_boolean_t *)from_internal) ? &afw_s_true : &afw_s_false;
459 impl_afw_data_type_boolean_utf8_to_internal(
470 len = from_utf8->len;
475 }
else if (*s ==
't') {
477 }
else if (*s ==
'T') {
479 }
else if (*s ==
'0') {
481 }
else if (*s ==
'f') {
483 }
else if (*s ==
'F') {
486 }
else if (len == 4) {
487 if (*s !=
't' && *s !=
'T')
goto error;
489 if (*s !=
'r' && *s !=
'R')
goto error;
491 if (*s !=
'u' && *s !=
'U')
goto error;
493 if (*s !=
'e' && *s !=
'E')
goto error;
495 }
else if (len == 5) {
496 if (*s !=
'f' && *s !=
'F')
goto error;
498 if (*s !=
'a' && *s !=
'A')
goto error;
500 if (*s !=
'l' && *s !=
'L')
goto error;
502 if (*s !=
's' && *s !=
'S')
goto error;
504 if (*s !=
'e' && *s !=
'E')
goto error;
522 impl_afw_data_type_boolean_compare_internal(
533 if (*v2 ==
false)
return 0;
536 if (*v2 ==
false)
return 1;
543 impl_afw_data_type_date_internal_to_utf8(
545 const void * from_internal,
556 impl_afw_data_type_date_utf8_to_internal(
569 impl_afw_data_type_date_compare_internal(
581 impl_afw_data_type_dateTime_internal_to_utf8(
583 const void * from_internal,
594 impl_afw_data_type_dateTime_utf8_to_internal(
608 impl_afw_data_type_dateTime_compare_internal(
620 impl_afw_data_type_dayTimeDuration_internal_to_utf8(
622 const void * from_internal,
633 impl_afw_data_type_dayTimeDuration_utf8_to_internal(
647 impl_afw_data_type_dayTimeDuration_compare_internal(
659 impl_afw_data_type_dnsName_utf8_to_internal(
667 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
673 impl_afw_data_type_double_internal_to_utf8(
675 const void * from_internal,
686 impl_afw_data_type_double_utf8_to_internal(
696 memcpy(to_internal, &d,
sizeof(d));
708 impl_afw_data_type_double_compare_internal(
738 if (*v1 == *v2)
return 0;
739 if (*v1 > *v2)
return 1;
747 impl_afw_data_type_function_internal_to_utf8(
749 const void * from_internal,
764 contextual->compiled_value->full_source;
767 result = &afw_s_a_empty_string;
781 impl_afw_data_type_function_utf8_to_internal(
791 memcpy(to_internal, (
const void *)&value,
sizeof(
afw_value_t *));
797 impl_afw_data_type_function_compare_internal(
804 return (value1 == value2) ? 0 : (value1 > value2) ? 1 : -1;
810 impl_afw_data_type_function_clone_internal(
813 const void * from_internal,
820 s = impl_afw_data_type_function_internal_to_utf8(
821 NULL, from_internal, NULL, xctx);
823 memcpy(to_internal, (
const void *)&value,
sizeof(
afw_value_t *));
829 impl_afw_data_type_hexBinary_internal_to_utf8(
831 const void * from_internal,
849 impl_afw_data_type_hexBinary_utf8_to_internal(
864 impl_afw_data_type_ia5String_utf8_to_internal(
872 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
878 impl_afw_data_type_integer_internal_to_utf8(
880 const void * from_internal,
891 impl_afw_data_type_integer_utf8_to_internal(
901 memcpy(to_internal, &i,
sizeof(i));
907 impl_afw_data_type_integer_compare_internal(
917 if (*v1 == *v2)
return 0;
918 if (*v1 > *v2)
return 1;
925 impl_afw_data_type_ipAddress_utf8_to_internal(
933 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
939 impl_afw_data_type_list_internal_to_utf8(
941 const void * from_internal,
948 list.internal = *(
const afw_list_t **)from_internal;
956 impl_afw_data_type_list_utf8_to_internal(
976 impl_afw_data_type_list_compare_internal(
986 const void *internal1;
987 const void *internal2;
992 for (iterator1 = NULL, iterator2 = NULL, result = 0; result == 0;) {
994 &data_type1, &internal1, xctx);
996 &data_type2, &internal2, xctx);
1012 "list needs data type for compare",
1016 if (data_type1 != data_type2) {
1022 data_type1, internal1, internal2, xctx);
1031 impl_afw_data_type_null_internal_to_utf8(
1033 const void * from_internal,
1043 impl_afw_data_type_null_utf8_to_internal(
1050 memset(to_internal, 0,
sizeof(
void *));
1056 impl_afw_data_type_null_compare_internal(
1058 const void * value1,
1059 const void * value2,
1069 impl_afw_data_type_object_internal_to_utf8(
1071 const void * from_internal,
1087 impl_afw_data_type_object_utf8_to_internal(
1107 impl_afw_data_type_object_compare_internal(
1109 const void * value1,
1110 const void * value2,
1147 return (count1 == count2) ? 0 : -1;
1153 impl_afw_data_type_objectId_utf8_to_internal(
1161 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
1167 impl_afw_data_type_objectPath_utf8_to_internal(
1175 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
1181 impl_afw_data_type_rfc822Name_utf8_to_internal(
1189 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
1195 impl_afw_data_type_time_internal_to_utf8(
1197 const void * from_internal,
1208 impl_afw_data_type_time_utf8_to_internal(
1221 impl_afw_data_type_time_compare_internal(
1223 const void * value1,
1224 const void * value2,
1233 impl_afw_data_type_x500Name_utf8_to_internal(
1241 memcpy(to_internal, from_utf8,
sizeof(
afw_utf8_t));
1247 impl_afw_data_type_yearMonthDuration_internal_to_utf8(
1249 const void * from_internal,
1260 impl_afw_data_type_yearMonthDuration_utf8_to_internal(
1274 impl_afw_data_type_yearMonthDuration_compare_internal(
1276 const void * value1,
1277 const void * value2,
1288 impl_afw_data_type_utf8_clone_internal(
1291 const void * from_internal,
1300 from = from_internal;
1301 if (from->len > 0) {
1305 to->len = from->len;
1306 memcpy(s, from->s, from->len);
1313 impl_afw_data_type_raw_clone_internal(
1316 const void * from_internal,
1325 from = from_internal;
1326 if (from->size > 0) {
1330 to->size = from->size;
1331 memcpy(ptr, from->ptr, from->size);
1338 impl_afw_data_type_direct_clone_internal(
1341 const void * from_internal,
1345 memcpy(to_internal, from_internal, instance->c_type_size);
1351 impl_afw_data_type_list_clone_internal(
1354 const void * from_internal,
1368 memcpy(to_internal, &to,
sizeof(
const afw_list_t *));
1370 for (iterator = NULL;;) {
1382 impl_object_clone_properties_and_meta(
1402 to_meta->
id = from->meta.
id;
1427 impl_object_clone_properties_and_meta(
1432 for (iterator = NULL;;) {
1434 &iterator, &property_name, xctx);
1436 impl_clone_and_set_property(to, property_name, value,
1443 AFW_DEFINE_STATIC_INLINE(
void)
1444 impl_clone_embedded_object(
1452 embedding_object, property_name,
1455 impl_object_clone_properties_and_meta(*to, from,
1456 embedding_object, xctx);
1462 impl_clone_and_set_property(
1478 impl_clone_embedded_object(
1481 obj, property_name, xctx);
1492 cloned_value, xctx);
1499 impl_afw_data_type_object_clone_internal(
1502 const void * from_internal,
1511 memcpy(to_internal, &to,
sizeof(
const afw_object_t *));
1512 impl_object_clone_properties_and_meta(to, from, NULL, xctx);
1528 impl_object_clone_properties_and_meta(result,
object, NULL, xctx);
1538 impl_afw_data_type_double_value_compiler_listing(
1546 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1558 impl_afw_data_type_boolean_value_compiler_listing(
1564 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1579 impl_afw_data_type_function_value_compiler_listing(
1588 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1601 impl_afw_data_type_integer_value_compiler_listing(
1609 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1621 impl_afw_data_type_null_value_compiler_listing(
1627 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1634 impl_afw_data_type_utf8_value_compiler_listing(
1640 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1651 impl_afw_data_type_typed_to_string_value_compiler_listing(
1659 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1664 string, writer, xctx);
1670 impl_afw_data_type_list_value_compiler_listing(
1681 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1686 for (iterator = NULL;;)
1690 afw_value_compiler_listing_value(entry, writer, xctx);
1700 impl_afw_data_type_object_value_compiler_listing(
1712 afw_value_compiler_listing_begin_value(writer, value, NULL, xctx);
1717 for (iterator = NULL;;)
1720 &iterator, &property_name, xctx);
1725 afw_value_compiler_listing_value(pv, writer, xctx);
1738 impl_afw_data_type_double_write_as_expression(
1741 const void *from_internal,
1755 impl_afw_data_type_boolean_write_as_expression(
1758 const void *from_internal,
1771 impl_afw_data_type_integer_write_as_expression(
1774 const void *from_internal,
1788 impl_afw_data_type_null_write_as_expression(
1791 const void *from_internal,
1799 impl_afw_data_type_string_write_as_expression(
1802 const void *from_internal,
1812 impl_afw_data_type_typed_string_write_as_expression(
1815 const void *from_internal,
1828 impl_afw_data_type_typed_to_string_write_as_expression(
1831 const void *from_internal,
1841 string, writer, xctx);
1847 impl_afw_data_type_list_write_as_expression(
1850 const void *from_internal,
1858 list = *(
const afw_list_t *
const *)from_internal;
1865 for (i = 0, iterator = NULL;
1888 impl_afw_data_type_object_write_as_expression(
1891 const void *from_internal,
1907 for (i = 0, iterator = NULL;
1909 &iterator, &property_name, xctx));
1939 impl_afw_data_type_evaluate_utf8_to_internal(
1951 impl_afw_data_type_evaluate_internal_to_utf8(
1953 const void* from_internal,
1962 impl_afw_data_type_evaluate_compare_internal(
1973 impl_afw_data_type_evaluate_convert_internal(
1976 const void* from_internal,
1986 impl_afw_data_type_evaluate_clone_internal(
1989 const void* from_internal,
1998 impl_afw_data_type_evaluate_value_compiler_listing(
2009 impl_afw_data_type_evaluate_write_as_expression(
2012 const void* from_internal,
2022 #define IMPL_DATA_TYPE_INF( \
2023 _id, _to_utf8, _to_internal, _compare, _conv, _clone, \
2024 _compiler_listing, _expression) \
2026 AFW_DEFINE_INTERNAL_CONST_DATA(afw_data_type_inf_t) \
2027 afw_data_type_ ## _id ## _inf = { \
2029 AFW_UTF8_LITERAL("afw_data_type"), \
2030 AFW_UTF8_LITERAL(__FILE__), \
2031 AFW_UTF8_LITERAL("afw_data_type_" #_id ) \
2033 impl_afw_data_type_ ## _to_utf8 ## _internal_to_utf8, \
2034 impl_afw_data_type_ ## _to_internal ## _utf8_to_internal, \
2035 impl_afw_data_type_ ## _compare ## _compare_internal, \
2036 impl_afw_data_type_ ## _conv ## _convert_internal, \
2037 impl_afw_data_type_ ## _clone ## _clone_internal, \
2038 impl_afw_data_type_ ## _compiler_listing ## _value_compiler_listing, \
2039 impl_afw_data_type_ ## _expression ## _write_as_expression \
AFW_DEFINE(const afw_object_t *)
#define AFW_DEFINE_CONST_DATA(type)
Define a public afw variable.
Adaptive Framework Core Internal.
#define afw_data_type_is_base64Binary(A_DATA_TYPE)
Macro to determine if data type is base64Binary.
#define afw_data_type_is_boolean(A_DATA_TYPE)
Macro to determine if data type is boolean.
#define afw_data_type_is_date(A_DATA_TYPE)
Macro to determine if data type is date.
#define afw_data_type_is_dateTime(A_DATA_TYPE)
Macro to determine if data type is dateTime.
#define afw_data_type_is_double(A_DATA_TYPE)
Macro to determine if data type is double.
#define afw_data_type_is_hexBinary(A_DATA_TYPE)
Macro to determine if data type is hexBinary.
#define afw_data_type_is_integer(A_DATA_TYPE)
Macro to determine if data type is integer.
afw_value_evaluated_list_inf
Unmanaged evaluated value inf for data type list.
#define afw_value_is_object(A_VALUE)
Macro to determine if value is evaluated object.
afw_value_allocate_object(const afw_pool_t *p, afw_xctx_t *xctx)
Allocate function for unmanaged data type object value.
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_value_is_string(A_VALUE)
Macro to determine if value is evaluated string.
#define afw_data_type_is_time(A_DATA_TYPE)
Macro to determine if data type is time.
double afw_double_t
Normal AFW number is double.
struct afw_iterator_s afw_iterator_t
unsigned char afw_byte_t
A byte of memory (unsigned).
#define AFW_UTF8_FMT
Format string specifier used for afw_utf8_t.
char afw_utf8_octet_t
8 bits of utf-8 codepoint.
apr_size_t afw_size_t
size_t.
unsigned char afw_octet_t
8 bits (unsigned).
apr_int64_t afw_integer_t
typedef for big signed int.
#define afw_data_type_compare_internal(instance, internal1, internal2, xctx)
Call method compare_internal of interface afw_data_type.
#define afw_data_type_utf8_to_internal(instance, to_internal, from_utf8, p, xctx)
Call method utf8_to_internal of interface afw_data_type.
#define afw_data_type_internal_to_utf8(instance, from_internal, p, xctx)
Call method internal_to_utf8 of interface afw_data_type.
afw_data_type_boolean_true
afw_boolean_t true value.
afw_data_type_boolean_false
afw_boolean_t false value.
afw_data_type_object_create_clone_to_managed_object(const afw_object_t *object, const afw_pool_t *p, afw_xctx_t *xctx)
Clone an object to a managed object.
#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_json_write_encoded_string(const afw_utf8_t *string, const afw_writer_t *writer, afw_xctx_t *xctx)
Write string as json encoded string.
#define afw_json_to_value(json, source_location, p, xctx)
Convert JSON to an adaptive value.
const afw_utf8_t * afw_json_from_value(const afw_value_t *value, const afw_object_options_t *options, const afw_pool_t *p, afw_xctx_t *xctx)
Convert an adaptive value to JSON.
#define afw_list_get_next_internal(instance, iterator, data_type, internal, xctx)
Call method get_next_internal of interface afw_list.
#define afw_list_get_next_value(instance, iterator, p, xctx)
Call method get_next_value of interface afw_list.
#define afw_list_get_data_type(instance, xctx)
Call method get_data_type of interface afw_list.
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.
#define afw_list_of_create(data_type, p, xctx)
Create an list of a specific data type in memory.
#define afw_memory_clear(to)
Clear preallocated memory for sizeof(*(to)).
afw_memory_decode_base64(afw_memory_t *memory, const afw_utf8_t *encoded, const afw_pool_t *p, afw_xctx_t *xctx)
Decode memory to a base64 string.
afw_memory_encode_printable_hex(afw_utf8_t *encoded, const afw_memory_t *memory, const afw_pool_t *p, afw_xctx_t *xctx)
Encode memory to a printable hex string.
afw_memory_encode_base64(afw_utf8_t *encoded, const afw_memory_t *memory, const afw_pool_t *p, afw_xctx_t *xctx)
Encode memory to as base64 string.
afw_memory_decode_printable_hex(afw_memory_t *memory, const afw_utf8_t *encoded, const afw_pool_t *p, afw_xctx_t *xctx)
Decode memory to a printable hex string.
afw_double_t afw_number_utf8_to_double(const afw_utf8_t *s, const afw_pool_t *p, afw_xctx_t *xctx)
Convert a utf8 string to double in specified pool.
afw_integer_t afw_number_utf8_to_integer(const afw_utf8_t *s, const afw_pool_t *p, afw_xctx_t *xctx)
Convert a utf8 string to integer in specified pool.
afw_boolean_t afw_number_is_negative_infinity(double d)
Determine if double is negative infinity.
afw_boolean_t afw_number_is_NaN(double d)
Determine if double is not a number.
afw_number_double_to_utf8(afw_double_t d, const afw_pool_t *p, afw_xctx_t *xctx)
Convert a double to utf8 in specified pool.
afw_boolean_t afw_number_is_positive_infinity(double d)
Determine if double is positive infinity.
afw_number_integer_to_utf8(afw_integer_t i, const afw_pool_t *p, afw_xctx_t *xctx)
Convert an integer to utf8 in specified pool.
#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_create_managed(p, xctx)
Create an empty entity object in its own pool.
#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.
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.
#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_dayTimeDuration_internal_to_utf8(const afw_dayTimeDuration_t *dayTimeDuration, const afw_pool_t *p, afw_xctx_t *xctx)
Convert internal dayTimeDuration to utf8 xml schema dayTimeDuration in specified pool.
afw_yearMonthDuration_compare(const afw_yearMonthDuration_t *v1, const afw_yearMonthDuration_t *v2, afw_xctx_t *xctx)
compare two yearMonthDuration values.
afw_date_utf8_set_internal(const afw_utf8_t *utf8, afw_date_t *internal, afw_xctx_t *xctx)
Convert utf8 xml schema date to internal and set.
afw_dayTimeDuration_compare(const afw_dayTimeDuration_t *v1, const afw_dayTimeDuration_t *v2, afw_xctx_t *xctx)
compare two dateTime values.
afw_date_internal_to_utf8(const afw_date_t *date, const afw_pool_t *p, afw_xctx_t *xctx)
Convert internal date to utf8 xml schema date in specified pool.
afw_dateTime_internal_to_utf8(const afw_dateTime_t *dateTime, const afw_pool_t *p, afw_xctx_t *xctx)
Convert internal dateTime to utf8 xml schema dateTime in specified pool.
afw_time_utf8_set_internal(const afw_utf8_t *utf8, afw_time_t *internal, afw_xctx_t *xctx)
Convert utf8 xml schema dateTime to internal and set.
afw_yearMonthDuration_internal_to_utf8(const afw_yearMonthDuration_t *yearMonthDuration, const afw_pool_t *p, afw_xctx_t *xctx)
Convert internal yearMonthDuration to utf8 xml schema yearMonthDuration in specified pool.
afw_time_internal_to_utf8(const afw_time_t *time, const afw_pool_t *p, afw_xctx_t *xctx)
Convert internal time to utf8 xml schema time in specified pool.
afw_date_compare(const afw_date_t *v1, const afw_date_t *v2, afw_xctx_t *xctx)
compare two date values.
afw_dateTime_compare(const afw_dateTime_t *v1, const afw_dateTime_t *v2, afw_xctx_t *xctx)
compare two dateTime values.
afw_time_compare(const afw_time_t *v1, const afw_time_t *v2, afw_xctx_t *xctx)
compare two time values.
afw_dateTime_utf8_set_internal(const afw_utf8_t *utf8, afw_dateTime_t *internal, afw_xctx_t *xctx)
Convert utf8 xml schema dateTime to internal and set.
afw_dayTimeDuration_utf8_set_internal(const afw_utf8_t *utf8, afw_dayTimeDuration_t *internal, afw_xctx_t *xctx)
Convert utf8 xml schema dayTimeDuration to internal and set.
afw_yearMonthDuration_utf8_set_internal(const afw_utf8_t *utf8, afw_yearMonthDuration_t *internal, afw_xctx_t *xctx)
Convert utf8 xml schema yearMonthDuration to internal and set.
const afw_utf8_t * afw_utf8_clone(const afw_utf8_t *string, const afw_pool_t *p, afw_xctx_t *xctx)
Clone a utf-8 string into a specific pool.
afw_value_equal(const afw_value_t *value1, const afw_value_t *value2, afw_xctx_t *xctx)
Test whether two values are equal.
afw_value_clone(const afw_value_t *value, const afw_pool_t *p, afw_xctx_t *xctx)
Clone a value to specified pool.
#define afw_value_is_function_definition(A_VALUE)
Macro to determine if value is a function definition.
afw_value_decompile_value(const afw_value_t *instance, const afw_writer_t *writer, afw_xctx_t *xctx)
Decompile Value::.
#define AFW_VALUE_INTERNAL(_VALUE_)
Macro to get const void * of the internal of a value.
#define AFW_VALUE_ASSERT_IS_DATA_TYPE(A_VALUE, A_DATA_TYPE, A_SCOPE)
Throw and error if A_VALUE is not evaluated data type A_DATA_TYPE.
#define afw_value_is_script_function(A_VALUE)
Macro to determine if value is lambda definition.
#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.
Interface afw_data_type public struct.
date, time, and time zone.
Interface afw_list public struct.
Struct for memory pointer and size.
Interface afw_object public struct.
Interface afw_pool public struct.
NFC normalized UTF-8 string.
struct for data type boolean values.
Struct for function value.
struct for data type list values.
struct for data type object values.
Interface afw_value public struct.
Interface afw_writer public struct.
Interface afw_xctx public struct.