acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
aaa_other_initial_concepts.h
1// From _initial_concepts.h by camilo on 2023-05-23 <3ThomasBorregaardSorensen!!
2//
3// _numeric_concepts.h
4// acme
5//
6// Created by Camilo Sasuke Thomas Borregaard Soerensen on 29/11/22.
7// Copyright (c) 2022 Camilo Sasuke Tsumanuma. All rights reserved.
8//
9#pragma once
10
11
12template < typename NUMBER >
13concept prototype_number =
14 prototype_integral < NUMBER > ||
15 prototype_floating < NUMBER > ||
16 prototype_enum < NUMBER >;
17
18
19template < typename POINT >
20concept raw_primitive_point = requires(POINT point)
21{
22 {point.x}->prototype_number;
23 {point.y}->prototype_number;
24};
25
26
27template < typename POINT >
28concept prototype_point = requires(POINT point)
29{
30 {point.x}->prototype_number;
31 {point.y}->prototype_number;
32};
33
34
35template < typename POLE >
36concept prototype_pole = requires(POLE pole)
37{
38 {pole.x}->prototype_number;
39 {pole.y}->prototype_number;
40 {pole.z}->prototype_number;
41};
42
43
44template < typename POINT >
45concept prototype_XY = requires(POINT point)
46{
47 point.X;
48 point.Y;
49};
50
51
52template < typename SIZE >
53concept prototype_size = requires(SIZE size)
54{
55 size.cx;
56 size.cy;
57};
58
59
60template < typename ::i32_size >
61concept prototype_Dimension = requires(::i32_size dimension)
62{
63 dimension.Width;
64 dimension.Height;
65};
66
67
68template < typename DIMENSION >
69concept prototype_dimension = requires(DIMENSION dimension)
70{
71 dimension.width;
72 dimension.height;
73};
74
75
76template < typename RECTANGLE >
77concept prototype_rectangle = requires(RECTANGLE rectangle)
78{
79 rectangle.left;
80 rectangle.top;
81 rectangle.right;
82 rectangle.bottom;
83};
84
85
86template < typename RECTANGLE >
87concept prototype_XYDim = requires(RECTANGLE rectangle)
88{
89 rectangle.X;
90 rectangle.Y;
91 rectangle.Width;
92 rectangle.Height;
93};
94
95
96template < typename RECTANGLE >
97concept prototype_xydim = requires(RECTANGLE rectangle)
98{
99 rectangle.x;
100 rectangle.y;
101 rectangle.width;
102 rectangle.height;
103};
104
105
106template < typename RECTANGLE >
107concept prototype_origin_size = requires(RECTANGLE rectangle)
108{
109 {rectangle.origin}->raw_primitive_point;
110 {rectangle.size}->prototype_dimension;
111};
112
113
114//template < typename ORIGIN_SIZE >
115//concept origin_size = requires(ORIGIN_SIZE origin_size)
116//{
117//
118// { origin_size.origin } -> prototype_point;
119// { origin_size.size } -> prototype_dim;
120//
121//};
122
123
124
125template < prototype_number NUMBER >
126struct argument_of_struct < NUMBER >
127{
128
129 using type = NUMBER;
130
131};
132
133
134
135template < prototype_number NUMBER >
136class point_type;
137
138
139template < prototype_number NUMBER >
140class size_type;
141
142
143template < prototype_number NUMBER >
144class rectangle_type;
145
146
147
148
149
150
151//
152//
153//template < prototype_number NUMBER1, prototype_number NUMBER2 >
154//inline void copy(NUMBER1& number1, const NUMBER2& number2)
155//{
156//
157// number1 = (NUMBER1)number2;
158//
159//}
160//
161
162
163
164
165
166
167
168
169
Definition point.h:12
Definition rectangle.h:49
Definition size.h:11
Definition _aaa_other_initial_concepts.h:61
Definition _aaa_other_initial_concepts.h:87
Definition _aaa_other_initial_concepts.h:45
Definition _aaa_other_initial_concepts.h:69
Definition _aaa_other_initial_concepts.h:13
Definition _aaa_other_initial_concepts.h:107
Definition _aaa_other_initial_concepts.h:28
Definition _aaa_other_initial_concepts.h:36
Definition _aaa_other_initial_concepts.h:77
Definition _aaa_other_initial_concepts.h:53
Definition _aaa_other_initial_concepts.h:97
Definition _aaa_other_initial_concepts.h:20
Definition _forward_declaration.h:2520