52class CLASS_DECL_ACME payload :
59 payload * refdbg_this()
const {
return (payload*)
this; }
68 para_return m_parareturn;
78#if defined(__APPLE__) || defined(__ANDROID__) || defined(RASPBERRYPIOS)
100 file_time m_filetime;
132 class time * m_ptime;
142 ::string_array * m_pstra;
144 ::payload_array * m_ppayloada;
146 ::i64_array * m_plonglonga;
147 ::f32_array * m_pf32a;
148 ::f64_array * m_pf64a;
153 ::range < const ::ansi_character * > m_ansirange;
159#if REFERENCING_DEBUGGING
162 ::reference_referer * m_preferer;
170 payload(enum_type etype);
172 payload(const ::payload & payload);
177 payload(::payload && payload) :
178 m_etype(payload.m_etype)
180 m_payloadall = payload.m_payloadall;
181#if REFERENCING_DEBUGGING
182 m_preferer = payload.m_preferer;
183 payload.m_preferer =
nullptr;
185 payload.m_etype = e_type_new;
186 payload.m_payloadall = {};
188 template <
bool_type BOOL > payload(BOOL b) : m_etype(e_type_bool) {m_b = b;}
189 template < same_as < ::i8 > CHAR > payload(CHAR c) : m_etype(e_type_i8) {m_i8 = c;}
191 template < same_as < ::u8 > UNSIGNED_CHAR > payload(UNSIGNED_CHAR uch) : m_etype(e_type_u8) {m_u8 = uch;}
192 template < same_as < ::i16 > SHORT > payload(SHORT sh) : m_etype(e_type_i16) {m_i16 = sh;}
193 template < same_as < ::u16 > UNSIGNED_SHORT > payload(UNSIGNED_SHORT ush) : m_etype(e_type_u16) {m_u16 = ush;}
194 template < same_as < ::i32 > INT > payload(INT i) : m_etype(e_type_i32) {m_i32 = i;}
195 template < same_as < ::u32 > UNSIGNED_INT > payload(UNSIGNED_INT ui) : m_etype(e_type_u32) {m_u32 = ui;}
196 template < same_as < ::i64 > LONG_LONG > payload(LONG_LONG ll) : m_etype(e_type_i64) {m_i64 = ll;}
197 template < same_as < ::u64 > UNSIGNED_LONG_LONG > payload(UNSIGNED_LONG_LONG ull) : m_etype(e_type_u64) {m_u64 = ull;}
198 template < same_as < ::f32 > FLOAT > payload(FLOAT f) : m_etype(e_type_f32) {m_f32 = f;}
199 template < same_as < ::f64 > DOUBLE > payload(DOUBLE d) : m_etype(e_type_f64) {m_f64 = d;}
212 payload(::string * pstr);
216 payload(class ::time * ptime);
217 template < prototype_
character_range CHARACTER_RANGE >
218 payload(
const CHARACTER_RANGE &
range);
221 template < prototype_
integral INTEGRAL >
222 payload(const_char_pointer begin, INTEGRAL count) : payload(begin, begin + count) {}
223 payload(const_char_pointer begin, const_char_pointer end);
224 payload(const_char_pointer psz);
225 payload(const ::scoped_string & scopedstr);
227 payload(const ::atom &
atom);
228 payload(const ::earth::time & time);
229 payload(const ::color::color & color);
230 payload(const ::color::hls & hls);
231 payload(const ::subparticle &
particle);
232 payload(const ::file::path & path);
233 payload(const ::string_array_base & stra);
234 payload(const ::i32_array_base & ia);
235 payload(const ::i64_array_base & lla);
236 payload(const ::f32_array_base & f32a);
237 payload(const ::f64_array_base & f64a);
238 payload(const ::payload_array & payloada);
239 payload(const ::property_set & set);
241 payload(
const class time & time);
250 payload(const ::pointer < T > & p)
253 m_etype = e_type_new;
255 _set_element(p.m_psubparticle);
277 template <
typename BLOCK_TYPE >
278 payload(const ::raw_block < BLOCK_TYPE > & rawblock) ;
281 payload(const ::inline_number_string& a);
311 template < prototype_enum ENUM >
313 m_etype(e_type_atom),
322 void clear_data() { m_etype = e_type_null; }
325 void set_type(enum_type enum_type,
bool bConvert =
true);
326 enum_type get_type()
const;
327 atom::enum_type atom_type()
const;
333 template <
typename T >
334 void set_pointer(const ::pointer < T > & p)
341 template <
typename T >
342 bool has_pointer()
const
349 template <
typename T >
357 template <
typename TYPE >
358 ::pointer < TYPE > pointer()
const;
362 ::i64 payload_release();
364 ::i64 logical_release();
368 bool is_element()
const {
return m_etype >= e_type_element && m_etype < e_type_last_element; }
370 bool is_element_set()
const {
return is_element() && ::is_set(m_p); }
372 bool is_element_null()
const {
return is_element() && ::is_null(m_p); }
374 bool is_numeric()
const;
377 bool has_reference_of_type(enum_type etype)
const;
380 inline bool is_number()
const
387 bool target_constrained_assign(const ::payload & payload);
390 bool get_bool()
const;
392 template <
typename ENUM >
393 ENUM e(ENUM edefault = enum_default < ENUM >())
const {
return (ENUM)(::i64)(edefault); }
420#define IMPLEMENT_PAYLOAD_ENUMERATION(ENUMTYPE) \
421 inline payload(const ::e_ ## ENUMTYPE & e) : m_etype(e_type_atom),m_atomPayload(e) { } \
422 inline ::e_ ## ENUMTYPE as_e ## ENUMTYPE() const { return as_atom().as_e ## ENUMTYPE(); } \
423 inline ::e_ ## ENUMTYPE & e ## ENUMTYPE ## _reference() { return atom_reference().e ## ENUMTYPE ## _reference(); }
424 IMPLEMENT_PAYLOAD_ENUMERATION(
status);
425 IMPLEMENT_PAYLOAD_ENUMERATION(command);
426 IMPLEMENT_PAYLOAD_ENUMERATION(check);
427#undef IMPLEMENT_PAYLOAD_ENUMERATION
430 template < prototype_enum ENUM >
431 bool operator ==(ENUM e)
const
434 if (m_etype == e_type_atom)
437 return m_atomPayload == e;
440 else if (m_etype == e_type_patom)
443 return *m_patom == e;
447 return operator == (::as_i64(e));
457 void as(::string & str)
const;
461#if defined(__APPLE__) || defined(__ANDROID__) || defined(RASPBERRYPIOS) || defined(WINDOWS)
462 long get_long(
long lDefault = 0)
const;
463 ulong get_unsigned_long(ulong ulDefault = 0)
const;
466 ::i8 & as(::i8 & i)
const {
return i = as_i8(); }
467 ::u8 & as(::u8 & u)
const {
return u = as_u8(); }
468 ::i16 & as(::i16 & i)
const {
return i = as_i16(); }
469 ::u16 & as(::u16 & u)
const {
return u = as_u16(); }
470 ::i32 & as(::i32 & i)
const {
return i = as_i32(); }
471 ::u32 & as(::u32 & u)
const {
return u = as_u32(); }
472 ::i64 & as(::i64 & i)
const {
return i = as_i64(); }
473 ::u64 & as(::u64 & u)
const {
return u = as_u64(); }
474 ::f32 & as(::f32 & f)
const {
return f = as_f32(); }
475 ::f64 & as(::f64 & f)
const {
return f = as_f64(); }
478 ::i8 as_i8(::i8 iDefault = 0)
const;
479 ::u8 as_u8(::u8 uDefault = 0)
const;
480 ::i16 as_i16(::i16 iDefault = 0)
const;
481 ::u16 as_u16(::u16 uDefault = 0)
const;
482 ::i32 as_i32(::i32 iDefault = 0)
const;
483 ::u32 as_u32(::u32 uiDefault = 0)
const;
484 ::i64 as_i64(::i64 iDefault = 0)
const;
485 ::u64 as_u64(::u64 uiDefault = 0)
const;
486 ::f32 as_f32(::f32 fDefault = 0)
const;
487 ::f64 as_f64(::f64 fDefault = 0)
const;
490 inline ::iptr as_iptr(::iptr iDefault = 0)
const;
491 inline ::uptr as_uptr(::uptr uiDefault = 0)
const;
495 ::file_time as_file_time()
const;
499 ::block as_block()
const;
502 ::procedure get_procedure()
const;
513 ::posix_time as_time(
const class ::time & timeDefault)
const;
515 ::string as_string(const ::scoped_string & scopedstrOnNull)
const;
516 ::string as_string()
const;
517 ::string get_recursive_string()
const;
519 ::atom as_atom(const ::atom & idDefault)
const;
522 ::string_array_base as_string_array()
const;
523 ::i32_array_base as_int_array()
const;
524 ::i64_array_base as_i64_array()
const;
525 ::f32_array_base as_f32_array()
const;
526 ::f64_array_base as_f64_array()
const;
529 class ::time as_time()
const;
533 bool is_scalar()
const;
534 bool is_array()
const;
535 bool is_floating()
const;
536 bool is_integer()
const;
537 bool is_natural()
const;
538 bool is_boolean()
const;
540 bool is_time()
const;
541 bool is_text()
const;
542 bool is_fairly_convertible_to_text()
const;
543 bool has_string_reference()
const;
549 enum_type integer_type()
const;
550 enum_type left_hand_integer_type()
const;
552 enum_type floating_type()
const;
553 enum_type left_hand_floating_type()
const;
556 payload dereference();
565 void set_string(const ::scoped_string & scopedstr);
567 void set_id(const ::atom &
atom);
569 void unset(const ::scoped_string & scopedstrPropertySetKey);
573 bool is_null()
const;
574 bool is_new_or_null()
const;
575 bool is_empty()
const;
576 bool has_character()
const;
579 bool is_bool_false()
const;
581 bool is_true()
const;
582 bool is_true_or_empty()
const;
586 bool casts_to(::enum_type etype)
const;
591 bool is_property_true_or_empty(const ::atom &
atom)
const;
592 bool is_property_true(const ::atom &
atom)
const;
593 bool is_property_false(const ::atom &
atom)
const;
596 bool begins(const ::scoped_string & scopedstrPrefix)
const;
597 bool ends(const ::scoped_string & scopedstrSuffix)
const;
598 bool case_insensitive_begins(const ::scoped_string & scopedstrPrefix)
const;
599 bool case_insensitive_ends(const ::scoped_string & scopedstrSuffix)
const;
601 bool begins_eat(const ::scoped_string & scopedstrPrefix);
602 bool ends_eat(const ::scoped_string & scopedstrSuffix);
603 bool case_insensitive_begins_eat(const ::scoped_string & scopedstrPrefix);
604 bool case_insensitive_ends_eat(const ::scoped_string & scopedstrSuffix);
606 payload get_topic(const ::atom &
atom)
const;
609 payload & operator ++(::i32);
612 payload operator -(const ::payload & payload)
const;
613 payload operator *(const ::payload & payload)
const;
614 payload operator /(const ::payload & payload)
const;
617 payload & operator -=(const ::payload & payload);
618 payload & operator *=(const ::payload & payload);
619 payload & operator /=(const ::payload & payload);
622 payload addition(const ::payload & payload)
const;
623 payload subtraction(const ::payload & payload)
const;
624 payload multiplication(const ::payload & payload)
const;
625 payload division(const ::payload & payload)
const;
627 payload & add(const ::payload & payload);
628 payload & subtract(const ::payload & payload);
629 payload & multiply(const ::payload & payload);
630 payload & divide(const ::payload & payload);
632 bool operator !()
const
640 bool as_bool()
const;
642 operator bool()
const {
return this->as_bool(); }
644 operator ::i8()
const {
return this->as_i8(); }
645 operator ::u8()
const {
return this->as_u8(); }
646 operator ::i16()
const {
return this->as_i16(); }
647 operator ::u16()
const {
return this->as_u16(); }
648 operator ::i32()
const {
return this->as_i32(); }
649 operator ::u32()
const {
return this->as_u32(); }
650 operator ::i64()
const {
return this->as_i64(); }
651 operator ::u64()
const {
return this->as_u64(); }
655 operator ::f32()
const {
return this->as_f32(); }
656 operator ::f64()
const {
return this->as_f64(); }
665 operator ::file_time()
const {
return this->as_file_time(); }
666 operator ::earth::time()
const {
return this->as_earth_time(); }
667 operator ::color::color()
const {
return this->as_color(); }
668 operator ::color::hls()
const {
return this->as_hls(); }
669 operator ::block()
const {
return this->as_block(); }
671 ::string & string_reference();
676 ::atom & atom_reference();
679 ::string_array & string_array_reference();
680 ::i32_array & i32_array_reference();
681 ::i64_array & i64_array_reference();
682 ::f32_array & f32_array_reference();
683 ::f64_array & f64_array_reference();
684 ::payload_array & payload_array_reference();
685 class ::time & time_reference();
691 ::file_time & file_time_reference();
696 const ::string_array & string_array_reference()
const;
697 const ::i32_array & i32_array_reference()
const;
698 const ::i64_array & i64_array_reference()
const;
699 const ::f32_array & f32_array_reference()
const;
700 const ::f64_array & f64_array_reference()
const;
701 const ::payload_array & payload_array_reference()
const;
702 const class time & time_reference()
const;
703 const ::property_set & property_set_reference()
const;
704 const ::property & property_reference()
const;
709 const ::file::path & file_path_reference()
const;
710 const ::file_time & file_time_reference()
const;
711 const ::earth::time & earth_time_reference()
const;
712 const ::color::color & color_reference()
const;
713 const ::color::hls & color_hls_reference()
const;
719 bool & bool_reference();
720#if defined(__APPLE__) || defined(__ANDROID__) || defined(RASPBERRYPIOS) || defined(WINDOWS)
721 long & long_reference();
722 ulong & unsigned_long_reference();
724 ::i8 & i8_reference();
725 ::u8 & u8_reference();
726 ::i16 & i16_reference();
727 ::u16 & u16_reference();
728 ::i32 & i32_reference();
729 ::u32 & u32_reference();
730 ::i64 & i64_reference();
731 ::u64 & u64_reference();
732 ::f32 & f32_reference();
733 ::f64 & f64_reference();
736 template < prototype_
signed SIGNED >
737 inline SIGNED & reference()
740 if constexpr(
sizeof(SIGNED) == 8)
743 return (SIGNED&) this->i64_reference();
746 else if constexpr(
sizeof(SIGNED) == 4)
749 return (SIGNED&) this->i32_reference();
752 else if constexpr(
sizeof(SIGNED) == 2)
755 return (SIGNED&) this->i16_reference();
758 else if constexpr(
sizeof(SIGNED) == 1)
761 return (SIGNED&) this->i8_reference();
775 template < prototype_
unsigned UNSIGNED >
776 inline UNSIGNED & reference()
779 if constexpr(
sizeof(UNSIGNED) == 8)
782 return (UNSIGNED&) this->u64_reference();
785 else if constexpr(
sizeof(UNSIGNED) == 4)
788 return (UNSIGNED&) this->u32_reference();
791 else if constexpr(
sizeof(UNSIGNED) == 2)
794 return (UNSIGNED&) this->u16_reference();
797 else if constexpr(
sizeof(UNSIGNED) == 1)
800 return (UNSIGNED&) this->u8_reference();
814 template < prototype_const CONST_TYPE >
815 CONST_TYPE & reference()
const
818 return (CONST_TYPE &) ((::payload*)
this)->reference<non_const<CONST_TYPE>>();
823 template < prototype_non_const NON_CONST_TYPE >
824 NON_CONST_TYPE * raw_pointer()
827 return &reference<NON_CONST_TYPE>();
832 template < prototype_const CONST_TYPE >
833 CONST_TYPE * raw_pointer()
const
836 return &reference<CONST_TYPE>();
841 character_count length()
const;
844 template <
typename TYPE >
845 inline payload & operator = (const ::pointer<TYPE> & pointer)
848 _set_element(pointer.m_psubparticle);
855 template < prototype_function FUNCTION >
856 inline payload & operator = (
const FUNCTION &
function)
866 inline payload & operator = (nullptr_t){ set_type(e_type_null,
false);
return *
this; }
871 _set_element(pelement);
879 payload & operator = (
::memory * pmemory);
881 template <
typename PREDICATE >
882 void predicate_each(PREDICATE predicate)
885 auto c = array_get_count();
887 for (
auto i = 0; i < c; i++)
897 void payload_increment_reference_count();
899 ::i32 & _as(::i32 & i)
const
908 ::string & _as(::string & str)
const
917 payload & operator = (const ::subparticle & o);
919 payload & operator = (const ::file::path & path);
933 payload & operator |= (const ::file::e_flag & eflag);
942 payload & operator = (para_return & eret);
944#elif defined(__APPLE__) || defined(__ANDROID__) || defined(RASPBERRYPIOS)
945 payload & operator = (
long l);
949 payload & assign_bool (
bool b) {
return __assign_primitive( m_b , e_type_bool , b ); }
951#define NUMBER_TYPE_OPERATION(NUMBER_TYPE, NUMBER_NAME, NUMBER_SHORT_NAME, UPPER_CASE_NAME) \
952payload & assign_## NUMBER_NAME (NUMBER_TYPE NUMBER_SHORT_NAME) { return __assign_primitive(m_## NUMBER_SHORT_NAME , e_type_## NUMBER_NAME, NUMBER_SHORT_NAME ); }
953 DO_FOR_NUMBER_TYPES(NUMBER_TYPE_OPERATION)
954#undef NUMBER_TYPE_OPERATION
967 payload & assign_pbool (
bool * pb) {
return __assign_primitive_pointer(m_pb , e_type_pbool , pb); }
968 payload & assign_pi8 (::i8 * pi) {
return __assign_primitive_pointer(m_pi8 , e_type_pi8 , pi); }
969 payload & assign_pu8 (::u8 * pu) {
return __assign_primitive_pointer(m_pu8 , e_type_pu8 , pu); }
970 payload & assign_pi16 (::i16 * pi) {
return __assign_primitive_pointer(m_pi16 , e_type_pi16 , pi); }
971 payload & assign_pu16 (::u16 * pu) {
return __assign_primitive_pointer(m_pu16 , e_type_pu16 , pu); }
972 payload & assign_pi32 (::i32 * pi) {
return __assign_primitive_pointer(m_pi32 , e_type_pi32 , pi); }
973 payload & assign_pu32 (::u32 * pu) {
return __assign_primitive_pointer(m_pu32 , e_type_pu32 , pu); }
974 payload & assign_pi64 (::i64 * pll) {
return __assign_primitive_pointer(m_pi64 , e_type_pi64 , pll); }
975 payload & assign_pu64 (::u64 * pull) {
return __assign_primitive_pointer(m_pu64 , e_type_pu64 , pull); }
976 payload & assign_pf32 (::f32 * pf) {
return __assign_primitive_pointer(m_pf32 , e_type_pf32 , pf); }
977 payload & assign_pf64 (::f64 * pf) {
return __assign_primitive_pointer(m_pf64 , e_type_pf64 , pf); }
982 template <
typename PRIMITIVE >
983 bool __assign_to_held_pointer_member(PRIMITIVE prototype)
986 if(get_type() == e_type_pbool)
989 *m_pb = (bool) prototype;
992 else if(get_type() == e_type_pu8)
995 *m_pu8 = (::u8) prototype;
998 else if(get_type() == e_type_pi8)
1001 *m_pi8 = (::i8) prototype;
1004 else if(get_type() == e_type_pu16)
1007 *m_pu16 = (::u16) prototype;
1010 else if(get_type() == e_type_pi16)
1013 *m_pi16 = (::i16) prototype;
1016 else if(get_type() == e_type_pu32)
1019 *m_pu32 = (::u32) prototype;
1022 else if(get_type() == e_type_pi32)
1025 *m_pi32 = (::i32) prototype;
1028 else if(get_type() == e_type_pu64)
1031 *m_pu64 = (::u64) prototype;
1034 else if(get_type() == e_type_pi64)
1037 *m_pi64 = (::i64) prototype;
1040 else if(get_type() == e_type_pf32)
1043 *m_pf32 = (::f32) prototype;
1046 else if(get_type() == e_type_pf64)
1049 *m_pf64 = (::f64) prototype;
1064 template <
typename PRIMITIVE >
1065 payload& __assign_primitive(PRIMITIVE& member, enum_type etype, PRIMITIVE prototype);
1068 template <
typename PRIMITIVE >
1069 payload & __assign_primitive_pointer(PRIMITIVE * & member, enum_type etype, PRIMITIVE * pprimitive)
1072 set_type(etype,
false);
1074 member = pprimitive;
1082 template <
bool_type BOOL > payload & operator=(BOOL b) {
return assign_bool(b); }
1083#define NUMBER_TYPE_OPERATION(NUMBER_TYPE, NUMBER_NAME, NUMBER_SHORT_NAME, UPPER_CASE_NAME) \
1084template < same_as < NUMBER_TYPE > UPPER_CASE_NAME > payload & operator = (UPPER_CASE_NAME NUMBER_SHORT_NAME) \
1085{return assign_## NUMBER_NAME(NUMBER_SHORT_NAME);}
1086 DO_FOR_NUMBER_TYPES(NUMBER_TYPE_OPERATION)
1087#undef NUMBER_TYPE_OPERATION
1102 payload & assign_pointer(::i8 * pi) {
return assign_pi8(pi); }
1103 payload & assign_pointer(::u8 * pu) {
return assign_pu8(pu); }
1104 payload & assign_pointer(::i16 * pi) {
return assign_pi16(pi); }
1105 payload & assign_pointer(::u16 * pu) {
return assign_pu16(pu); }
1106 payload & assign_pointer(::i32 * pi) {
return assign_pi32(pi); }
1107 payload & assign_pointer(::u32 * pu) {
return assign_pu32(pu); }
1108 payload & assign_pointer(::i64 * pi) {
return assign_pi64(pi); }
1109 payload & assign_pointer(::u64 * pu) {
return assign_pu64(pu); }
1110 payload & assign_pointer(::f32 * pf) {
return assign_pf32(pf); }
1111 payload & assign_pointer(::f64 * pf) {
return assign_pf64(pf); }
1114 payload & operator = (
long l);
1116 payload & operator = (const ::earth::time & time);
1117 payload & operator = (const ::color::color & color);
1118 payload & operator = (const ::color::hls & color);
1119 inline payload & operator = (const ::string & str);
1120 inline payload & operator = (const ::scoped_string & scopedstr);
1121 inline payload & operator = (::string && str);
1122 inline payload & operator = (::const_ansi_range ansirange);
1123 inline payload & operator = (const ::inline_number_string & str);
1124 payload & operator = (::string * pstr);
1127 payload & operator = (const ::wide_character * pcsz);
1128 payload& operator = (const ::ansi_character* pcsz);
1130 payload & operator = (const ::property & prop);
1140 payload & operator = (const ::payload & payload);
1141 payload & operator = (const ::i32_array_base & ia);
1142 payload & operator = (const ::string_array_base & stra);
1143 payload & operator = (const ::i64_array_base & longlonga);
1144 payload & operator = (const ::f32_array_base & f32a);
1145 payload & operator = (const ::f64_array_base & f64a);
1146 payload & operator = (const ::memory &
memory);
1147 payload & operator = (const ::payload_array & payloada);
1148 payload & operator = (const ::property_set & propset);
1149 payload & operator = (const ::atom &
atom);
1150 payload & operator = (
::atom * pid);
1151 template < prototype_enum ENUM >
1152 payload & operator = (ENUM e);
1161 payload & operator = (
const class time & time);
1162 payload & operator = (class ::time * ptime);
1163 payload & operator = (const ::block & block);
1165 template <
class ARRAY >
1166 void get_array(ARRAY & array)
const
1169 auto count = this->array_get_count();
1171 for (::i32 i = 0; i < count; i++)
1174 ::payload payloadItem = at(i);
1176 typename ARRAY::BASE_TYPE typeNewItem;
1178 ::assign(typeNewItem, payloadItem);
1180 array.add(typeNewItem);
1220 template < an_
object T >
1221 payload & assign_copy(
const T & t)
1231 template <
class T >
1232 payload & operator = (
const raw_block < T > & rawblock)
1235 return this->operator = (rawblock.block());
1239 template <
character_count n >
1240 payload & operator = (const ::i8(&cha)[n]);
1246 template < prototype_subparticle T >
1247 ::pointer < T > cast(T* pDefault);
1249 template <
class T >
1250 T & defer_create_type(T * pdefault =
nullptr)
1253 ::pointer< T > p = pdefault;
1269 template <
typename T >
1285 if (m_etype == e_type_element) {
return m_p; }
1286 return cast < ::subparticle >();
1289 ::subparticle * as_subparticle()
const {
return ((payload *)
this)->as_subparticle(); }
1291 template < prototype_subparticle T >
1294 template < prototype_subparticle T >
1297 template < prototype_subparticle T >
1298 ::pointer < T > as_pointer()
const;
1300 template < prototype_subparticle T >
1301 ::pointer < T > as_pointer();
1334 bool case_insensitive_equals(
const payload & payload)
const;
1336 ::std::strong_ordering order_payload(
const payload & payload)
const;
1338 ::std::strong_ordering case_insensitive_order(const ::payload & payload)
const;
1341 bool equals_payload(const ::payload & payload)
const;
1342 bool equals_signed(::i64 i)
const;
1343 bool equals_unsigned(::u64 u)
const;
1344 bool equals_scoped_string(const ::scoped_string & scopedstr)
const;
1347 template < prototype_
character CHARACTER >
1348 bool operator == (
const CHARACTER * psz)
const {
return equals_scoped_string(psz); }
1349 template < prototype_
character CHARACTER >
1350 bool operator == (
const character_range < const CHARACTER * > &
range)
const {
return equals_scoped_string(
range); }
1351 template < prototype_
character CHARACTER >
1352 bool operator == (
const scoped_string_base < const CHARACTER * > & scoped_string)
const {
return equals_scoped_string(scoped_string); }
1353 template < prototype_
character CHARACTER >
1354 bool operator == (
const string_base < const CHARACTER * > &
string)
const {
return equals_scoped_string(
string); }
1355 template < prototype_
character CHARACTER >
1356 bool operator == (
const string_range < const CHARACTER * > &
string_range)
const {
return equals_scoped_string(
string_range); }
1358 template < prototype_
signed SIGNED >
1359 bool operator == (SIGNED i)
const {
return equals_signed(i); }
1360 template < prototype_
unsigned UNSIGNED >
1361 bool operator == (UNSIGNED u)
const {
return equals_unsigned(u); }
1372 ::std::strong_ordering operator <=> (
const payload & payload)
const;
1373 ::std::strong_ordering operator <=> (const ::string & str)
const;
1374 ::std::strong_ordering operator <=> (const ::scoped_string & scopedstr)
const;
1375 ::std::strong_ordering operator <=> (::i64 i)
const;
1376 ::std::strong_ordering operator <=> (::i32 i)
const;
1377 ::std::strong_ordering operator <=> (
bool b)
const;
1401 ::string implode(const ::scoped_string & scopedstrGlue)
const;
1402 payload explode(const ::scoped_string & scopedstrGlue,
bool bAddEmpty =
true)
const;
1404 payload first()
const;
1405 payload last()
const;
1408 ::collection::count get_count()
const;
1411 ::payload at(::collection::index i);
1412 inline ::payload at(::collection::index i)
const {
return ((::payload *)
this)->at(i); }
1415 ::collection::count array_get_count()
const;
1416 ::collection::index array_get_upper_bound()
const;
1417 bool array_contains(const ::scoped_string & scopedstr, ::collection::index find = 0, ::collection::count count = -1)
const;
1418 bool case_insensitive_array_contains(const ::scoped_string & scopedstr, ::collection::index find = 0, ::collection::count count = -1)
const;
1419 bool array_is_empty()
const {
return array_get_count() <= 0; }
1422 ::collection::index
index_of(const ::atom &
atom)
const;
1427 ::payload find_property(const ::atom &
atom)
const;
1439 template < prototype_
integral INTEGRAL >
1440 inline ::payload operator[] (INTEGRAL i) {
return at(i); }
1441 template < prototype_
integral INTEGRAL >
1442 inline ::payload operator[] (INTEGRAL i)
const {
return at(i); }
1444 template < prototype_
character CHARACTER >
1445 inline ::property & operator[] (
const CHARACTER * psz) {
return get_property(psz); }
1446 template < prototype_
character CHARACTER >
1449 template < prototype_
character_range RANGE >
1450 inline ::property & operator[] (
const RANGE &
range) {
return get_property(
range); }
1451 template < prototype_
character_range RANGE >
1452 inline ::payload operator[](
const RANGE &
range)
const
1457 template < has_as_
string HAS_AS_STRING >
1458 inline ::property & operator[] (
const HAS_AS_STRING &
has_as_string)
1461 template < has_as_
string HAS_AS_STRING >
1462 inline ::payload operator[] (
const HAS_AS_STRING &
has_as_string)
const
1468 template < has_get_
string HAS_GET_STRING >
1469 inline ::property & operator[] (
const HAS_GET_STRING &
has_get_string)
1472 template < has_get_
string HAS_GET_STRING >
1473 inline ::payload operator[] (
const HAS_GET_STRING &
has_get_string)
const
1491 ::payload equals_ci_get(const ::scoped_string & scopedstrCompare,::payload varOnEqual,payload varOnDifferent)
const;
1492 ::payload equals_ci_get(const ::scoped_string & scopedstrCompare,::payload varOnEqual)
const;
1494 template < prototype_
integral INTEGRAL >
1495 ::payload operator - (INTEGRAL i)
const;
1496 template < prototype_
floating FLOATING >
1497 ::payload operator - (FLOATING f)
const;
1500 template < prototype_
integral INTEGRAL >
1501 ::payload operator + (INTEGRAL i)
const;
1502 template < prototype_
floating FLOATING >
1503 ::payload operator + (FLOATING f)
const;
1509 template < prototype_
integral INTEGRAL >
1510 ::payload operator / (INTEGRAL i)
const;
1511 template < prototype_
floating FLOATING >
1512 ::payload operator / (FLOATING f)
const;
1514 template < prototype_
integral INTEGRAL >
1515 ::payload operator * (INTEGRAL i)
const;
1516 template < prototype_
floating FLOATING >
1517 ::payload operator * (FLOATING d)
const;
1519 ::std::strong_ordering str_compare(const ::property & prop)
const;
1523 template < prototype_
integral INTEGRAL >
1524 ::payload & operator -= (INTEGRAL i);
1525 template < prototype_
floating FLOATING >
1526 ::payload & operator -= (FLOATING f);
1529 template < prototype_
integral INTEGRAL >
1530 ::payload & operator += (INTEGRAL i);
1531 template < prototype_
floating FLOATING >
1532 ::payload & operator += (FLOATING f);
1543 template < prototype_
integral INTEGRAL >
1544 ::payload & operator /= (INTEGRAL i);
1545 template < prototype_
floating FLOATING >
1546 ::payload & operator /= (FLOATING f);
1548 template < prototype_
integral INTEGRAL >
1549 ::payload & operator *= (INTEGRAL i);
1550 template < prototype_
floating FLOATING >
1551 ::payload & operator *= (FLOATING d);
1554 void consume_number(::ansi_range &
range);
1556 void consume_identifier(::ansi_range &
range);
1558 void parse_network_payload(::ansi_range &
range);
1560 const_char_pointer parse_network_payload(const ::scoped_string & scopedstrNetworkPayload);
1561 ::enum_type find_network_payload_child(::ansi_range &
range,
const payload & payload);
1563 ::enum_type find_network_payload_id(::ansi_range &
range,
const payload & payload);
1564 bool parse_network_payload_step(::ansi_range &
range);
1567 ::string & get_network_payload(::string & str,
bool bNewLine =
true)
const;
1568 ::string get_network_payload(
bool bNewLine =
true)
const;
1579 void _001Add(const ::string_array_base & stra);
1582 void defer_run_payload();
1584 void receive_response(
const payload & payload);