acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
_template_forward_declaration.h
1//
2// _forward_declaration.h
3// acme
4//
5// Created by Camilo Sasuke Thomas Borregaard Soerensen on 29/09/22 22:30
6// Copyright (c) 2022 Camilo Sasuke Thomas Borregaard Soerensen. All rights reserved.
7//
8// Created by camilo on 2021-08-31 16:00 BRT <3ThomasBS_!!
9//
10#pragma once
11
12
13template<typename T>
14class pointer;
15
16
17
18
19#include "acme/prototype/prototype/enumeration.h"
20
21
22
23
24//template < typename TYPE, ::enum_flag t_eflag = e_flag_none, ::enum_status t_estatus = undefined >
25template < typename TYPE >
26class make_particle1;
27
28
29template < typename TYPE >
30class array_particle;
31
32
33template < typename ITERATOR_TYPE >
35
36
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 * >;
41
42
43using scoped_string = scoped_ansi_string;
44using scoped_wstring = scoped_wide_string;
45
46
48class binary_stream;
49
52
53
54namespace file
55{
56
57 using listing = ::array_particle < listing_base >;
58
59} // namespace file
60
61
62template < typename RESULT >
63class process;
64
65
66//template<class T>
67//class pointer;
68
69
70template < typename HOLDEE >
71class holdee
72{
73};
74
75
76
77
78//template<prototype_subparticle T>
79//class pointer;
80
81
82//template<class T>
83//class pointer_array;
84
85
86
87
88//template < typename TYPE_CHAR >
89//class simple_string_base;
90//
91//
92//using simple_ansistring = simple_string_base < ::ansi_character >;
93//using simple_wd16string = simple_string_base < ::wd16_character >;
94//using simple_wd32string = simple_string_base < ::wd32_character >;
95//using simple_widestring = simple_string_base < ::wide_character >;
96
97
98//typedef simple_ansistring simple_string;
99//typedef simple_widestring simple_wstring;
100
101
102
103//template < typename >
104//constexpr bool is_const = false; // determine whether type argument is const qualified
105//
106//
107//template < typename TYPE >
108//constexpr bool is_const < const TYPE > = true;
109
110
111
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;
117
118
119template < typename T >
121std::is_convertible < T, ::ansi_character * >::value ||
122std::is_convertible < T, ::wd16_character * >::value ||
123std::is_convertible < T, ::wd32_character * >::value;
124
125template < typename T >
126concept c_string =
127const_c_string < T > ||
128non_const_c_string < T >;
129
130template < typename T >
132{
133
134 using type =
135 typename if_else <
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 *,
140 typename if_else <
141 std::is_convertible < T, const ::wd32_character * >::value,
142 const ::wd32_character *,
143 void *
144 >::type
145 >::type
146 >::type;
147
148};
149
150
151
152
153
154
155
156
157
158//class e_status;
159
160
161template <template <class...> class Template, class... Args>
162void derived_from_specialization_impl(const Template<Args...>&);
163
164template <class T, template <class...> class Template>
165concept derived_from_specialization_of = requires(const T & t) {
166 derived_from_specialization_impl<Template>(t);
167};
168
169template <class... Types> struct inherits : Types... {};
170
171
172
173
174
175//template < bool, typename T1, typename T2 >
176//struct boolean_type_selection { using type = T1; };
177//
178//template < typename T1, typename T2 >
179//struct boolean_type_selection<false, T1, T2> { using type = T2; };
180
181
182template < typename T1, typename T2 >
184 using type = if_else< (sizeof(T1) >= sizeof(T2) ), T1, T2>;
185};
186
187
188template < typename T1, typename T2 >
189using largest_type = typename largest_type_struct<T1, T2>::type;
190
191
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))),
197 ::f64,
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 > >;
204};
205
206
207template < typename T1, typename T2 >
208using largest_number = typename largest_number_struct<T1, T2>::type;
209
210
211
212template < typename T1, typename T2 >
214{
215 using type = if_else< (sizeof(T1) < sizeof(T2)), T1, T2>;
216};
217
218
219template < typename T1, typename T2 >
220using smallest_type = typename smallest_type_struct<T1, T2>::type;
221
222
223template < typename T1, typename T2, typename T3 >
225 using type = largest_type < largest_type < T1, T2 >, T3 >;
226};
227
228
229template < typename T1, typename T2, typename T3 >
230using largest_type_of_3 = typename largest_type_of_3_struct < T1, T2, T3 >::type;
231
232
233
234template < typename TYPE, std::size_t SIZE >
235using array_reference = TYPE(&)[SIZE];
236
237namespace typed
238{
239
240
241 template < typename TYPE >
242 class def;
243
244 template < typename TYPE >
245 class def_with_zero_init;
246
247 template < typename TYPE >
248 class nodef;
249
250 template < typename TYPE >
251 class rawcopy;
252
253
254
255} // namespace typed
256
257
258namespace heap
259{
260
261 template < typename TYPE, ::heap::enum_memory t_ememory >
262 class typed_memory;
263
264}
265
266
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 >
268class base_array;
269
270//template < 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 >
271//class base_array_quantum;
272
273template < class TYPE, class ARG_TYPE = const TYPE & >
274class row;
275
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 >
277class array_2d;
278
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 >
280class array_base;
281
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 > > ;
284
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 >;
287
288//template < 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 >
289//class array_non_particle;
290
291
292template < typename ARRAY_BASE, ::i32 t_preallocated_array_size >
294
295
296template < typename FUNCTION >
298
299template < class TYPE, class ARG_TYPE = const TYPE & >
300class list_base;
301
302
303template < typename T >
304class single;
305
306
307template < typename SINGLE >
308struct make_single ;
309
310
311enum enum_allocate
312{
313 e_allocate_normal,
314 e_allocate_malloc,
315};
316
317
318template < typename ITEM, enum_allocate t_eallocate = e_allocate_normal >
319class node_set_base;
320
321
322template < typename KEY, typename NODE = single < KEY > >
323using set = node_set_base < ::make_single < NODE > >;
324
325
326template < typename T1, typename T2 >
327class pair;
328
329
330template < typename PAIR, enum_allocate t_eallocate = e_allocate_normal >
331class pair_map_base;
332
333
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 >;
336
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 >;
339
340
341
342template<typename MAP_BASE>
343class map_particle;
344
345
346template < typename TYPE1, typename TYPE2, class PAIR = pair < TYPE1, TYPE2 > >
347using map = map_particle < map_base < TYPE1, TYPE2, PAIR > >;
348
349template<class ENUM>
350class flags;
351
352
353template<class EENUM, EENUM edefault = (EENUM)0>
354class base_enum;
355
356
357
358template < typename TYPE, typename PAIR = pair < ::atom, TYPE > >
359using atom_map_base = ::map_base < atom, TYPE, PAIR >;
360
361
362template < typename TYPE >
364
365
366template < typename TYPE >
368
369
370template < class TYPE, class ARG_TYPE = const TYPE &, class ARRAY_TYPE = array_base < TYPE, ARG_TYPE > >
372
373template < class TYPE, class ARG_TYPE = TYPE const &, class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
375
376
377//template < class TYPE, class ARG_TYPE = TYPE const &, class ARRAY_TYPE = array_non_particle < TYPE, ARG_TYPE > >
378//using non_particle_comparable_eq_array = comparable_eq_array < TYPE, ARG_TYPE, ARRAY_TYPE >;
379
380
381template < class TYPE, class ARG_TYPE = TYPE const &, class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
383
384
385template < class TYPE, class ARG_TYPE = TYPE const &, class ARRAY_TYPE = comparable_eq_array_base < TYPE, ARG_TYPE > >
387
388
389//template < class TYPE, class ARG_TYPE = TYPE const &, class ARRAY_TYPE = non_particle_comparable_eq_array < TYPE, ARG_TYPE > >
390//using non_particle_comparable_array = comparable_array < TYPE, ARG_TYPE, ARRAY_TYPE >;
391
392
393namespace allocator
394{
395
396
397 template < typename TYPE >
398 class raw;
399
400
401 template < typename TYPE >
402 class zero;
403
404
405#if REFERENCING_DEBUGGING
406
407
408 CLASS_DECL_ACME void __on_start_construct(void* p, memsize s, bool bParticleAndHeapAllocation);
409 //CLASS_DECL_ACME void __on_after_construct_subparticle(::subparticle* psubparticle);
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();
414
415
416#endif
417
418
419} // namespace allocator
420
421
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 >
423class raw_array_base;
424
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>
429
430//template < 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 >
431//class raw_array_quantum;
432
433
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 > > > > >
436
437
438class exception;
439
440
441using exception_array_base = ::array_base < ::exception >;
442
443using exception_array = ::array_particle < ::exception_array_base >;
444
445
446
447
448
449
450
451
452using const_char_ptra_base= address_array_base < const_char_pointer >;
453using const_char_ptra = ::array_particle < const_char_ptra_base >;
454
455using void_ptra_base = address_array_base<void *>;
456using void_ptra = ::array_particle < void_ptra_base >;
457
458
459using particle_address_array_base = address_array_base < particle * >;
460using particle_address_array = ::array_particle <particle_address_array_base> ;
461
462
463
464
465template < typename T >
466class c_number;
467
468
469
470
471template < typename T >
472concept an_object = !std::is_pointer < T >::value
473 && !std::is_integral < T >::value
474 && !std::is_enum < T >::value
475 && !std::is_floating_point < T >::value;
476
477
478
479
480//template < typename SEQUENCE >
481class sequencer;
482
483
484
485//template < typename SEQUENCE >
486class sequencer;
487
488//template < typename SEQUENCE >
489class step;
490
491
492template < typename FUNCTION >
493class function;
494
495using procedure = ::function < void() >;
496
497class procedure_array;
498
499using procedure_array_base = ::comparable_array_base < ::procedure >;
500
501using procedure_map = ::atom_map_base < ::procedure_array >;
502
503using procedure_list_base = ::list_base < ::procedure >;
504
505
506
507
508template < typename TYPE, ::enum_type t_etypeContainer = e_type_element >
510
511
512template < typename TYPE, ::enum_type t_etypeContainer = e_type_element >
514
515
516//template < typename TYPE, enum_type t_etypeContainer = e_type_element >
517//using numeric_array = ::array_particle < numeric_base_array < TYPE, t_etypeContainer > >;
518
519
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 >;
524
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 >;
529
530using f32_array_base = numeric_array_base < ::f32 >;
531using f64_array_base = numeric_array_base < ::f64 >;
532
533
534
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 >;
539
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 >;
544
545using f32_array = ::array_particle < f32_array_base >;
546using f64_array = ::array_particle < f64_array_base >;
547
548
549using index_array_base = numeric_array_base < ::collection::index >;
550using count_array_base = numeric_array_base < ::collection::count >;
551
552using index_array = ::array_particle < index_array_base >;
553using count_array = ::array_particle < count_array_base >;
554
555
556using unsigned_i32_array_base = numeric_array_base < ::u32 >;
557
558using u32_array = ::array_particle < unsigned_i32_array_base >;
559
560
561using unique_int_sort_array = unique_number_sort_array < ::i32 >;
562using unique_i64_sort_array = unique_number_sort_array < ::i64 >;
563
564
565#ifdef OS64BIT
566
567
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;
572
573using unique_iptr_sort_array = unique_i64_sort_array;
574
575
576#else
577
578using iptr_array_base = i32_array_base;
579using uptr_array_base = unsigned_i32_array_base;
580
581using iptr_array = i32_array_base;
582using uptr_array = u32_array;
583
584using unique_iptr_sort_array = unique_int_sort_array;
585
586
587#endif
588
589//using f32_array = numeric_array < ::f32 >;
590//using f64_array = numeric_array < ::f64 >;
591
592using strsize_array_base = iptr_array_base;
593
594using strsize_array = iptr_array;
595
596using process_identifier_array_base = ::numeric_array_base < process_identifier >;
597
598using process_identifier_array = ::array_particle < process_identifier_array_base >;
599
600//using strsize_ptr_array = ptr_array < character_count * >;
601
602using byte_array_base = u8_array_base;
603using byte_array = u8_array;
604
605
606
607//template<typename TYPE>
608//inline bool is_ok(const ::pointer<TYPE>& p);
609//
610//
611//template<typename TYPE>
612//inline bool nok(TYPE & t)
613//{
614//
615// return !::is_ok(t);
616//
617//}
618//
619
620
621
622
623
624template < typename TYPE, std::size_t SIZE >
625inline std::size_t item_count(array_reference < TYPE, SIZE > &) { return SIZE; }
626
627
628template < typename T >
629inline ::u8 byte_clip(const T & t) { return ((::u8)(((t) < (::u8)0) ? (::u8)0 : (((t) > (::u8)255) ? (::u8)255 : (::u8)t))); }
630
631
632template < typename A, typename B >
633void __swap(A & a, B & b)
634{
635
636 A aCopy = a;
637
638 a = b;
639
640 b = aCopy;
641
642}
643
644
645
646template <class TYPEA, class TYPEB, class ARRAYA = array < TYPEA >, class ARRAYB = array < TYPEB > >
647class spreadset;
648
649
650using i32_spreadset = spreadset < ::i32, ::i32, unique_int_sort_array, unique_int_sort_array >;
651
652using i64_spreadset = spreadset < ::i64, ::i64, unique_i64_sort_array, unique_i64_sort_array >;
653
654
655
656
657
658template < typename TYPE, std::size_t SIZE >
659inline array_reference < TYPE, SIZE >& zero(TYPE(&)[SIZE]);
660
661
662template < typename TYPE >
663inline TYPE& zero(TYPE & type);
664
665
666template < typename TYPE, std::size_t Size >
667inline bool __is_zero(TYPE(&array)[Size]);
668
669
670
671//#include "acme/prototype/time/as_string.h"
672
673
674
675//struct true_type
676//{
677//};
678//struct false_type
679//{
680//};
681
682
683
684
685
686
687// raw_type discorvery
688// raw_type discorvery
690//struct new_t{};
691//
692//template<typename TYPE>
693//class single_pointer
694//{
695//public:
696//
697// TYPE * m_p;
698//
699// single_pointer() :
700// m_p(nullptr)
701// {
702//
703//
704// }
705//
706// raw_pointer(new_t) :
707// m_p(new TYPE)
708// {
709//
710//
711// }
712// raw_pointer(TYPE * p) :
713// m_p(p)
714// {
715//
716// m_p = nullptr;
717//
718// }
719//
720// ~raw_pointer()
721// {
722//
723// destroy();
724//
725// }
726//
727// void destroy()
728// {
729//
730// if(m_p)
731// {
732//
733// delete m_p;
734//
735// m_p = nullptr;
736//
737// }
738//
739// }
740//
741//};
742
743
744template<typename TYPE>
746{
747public:
748
749 using RAW_TYPE = TYPE;
750
751};
752
753
754template<typename TYPE>
755class raw_type<TYPE*>
756{
757public:
758
759 using RAW_TYPE = TYPE;
760
761};
762
763
764template<typename TYPE>
765class raw_type<TYPE*&>
766{
767public:
768
769 using RAW_TYPE = TYPE;
770
771};
772
773
774template<typename TYPE>
775class raw_type<const TYPE*>
776{
777public:
778
779 using RAW_TYPE = TYPE;
780
781};
782
783
784template<typename TYPE>
785class raw_type<const TYPE*&>
786{
787public:
788
789 using RAW_TYPE = TYPE;
790
791};
792
793
794
795
796
797
798
799
800
801namespace mathematics
802{
803
804 template<typename T>
805 class complex;
806
807
808} // namespace mathematics
809
810
811
812template < typename HOLDEE >
813class ___shape;
814
815
816
817namespace _std
818{
819
820
821 template<class T>
822 void __swap(T& a, T& b)
823 {
824 T c(a);
825 a = b;
826 b = c;
827 }
828
829
830}
831
832
833
834
835#define return_(y, x) {y = x; return;}
836
837
838
839
840
841
842template<typename POINTER_TYPE>
843class ptr_array;
844
845
846//template < typename SEQUENCE >
847class step;
848
849#ifdef WINDOWS
850
851template < typename POINTER_TYPE >
852class cotaskptr;
853
854template < typename POINTER_TYPE >
855class cotaskptr_array;
856
857#endif
858
859
860
861template<class T>
863
864
865
866
867
868//template < typename SEQUENCE >
869class sequencer;
870
871
872template < class T >
873inline void __dynamic_cast(T*& ptarget, T* psource);
874
875
876template < class T , typename T2 >
877inline void __dynamic_cast(T*& ptarget, T2* psource);
878
879
880using enum_application_capability_array = ::comparable_array < enum_application_capability >;
881
882
883
884// From subject_listener from apex_database by camilo on day after ThomasBirthday2021 07:26 BRT
885#pragma once
886
887
888//{
889//public:
890//
891//
892//
893// using function::function;
894//
895//
896// ~handle_function() {}
897// //method(const ::matter_pointer & pmatter) : matter_pointer(pmatter) { }
898// //method(const ::method & method) : matter_pointer(method) { }
899//
900//
901// //inline void operator()() const;
902//
903// //void operator()(::topic * ptopic, ::handler_context * phandlercontext)
904// //{
905//
906// // this-(ptopic, phandlercontext);
907//
908// //}
909//
910// //template < typename PRED >
911// //void pred(PRED pred);
912//
913// //inline method & operator = (const ::method & method) { m_pmatter = method.m_pmatter; return *this; }
914// //method & operator = (const ::payload & payload);
915//
916//
917//};
918//
919//
927
928
929// hi5 and shegotmad
930consteval auto as_const(auto asconst)
931{
932
933 return asconst;
934
935}
936
937
938template < typename T >
939auto as_non_const(const T * p)
940{
941
942 return (non_const < T > *) p;
943
944}
945
946
947template < typename TYPE >
948using index_map_base = map_base < ::collection::index, TYPE >;
949
950
951
952
953template < typename TYPE >
954constexpr memsize index_of(const TYPE * p, const TYPE * pBegin);
955
956
957template<typename T>
958struct dereference_struct { using type = T; };
959template<typename T>
960struct dereference_struct<T *> { using type = T; };
961
962template < typename T >
963using dereference = typename dereference_struct < T >::type;
964
965
966//
967//template < typename T, typename ...Args >
968//inline T * __call_allocate(Args &&... args);
969//
970//template < typename T >
971//inline void __call__delete(T * p);
972//
973//
974//template < typename T >
975//inline T * øallocate_array(::collection::count c);
976
977
978//#if REFERENCING_DEBUGGING
979//
980//
981//CLASS_DECL_ACME void __on_start_construct(void * p, memsize s);
982//
983//
984//#endif
985
986
987
988
989
990
991template < typename ENUM > struct raw_enum_of_struct<::c_flag <ENUM>> { using type = ENUM; };
992template < typename ENUM >
993using raw_enum_of = typename raw_enum_of_struct<erase_const_effemeral<ENUM>>::type;
994
995
996
997using enum_application_capability_array = ::comparable_array < enum_application_capability >;
998
999
1000
1001
1002
1003using payload_array = ::array_particle < payload_array_base >;
1004
1005
1006
1007
1008
1009
1010using arguments = payload_array;
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021namespace image
1022{
1023
1024
1025 using image_pointer = ::pointer<::image::image>;
1026
1027
1028} // namespace image
1029
1030
1031using mutex_pointer = ::pointer<::mutex>;
1032
1033
1034namespace write_text
1035{
1036
1037
1038 class font;
1039
1040 using font_pointer = ::pointer<font>;
1041
1042
1043} // namespace write_text
1044
1045
1046using item_pointer = ::pointer<::item>;
1047
1048using memory_pointer = ::pointer<::make_particle1<::memory>>;
1049
1050
1051template<class T, typename ARG_T = const T *, typename ARRAY_BASE = array_base<::pointer<T>, ARG_T>>
1052class pointer_array_base;
1053
1054template<class T, typename ARG_T = const T *, typename ARRAY_BASE = array_base<::pointer<T>, ARG_T>>
1055class pointer_array; // = ::array_particle < pointer_array_base < T, ARG_T, ARRAY_BASE > >;
1056
1057template<typename TYPE, ::i32 t_iSize, enum_array t_earray = e_array_none, typename ARG_TYPE = const TYPE &>
1058class block_array;
1059
1060template<typename TYPE, typename ARG_TYPE>
1061class array_range;
1062
1063
1064template<class T, ::i32 t_preallocated_array_size, typename ARG_T = const T * >
1065using preallocated_pointer_array_base = pointer_array_base<T, ARG_T, ::block_array < ::pointer < T >,t_preallocated_array_size, e_array_none, ARG_T > >;
1066
1067
1068using particle_array_base = pointer_array_base<particle>;
1069using subparticle_array_base = pointer_array_base<subparticle>;
1070
1071
1072using particle_array = ::array_particle<particle_array_base>;
1073using subparticle_array = ::array_particle<subparticle_array_base>;
1074
1075
1076using regular_expression_pointer = ::pointer<::regular_expression::regular_expression>;
1077
1078
1079using file_pointer = ::pointer<::file::file>;
1080
1081
1082using memory_file_pointer = ::pointer<::memory_file>;
1083
1084
1085using folder_pointer = ::pointer<::folder>;
1086
1087template<typename T>
1088inline ::pointer<T> pointer_transfer(T *p);
1089
1090
1091template<typename T, typename... Args>
1092inline ::pointer<T> __call_allocate(Args &&...args);
1093
1094
1095using manager_pointer = ::pointer<manager>;
1096using context_pointer = ::pointer<context>;
1097
1098
1099using topic_pointer = ::pointer<topic>;
1100using extended_topic_pointer = ::pointer<extended_topic>;
1101
1102
1103using i32_array_array_base = ::array_base<i32_array_base>;
1104using f32_array_array_base = ::array_base<f32_array_base>;
1105using f64_array_array_base = ::array_base<f64_array_base>;
1106
1107
1108using task_pointer = ::pointer<task>;
1109
1110
1111// #include "acme/prototype/prototype/_u32hash.h"
1112
1113
1114CLASS_DECL_ACME task_pointer fork(::particle *pparticle, const ::procedure &procedure);
1115
1116using task_pointer = ::pointer<task>;
1117
1118
1119// #include "acme/prototype/prototype/_u32hash.h"
1120
1121
1122CLASS_DECL_ACME task_pointer fork(::particle *pparticle, const ::procedure &procedure);
1123
1124
1125namespace draw2d
1126{
1127
1128
1129 using graphics_pointer = ::pointer<graphics>;
1130
1131
1132} // namespace draw2d
1133
1134
1135
1136
1137using particle_array_base = pointer_array_base<::particle>;
1138
1139
1140using particle_array = ::array_particle<::particle_array_base>;
1141
1142
1143namespace write_text
1144{
1145
1146
1147 using font_enumeration_item_array = pointer_array<font_enumeration_item>;
1148
1149
1150} // namespace write_text
1151
1152
1153using object_ptra = pointer_array<::matter>; // Please use just for keeping non-member-based references.
1154
1155using matter_array = pointer_array<::matter>; // Please use just for keeping non-member-based references.
1156
1157using task_array = pointer_array<::task>; // Please use just for keeping non-member-based references.
1158
1159
1160namespace platform
1161{
1162
1163
1164 using session_map = ::index_map_base<::pointer<::platform::session>>;
1165
1166
1167} // namespace platform
1168
1169
1170template < typename TYPE >
1171class cast;
1172
1173
1174template < typename T >
1175using cast_array = ::comparable_array_base < ::cast < T > >;
1176
1177
1178template<class ARG_TYPE>
1179inline bool EqualElements(ARG_TYPE element1, ARG_TYPE element2);
1180
1181
1182class timer_dispatch;
1183
1184
1185class timer_handler;
1186
1187
1188class timer;
1189
1190
1191using timer_callback = ::function<void(::timer * ptimer)>;
1192
1193
Definition _aaa_shape.h:23
Definition address_array.h:12
Definition array_2d.h:33
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 c_number.h:6
Definition cast.h:10
Definition comparable_array.h:9
Definition make_particle.h:95
Definition comparable_eq_array.h:11
Definition make_particle.h:65
Definition cotaskptr.h:9
Definition flags.h:13
Definition _template_forward_declaration.h:297
Definition _template_forward_declaration.h:862
Definition typed_memory.h:72
Definition _template_forward_declaration.h:72
Definition list.h:33
Definition make_particle.h:11
Definition map.h:1084
Definition _template_forward_declaration.h:805
Definition set.h:13
Definition numeric_array.h:37
Definition map.h:11
Definition _template_forward_declaration.h:327
Definition particle.h:95
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 array_2d.h:8
Definition scoped_string_base.h:13
Definition _template_forward_declaration.h:304
Definition spreadset.h:9
Definition aaa_timer_callback.h:9
Definition timer.h:167
Definition timer.h:67
Definition aaa_timer.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
include "thread/AutoLock.h"
Definition _forward_declaration.h:877
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 single.h:35
Definition _forward_declaration.h:17
Definition _template_forward_declaration.h:214