19#include "acme/prototype/prototype/enumeration.h"
25template <
typename TYPE >
29template <
typename TYPE >
33template <
typename ITERATOR_TYPE >
37using scoped_ansi_string = scoped_string_base < const_char_pointer >;
38using scoped_wd16_string = scoped_string_base < const ::wd16_character * >;
39using scoped_wd32_string = scoped_string_base < const ::wd32_character * >;
40using scoped_wide_string = scoped_string_base < const ::wide_character * >;
43using scoped_string = scoped_ansi_string;
44using scoped_wstring = scoped_wide_string;
57 using listing = ::array_particle < listing_base >;
62template <
typename RESULT >
70template <
typename HOLDEE >
112template <
typename T >
114std::is_convertible < T, const_char_pointer >::value ||
115std::is_convertible < T, const ::wd16_character * >::value ||
116std::is_convertible < T, const ::wd32_character * >::value;
119template <
typename T >
121std::is_convertible < T, ::ansi_character * >::value ||
122std::is_convertible < T, ::wd16_character * >::value ||
123std::is_convertible < T, ::wd32_character * >::value;
125template <
typename T >
127const_c_string < T > ||
128non_const_c_string < T >;
130template <
typename T >
136 std::is_convertible < T, const_char_pointer >::value,
137 const_char_pointer ,
typename if_else <
138 std::is_convertible < T, const ::wd16_character * >::value,
139 const ::wd16_character *,
141 std::is_convertible < T, const ::wd32_character * >::value,
142 const ::wd32_character *,
161template <
template <
class...>
class Template,
class... Args>
162void derived_from_specialization_impl(
const Template<Args...>&);
164template <
class T,
template <
class...>
class Template>
166 derived_from_specialization_impl<Template>(t);
169template <
class... Types>
struct inherits : Types... {};
182template <
typename T1,
typename T2 >
184 using type = if_else< (
sizeof(T1) >=
sizeof(T2) ), T1, T2>;
188template <
typename T1,
typename T2 >
189using largest_type =
typename largest_type_struct<T1, T2>::type;
192template <
typename T1,
typename T2 >
194 using type = if_else <
195 ((::std::is_floating_point_v < T1 > &&
sizeof(T1) <
sizeof(T2))
196 || (::std::is_floating_point_v < T2 > &&
sizeof(T2) <
sizeof(T1))),
198 if_else < ((::std::is_floating_point_v < T1 >
199 && ::std::is_floating_point_v < T2 > &&
200 sizeof(T1) >
sizeof(T2))
201 || (
sizeof(T1) ==
sizeof(T2) &&
202 ::std::is_floating_point_v < T1 >)
203 || (
sizeof(T1) >
sizeof(T2))), T1, T2 > >;
207template <
typename T1,
typename T2 >
208using largest_number =
typename largest_number_struct<T1, T2>::type;
212template <
typename T1,
typename T2 >
215 using type = if_else< (
sizeof(T1) <
sizeof(T2)), T1, T2>;
219template <
typename T1,
typename T2 >
220using smallest_type =
typename smallest_type_struct<T1, T2>::type;
223template <
typename T1,
typename T2,
typename T3 >
225 using type = largest_type < largest_type < T1, T2 >, T3 >;
229template <
typename T1,
typename T2,
typename T3 >
230using largest_type_of_3 =
typename largest_type_of_3_struct < T1, T2, T3 >::type;
234template <
typename TYPE, std::
size_t SIZE >
235using array_reference = TYPE(&)[SIZE];
241 template <
typename TYPE >
244 template <
typename TYPE >
245 class def_with_zero_init;
247 template <
typename TYPE >
250 template <
typename TYPE >
261 template <
typename TYPE, ::heap::enum_memory t_ememory >
267template <
class TYPE,
class ARG_TYPE = const TYPE &,
class TYPED = ::typed::nodef < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
273template <
class TYPE,
class ARG_TYPE = const TYPE & >
276template <
class TYPE,
class ARG_TYPE = const TYPE &,
class TYPED = ::typed::nodef < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
279template <
class TYPE,
class ARG_TYPE = const TYPE &,
class TYPED = ::typed::def < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
282template <
class TYPE,
class ARG_TYPE = const TYPE &,
class TYPED = ::typed::def < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
283using array = array_particle < array_base < TYPE, ARG_TYPE, TYPED, MEMORY, t_etypeContainer > > ;
285template <
class TYPE,
class ARG_TYPE = const TYPE&,
class TYPED = ::typed::def_with_zero_init < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
286using array_with_zero_init = array < TYPE, ARG_TYPE, TYPED, MEMORY, t_etypeContainer >;
292template <
typename ARRAY_BASE, ::i32 t_preallocated_array_size >
296template <
typename FUNCTION >
299template <
class TYPE,
class ARG_TYPE = const TYPE & >
303template <
typename T >
307template <
typename SINGLE >
318template <
typename ITEM, enum_allocate t_eallocate = e_allocate_normal >
322template <
typename KEY,
typename NODE = single < KEY > >
323using set = node_set_base < ::make_single < NODE > >;
326template <
typename T1,
typename T2 >
330template <
typename PAIR, enum_allocate t_eallocate = e_allocate_normal >
334template <
typename TYPE1,
typename TYPE2,
class PAIR = pair < TYPE1, TYPE2 >, enum_allocate t_eallocate = e_allocate_normal >
335using map_base = pair_map_base < PAIR, t_eallocate >;
337template <
typename TYPE1,
typename TYPE2, enum_allocate t_eallocate = e_allocate_normal,
class PAIR = pair < TYPE1, TYPE2 > >
338using map_base2 = pair_map_base < PAIR, t_eallocate >;
342template<
typename MAP_BASE>
346template <
typename TYPE1,
typename TYPE2,
class PAIR = pair < TYPE1, TYPE2 > >
347using map = map_particle < map_base < TYPE1, TYPE2, PAIR > >;
353template<
class EENUM, EENUM edefault = (EENUM)0>
358template <
typename TYPE,
typename PAIR = pair < ::atom, TYPE > >
359using atom_map_base = ::map_base < atom, TYPE, PAIR >;
362template <
typename TYPE >
366template <
typename TYPE >
370template <
class TYPE,
class ARG_TYPE = const TYPE &,
class ARRAY_TYPE = array_base < TYPE, ARG_TYPE > >
373template <
class TYPE,
class ARG_TYPE = TYPE const &,
class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
381template <
class TYPE,
class ARG_TYPE = TYPE const &,
class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
385template <
class TYPE,
class ARG_TYPE = TYPE const &,
class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
397 template <
typename TYPE >
401 template <
typename TYPE >
405#if REFERENCING_DEBUGGING
408 CLASS_DECL_ACME
void __on_start_construct(
void* p, memsize s,
bool bParticleAndHeapAllocation);
410 CLASS_DECL_ACME
void __on_after_construct_non_subparticle();
411 CLASS_DECL_ACME
void start_suppressing_referencing_debugging();
412 CLASS_DECL_ACME
void cease_referencing_debugging_suppression();
413 CLASS_DECL_ACME
bool is_suppressing_referencing_debugging();
422template <
typename TYPE,
typename ARG_TYPE = const TYPE &,
class TYPED = ::typed::rawcopy < TYPE >,
class MEMORY = ::heap::typed_memory < TYPE, ::heap::e_memory_array >, ::enum_type t_etypeContainer = e_type_element >
425template<
class TYPE,
class ARG_TYPE = const TYPE &,
class TYPED = ::typed::def<TYPE>,
426 class MEMORY = ::heap::typed_memory<TYPE, ::heap::e_memory_array>,
427 ::enum_type t_etypeContainer = e_type_element>
434template <
typename POINTER,
class ARRAY_TYPE = comparable_array_base < POINTER, POINTER, comparable_eq_array_base < POINTER, POINTER, raw_array_base < POINTER, POINTER, ::allocator::zero < POINTER > > > > >
441using exception_array_base = ::array_base < ::exception >;
443using exception_array = ::array_particle < ::exception_array_base >;
452using const_char_ptra_base= address_array_base < const_char_pointer >;
453using const_char_ptra = ::array_particle < const_char_ptra_base >;
456using void_ptra = ::array_particle < void_ptra_base >;
459using particle_address_array_base = address_array_base < particle * >;
460using particle_address_array = ::array_particle <particle_address_array_base> ;
465template <
typename T >
471template <
typename T >
473 && !std::is_integral < T >::value
474 && !std::is_enum < T >::value
475 && !std::is_floating_point < T >::value;
492template <
typename FUNCTION >
499using procedure_array_base = ::comparable_array_base < ::procedure >;
501using procedure_map = ::atom_map_base < ::procedure_array >;
503using procedure_list_base = ::list_base < ::procedure >;
508template <
typename TYPE, ::enum_type t_etypeContainer = e_type_element >
512template <
typename TYPE, ::enum_type t_etypeContainer = e_type_element >
520using char_array_base = numeric_array_base < ::i8 >;
521using short_array_base = numeric_array_base < ::i16 >;
522using i32_array_base = numeric_array_base < ::i32 >;
523using i64_array_base = numeric_array_base < ::i64 >;
525using u8_array_base = numeric_array_base < ::u8 >;
526using u16_array_base = numeric_array_base < ::u16 >;
527using unsigned_i32_array_base = numeric_array_base < ::u32 >;
528using u64_array_base = numeric_array_base < ::u64 >;
530using f32_array_base = numeric_array_base < ::f32 >;
531using f64_array_base = numeric_array_base < ::f64 >;
535using char_array = ::array_particle < char_array_base >;
536using short_array = ::array_particle < short_array_base >;
537using i32_array = ::array_particle < i32_array_base >;
538using i64_array = ::array_particle < i64_array_base >;
540using u8_array = ::array_particle < u8_array_base >;
541using u16_array = ::array_particle < u16_array_base >;
542using u32_array = ::array_particle < unsigned_i32_array_base >;
543using u64_array = ::array_particle < u64_array_base >;
545using f32_array = ::array_particle < f32_array_base >;
546using f64_array = ::array_particle < f64_array_base >;
549using index_array_base = numeric_array_base < ::collection::index >;
550using count_array_base = numeric_array_base < ::collection::count >;
552using index_array = ::array_particle < index_array_base >;
553using count_array = ::array_particle < count_array_base >;
556using unsigned_i32_array_base = numeric_array_base < ::u32 >;
558using u32_array = ::array_particle < unsigned_i32_array_base >;
561using unique_int_sort_array = unique_number_sort_array < ::i32 >;
562using unique_i64_sort_array = unique_number_sort_array < ::i64 >;
568using iptr_array_base = i64_array_base;
569using uptr_array_base = u64_array_base;
570using iptr_array = i64_array_base;
571using uptr_array = u64_array;
573using unique_iptr_sort_array = unique_i64_sort_array;
578using iptr_array_base = i32_array_base;
579using uptr_array_base = unsigned_i32_array_base;
581using iptr_array = i32_array_base;
582using uptr_array = u32_array;
584using unique_iptr_sort_array = unique_int_sort_array;
592using strsize_array_base = iptr_array_base;
594using strsize_array = iptr_array;
596using process_identifier_array_base = ::numeric_array_base < process_identifier >;
598using process_identifier_array = ::array_particle < process_identifier_array_base >;
602using byte_array_base = u8_array_base;
603using byte_array = u8_array;
624template <
typename TYPE, std::
size_t SIZE >
625inline std::size_t item_count(array_reference < TYPE, SIZE > &) {
return SIZE; }
628template <
typename T >
629inline ::u8 byte_clip(
const T & t) {
return ((::u8)(((t) < (::u8)0) ? (::u8)0 : (((t) > (::u8)255) ? (::u8)255 : (::u8)t))); }
632template <
typename A,
typename B >
633void __swap(A & a, B & b)
646template <
class TYPEA,
class TYPEB,
class ARRAYA = array < TYPEA >,
class ARRAYB = array < TYPEB > >
650using i32_spreadset = spreadset < ::i32, ::i32, unique_int_sort_array, unique_int_sort_array >;
652using i64_spreadset = spreadset < ::i64, ::i64, unique_i64_sort_array, unique_i64_sort_array >;
658template <
typename TYPE, std::
size_t SIZE >
659inline array_reference < TYPE, SIZE >& zero(TYPE(&)[SIZE]);
662template <
typename TYPE >
663inline TYPE& zero(TYPE & type);
666template <
typename TYPE, std::
size_t Size >
667inline bool __is_zero(TYPE(&array)[Size]);
744template<
typename TYPE>
749 using RAW_TYPE = TYPE;
754template<
typename TYPE>
759 using RAW_TYPE = TYPE;
764template<
typename TYPE>
769 using RAW_TYPE = TYPE;
774template<
typename TYPE>
779 using RAW_TYPE = TYPE;
784template<
typename TYPE>
789 using RAW_TYPE = TYPE;
812template <
typename HOLDEE >
822 void __swap(T& a, T& b)
835#define return_(y, x) {y = x; return;}
842template<
typename POINTER_TYPE>
851template <
typename POINTER_TYPE >
854template <
typename POINTER_TYPE >
855class cotaskptr_array;
873inline void __dynamic_cast(T*& ptarget, T* psource);
876template <
class T ,
typename T2 >
877inline void __dynamic_cast(T*& ptarget, T2* psource);
880using enum_application_capability_array = ::comparable_array < enum_application_capability >;
930consteval auto as_const(
auto asconst)
938template <
typename T >
939auto as_non_const(
const T * p)
942 return (non_const < T > *) p;
947template <
typename TYPE >
948using index_map_base = map_base < ::collection::index, TYPE >;
953template <
typename TYPE >
954constexpr memsize index_of(
const TYPE * p,
const TYPE * pBegin);
958struct dereference_struct {
using type = T; };
960struct dereference_struct<T *> {
using type = T; };
962template <
typename T >
963using dereference =
typename dereference_struct < T >::type;
992template <
typename ENUM >
997using enum_application_capability_array = ::comparable_array < enum_application_capability >;
1003using payload_array = ::array_particle < payload_array_base >;
1010using arguments = payload_array;
1025 using image_pointer = ::pointer<::image::image>;
1031using mutex_pointer = ::pointer<::mutex>;
1040 using font_pointer = ::pointer<font>;
1046using item_pointer = ::pointer<::item>;
1048using memory_pointer = ::pointer<::make_particle1<::memory>>;
1051template<
class T,
typename ARG_T = const T *,
typename ARRAY_BASE = array_base<::po
inter<T>, ARG_T>>
1054template<
class T,
typename ARG_T = const T *,
typename ARRAY_BASE = array_base<::po
inter<T>, ARG_T>>
1057template<
typename TYPE, ::i32 t_iSize, enum_array t_earray = e_array_none,
typename ARG_TYPE = const TYPE &>
1060template<
typename TYPE,
typename ARG_TYPE>
1064template<
class T, ::i32 t_preallocated_array_size,
typename ARG_T = const T * >
1076using regular_expression_pointer = ::pointer<::regular_expression::regular_expression>;
1079using file_pointer = ::pointer<::file::file>;
1082using memory_file_pointer = ::pointer<::memory_file>;
1085using folder_pointer = ::pointer<::folder>;
1088inline ::pointer<T> pointer_transfer(T *p);
1091template<
typename T,
typename... Args>
1092inline ::pointer<T> __call_allocate(Args &&...args);
1095using manager_pointer = ::pointer<manager>;
1096using context_pointer = ::pointer<context>;
1099using topic_pointer = ::pointer<topic>;
1100using extended_topic_pointer = ::pointer<extended_topic>;
1108using task_pointer = ::pointer<task>;
1114CLASS_DECL_ACME task_pointer fork(
::particle *pparticle, const ::procedure &procedure);
1116using task_pointer = ::pointer<task>;
1122CLASS_DECL_ACME task_pointer fork(
::particle *pparticle, const ::procedure &procedure);
1129 using graphics_pointer = ::pointer<graphics>;
1147 using font_enumeration_item_array = pointer_array<font_enumeration_item>;
1164 using session_map = ::index_map_base<::pointer<::platform::session>>;
1170template <
typename TYPE >
1174template <
typename T >
1175using cast_array = ::comparable_array_base < ::cast < T > >;
1178template<
class ARG_TYPE>
1179inline bool EqualElements(ARG_TYPE element1, ARG_TYPE element2);
Definition _aaa_shape.h:23
Definition address_array.h:12
Definition array_base.h:12
Definition make_particle.h:35
Definition array_range.h:15
Definition base_array.h:112
Definition base_enum.h:24
Definition binary_stream.h:12
Definition block_array.h:7
Definition enumeration.h:14
Definition comparable_array.h:9
Definition make_particle.h:95
Definition comparable_eq_array.h:11
Definition make_particle.h:65
Definition _template_forward_declaration.h:297
Definition _template_forward_declaration.h:862
Definition typed_memory.h:72
Definition _template_forward_declaration.h:72
Definition make_particle.h:11
Definition _template_forward_declaration.h:805
Definition numeric_array.h:37
Definition _template_forward_declaration.h:327
Definition pointer_array.h:17
Definition pointer_array.h:1882
Definition _template_forward_declaration.h:293
Definition procedure_array.h:13
Definition _template_forward_declaration.h:63
Definition ptr_array.h:14
Definition raw_array.h:15
Definition _template_forward_declaration.h:746
Definition scoped_string_base.h:13
Definition _template_forward_declaration.h:304
Definition aaa_timer_callback.h:9
Definition numeric_array.h:243
Definition write_text_stream.h:43
Definition _template_forward_declaration.h:472
Definition _template_forward_declaration.h:126
Definition _template_forward_declaration.h:113
Definition _template_forward_declaration.h:165
Definition _template_forward_declaration.h:120
Definition filesystem.h:16
Definition _template_forward_declaration.h:132
Definition _template_forward_declaration.h:169
Definition _template_forward_declaration.h:193
Definition _template_forward_declaration.h:224
Definition _template_forward_declaration.h:183
Definition _forward_declaration.h:17
Definition _template_forward_declaration.h:214