SHAPER 9.16.0
ModelHighAPI_Macro.h
1// Copyright (C) 2014-2026 CEA, EDF
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
21#define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
22
23//--------------------------------------------------------------------------------------
24#include <GeomDataAPI_Dir.h>
25#include <GeomDataAPI_Point.h>
26#include <GeomDataAPI_Point2D.h>
27//--------------------------------------------------------------------------------------
28#include <ModelAPI_AttributeBoolean.h>
29#include <ModelAPI_AttributeDocRef.h>
30#include <ModelAPI_AttributeDouble.h>
31#include <ModelAPI_AttributeIntArray.h>
32#include <ModelAPI_AttributeInteger.h>
33#include <ModelAPI_AttributeRefAttr.h>
34#include <ModelAPI_AttributeRefAttrList.h>
35#include <ModelAPI_AttributeReference.h>
36#include <ModelAPI_AttributeRefList.h>
37#include <ModelAPI_AttributeSelection.h>
38#include <ModelAPI_AttributeSelectionList.h>
39#include <ModelAPI_AttributeString.h>
40#include <ModelAPI_Feature.h>
41
42//--------------------------------------------------------------------------------------
43#define VAR_NAME(NAME) my##NAME
44
45//--------------------------------------------------------------------------------------
46#define TO_STRING_(NAME) #NAME
47#define TO_STRING(NAME) TO_STRING_(NAME)
48
49//--------------------------------------------------------------------------------------
50// Used in INTERFACE_N for create variable and getter
51#define DEFINE_ATTRIBUTE(NAME, TYPE, COMMENT) \
52 COMMENT \
53 virtual std::shared_ptr<TYPE> NAME() const { return VAR_NAME(NAME); } \
54 protected: \
55 std::shared_ptr<TYPE> VAR_NAME(NAME); \
56 public:
57
58//--------------------------------------------------------------------------------------
59// Used in INTERFACE_N inside START_INIT/END_INIT for
60// set variable with attribute received from feature
61#define SET_ATTRIBUTE(NAME, TYPE, ATT_NAME) \
62 VAR_NAME(NAME) = std::dynamic_pointer_cast<TYPE>(feature()->attribute(ATT_NAME)); \
63 if (!VAR_NAME(NAME)) \
64 return false; \
65 myAttrGetter[ATT_NAME] = TO_STRING(NAME);
66
67//--------------------------------------------------------------------------------------
68#define INTERFACE_COMMON(KIND) \
69 static std::string ID() { return KIND; }\
70 virtual std::string getID() { return ID(); }
71
72//--------------------------------------------------------------------------------------
73#define START_INIT() \
74 bool initialize() { \
75 if (!feature()) { \
76 throwException(ID() + " exception: The feature is NULL."); \
77 return false; \
78 } \
79 if (getKind() != getID()) { \
80 throwException(ID() + " exception: Wrong feature kind."); \
81 return false; \
82 }
83
84//--------------------------------------------------------------------------------------
85#define END_INIT() \
86 return true; \
87 }
88
89//--------------------------------------------------------------------------------------
90#define INTERFACE_0(KIND) \
91 public: \
92 INTERFACE_COMMON(KIND) \
93 protected: \
94 START_INIT() \
95 END_INIT() \
96 public:
97
98//--------------------------------------------------------------------------------------
99#define INTERFACE_1(KIND, \
100 N_0, AN_0, T_0, C_0) \
101 public: \
102 INTERFACE_COMMON(KIND) \
103 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
104 protected: \
105 START_INIT() \
106 SET_ATTRIBUTE(N_0, T_0, AN_0) \
107 END_INIT() \
108 public:
109
110//--------------------------------------------------------------------------------------
111#define INTERFACE_2(KIND, \
112 N_0, AN_0, T_0, C_0, \
113 N_1, AN_1, T_1, C_1) \
114 public: \
115 INTERFACE_COMMON(KIND) \
116 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
117 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
118 protected: \
119 START_INIT() \
120 SET_ATTRIBUTE(N_0, T_0, AN_0) \
121 SET_ATTRIBUTE(N_1, T_1, AN_1) \
122 END_INIT() \
123 public:
124
125//--------------------------------------------------------------------------------------
126#define INTERFACE_3(KIND, \
127 N_0, AN_0, T_0, C_0, \
128 N_1, AN_1, T_1, C_1, \
129 N_2, AN_2, T_2, C_2) \
130 public: \
131 INTERFACE_COMMON(KIND) \
132 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
133 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
134 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
135 protected: \
136 START_INIT() \
137 SET_ATTRIBUTE(N_0, T_0, AN_0) \
138 SET_ATTRIBUTE(N_1, T_1, AN_1) \
139 SET_ATTRIBUTE(N_2, T_2, AN_2) \
140 END_INIT() \
141 public:
142
143//--------------------------------------------------------------------------------------
144#define INTERFACE_4(KIND, \
145 N_0, AN_0, T_0, C_0, \
146 N_1, AN_1, T_1, C_1, \
147 N_2, AN_2, T_2, C_2, \
148 N_3, AN_3, T_3, C_3) \
149 public: \
150 INTERFACE_COMMON(KIND) \
151 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
152 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
153 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
154 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
155 protected: \
156 START_INIT() \
157 SET_ATTRIBUTE(N_0, T_0, AN_0) \
158 SET_ATTRIBUTE(N_1, T_1, AN_1) \
159 SET_ATTRIBUTE(N_2, T_2, AN_2) \
160 SET_ATTRIBUTE(N_3, T_3, AN_3) \
161 END_INIT() \
162 public:
163
164//--------------------------------------------------------------------------------------
165#define INTERFACE_5(KIND, \
166 N_0, AN_0, T_0, C_0, \
167 N_1, AN_1, T_1, C_1, \
168 N_2, AN_2, T_2, C_2, \
169 N_3, AN_3, T_3, C_3, \
170 N_4, AN_4, T_4, C_4) \
171 public: \
172 INTERFACE_COMMON(KIND) \
173 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
174 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
175 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
176 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
177 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
178 protected: \
179 START_INIT() \
180 SET_ATTRIBUTE(N_0, T_0, AN_0) \
181 SET_ATTRIBUTE(N_1, T_1, AN_1) \
182 SET_ATTRIBUTE(N_2, T_2, AN_2) \
183 SET_ATTRIBUTE(N_3, T_3, AN_3) \
184 SET_ATTRIBUTE(N_4, T_4, AN_4) \
185 END_INIT() \
186 public:
187
188//--------------------------------------------------------------------------------------
189#define INTERFACE_6(KIND, \
190 N_0, AN_0, T_0, C_0, \
191 N_1, AN_1, T_1, C_1, \
192 N_2, AN_2, T_2, C_2, \
193 N_3, AN_3, T_3, C_3, \
194 N_4, AN_4, T_4, C_4, \
195 N_5, AN_5, T_5, C_5) \
196 public: \
197 INTERFACE_COMMON(KIND) \
198 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
199 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
200 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
201 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
202 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
203 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
204 protected: \
205 START_INIT() \
206 SET_ATTRIBUTE(N_0, T_0, AN_0) \
207 SET_ATTRIBUTE(N_1, T_1, AN_1) \
208 SET_ATTRIBUTE(N_2, T_2, AN_2) \
209 SET_ATTRIBUTE(N_3, T_3, AN_3) \
210 SET_ATTRIBUTE(N_4, T_4, AN_4) \
211 SET_ATTRIBUTE(N_5, T_5, AN_5) \
212 END_INIT() \
213 public:
214
215//--------------------------------------------------------------------------------------
216#define INTERFACE_7(KIND, \
217 N_0, AN_0, T_0, C_0, \
218 N_1, AN_1, T_1, C_1, \
219 N_2, AN_2, T_2, C_2, \
220 N_3, AN_3, T_3, C_3, \
221 N_4, AN_4, T_4, C_4, \
222 N_5, AN_5, T_5, C_5, \
223 N_6, AN_6, T_6, C_6) \
224 public: \
225 INTERFACE_COMMON(KIND) \
226 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
227 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
228 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
229 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
230 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
231 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
232 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
233 protected: \
234 START_INIT() \
235 SET_ATTRIBUTE(N_0, T_0, AN_0) \
236 SET_ATTRIBUTE(N_1, T_1, AN_1) \
237 SET_ATTRIBUTE(N_2, T_2, AN_2) \
238 SET_ATTRIBUTE(N_3, T_3, AN_3) \
239 SET_ATTRIBUTE(N_4, T_4, AN_4) \
240 SET_ATTRIBUTE(N_5, T_5, AN_5) \
241 SET_ATTRIBUTE(N_6, T_6, AN_6) \
242 END_INIT() \
243 public:
244
245//--------------------------------------------------------------------------------------
246#define INTERFACE_8(KIND, \
247 N_0, AN_0, T_0, C_0, \
248 N_1, AN_1, T_1, C_1, \
249 N_2, AN_2, T_2, C_2, \
250 N_3, AN_3, T_3, C_3, \
251 N_4, AN_4, T_4, C_4, \
252 N_5, AN_5, T_5, C_5, \
253 N_6, AN_6, T_6, C_6, \
254 N_7, AN_7, T_7, C_7) \
255 public: \
256 INTERFACE_COMMON(KIND) \
257 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
258 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
259 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
260 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
261 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
262 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
263 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
264 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
265 protected: \
266 START_INIT() \
267 SET_ATTRIBUTE(N_0, T_0, AN_0) \
268 SET_ATTRIBUTE(N_1, T_1, AN_1) \
269 SET_ATTRIBUTE(N_2, T_2, AN_2) \
270 SET_ATTRIBUTE(N_3, T_3, AN_3) \
271 SET_ATTRIBUTE(N_4, T_4, AN_4) \
272 SET_ATTRIBUTE(N_5, T_5, AN_5) \
273 SET_ATTRIBUTE(N_6, T_6, AN_6) \
274 SET_ATTRIBUTE(N_7, T_7, AN_7) \
275 END_INIT() \
276 public:
277
278//--------------------------------------------------------------------------------------
279#define INTERFACE_9(KIND, \
280 N_0, AN_0, T_0, C_0, \
281 N_1, AN_1, T_1, C_1, \
282 N_2, AN_2, T_2, C_2, \
283 N_3, AN_3, T_3, C_3, \
284 N_4, AN_4, T_4, C_4, \
285 N_5, AN_5, T_5, C_5, \
286 N_6, AN_6, T_6, C_6, \
287 N_7, AN_7, T_7, C_7, \
288 N_8, AN_8, T_8, C_8) \
289 public: \
290 INTERFACE_COMMON(KIND) \
291 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
292 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
293 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
294 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
295 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
296 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
297 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
298 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
299 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
300 protected: \
301 START_INIT() \
302 SET_ATTRIBUTE(N_0, T_0, AN_0) \
303 SET_ATTRIBUTE(N_1, T_1, AN_1) \
304 SET_ATTRIBUTE(N_2, T_2, AN_2) \
305 SET_ATTRIBUTE(N_3, T_3, AN_3) \
306 SET_ATTRIBUTE(N_4, T_4, AN_4) \
307 SET_ATTRIBUTE(N_5, T_5, AN_5) \
308 SET_ATTRIBUTE(N_6, T_6, AN_6) \
309 SET_ATTRIBUTE(N_7, T_7, AN_7) \
310 SET_ATTRIBUTE(N_8, T_8, AN_8) \
311 END_INIT() \
312 public:
313
314//--------------------------------------------------------------------------------------
315#define INTERFACE_10(KIND, \
316 N_0, AN_0, T_0, C_0, \
317 N_1, AN_1, T_1, C_1, \
318 N_2, AN_2, T_2, C_2, \
319 N_3, AN_3, T_3, C_3, \
320 N_4, AN_4, T_4, C_4, \
321 N_5, AN_5, T_5, C_5, \
322 N_6, AN_6, T_6, C_6, \
323 N_7, AN_7, T_7, C_7, \
324 N_8, AN_8, T_8, C_8, \
325 N_9, AN_9, T_9, C_9) \
326 public: \
327 INTERFACE_COMMON(KIND) \
328 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
329 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
330 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
331 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
332 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
333 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
334 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
335 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
336 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
337 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
338 protected: \
339 START_INIT() \
340 SET_ATTRIBUTE(N_0, T_0, AN_0) \
341 SET_ATTRIBUTE(N_1, T_1, AN_1) \
342 SET_ATTRIBUTE(N_2, T_2, AN_2) \
343 SET_ATTRIBUTE(N_3, T_3, AN_3) \
344 SET_ATTRIBUTE(N_4, T_4, AN_4) \
345 SET_ATTRIBUTE(N_5, T_5, AN_5) \
346 SET_ATTRIBUTE(N_6, T_6, AN_6) \
347 SET_ATTRIBUTE(N_7, T_7, AN_7) \
348 SET_ATTRIBUTE(N_8, T_8, AN_8) \
349 SET_ATTRIBUTE(N_9, T_9, AN_9) \
350 END_INIT() \
351 public:
352
353//--------------------------------------------------------------------------------------
354#define INTERFACE_11(KIND, \
355 N_0, AN_0, T_0, C_0, \
356 N_1, AN_1, T_1, C_1, \
357 N_2, AN_2, T_2, C_2, \
358 N_3, AN_3, T_3, C_3, \
359 N_4, AN_4, T_4, C_4, \
360 N_5, AN_5, T_5, C_5, \
361 N_6, AN_6, T_6, C_6, \
362 N_7, AN_7, T_7, C_7, \
363 N_8, AN_8, T_8, C_8, \
364 N_9, AN_9, T_9, C_9, \
365 N_10, AN_10, T_10, C_10) \
366 public: \
367 INTERFACE_COMMON(KIND) \
368 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
369 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
370 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
371 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
372 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
373 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
374 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
375 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
376 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
377 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
378 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
379 protected: \
380 START_INIT() \
381 SET_ATTRIBUTE(N_0, T_0, AN_0) \
382 SET_ATTRIBUTE(N_1, T_1, AN_1) \
383 SET_ATTRIBUTE(N_2, T_2, AN_2) \
384 SET_ATTRIBUTE(N_3, T_3, AN_3) \
385 SET_ATTRIBUTE(N_4, T_4, AN_4) \
386 SET_ATTRIBUTE(N_5, T_5, AN_5) \
387 SET_ATTRIBUTE(N_6, T_6, AN_6) \
388 SET_ATTRIBUTE(N_7, T_7, AN_7) \
389 SET_ATTRIBUTE(N_8, T_8, AN_8) \
390 SET_ATTRIBUTE(N_9, T_9, AN_9) \
391 SET_ATTRIBUTE(N_10, T_10, AN_10) \
392 END_INIT() \
393 public:
394
395//--------------------------------------------------------------------------------------
396#define INTERFACE_12(KIND, \
397 N_0, AN_0, T_0, C_0, \
398 N_1, AN_1, T_1, C_1, \
399 N_2, AN_2, T_2, C_2, \
400 N_3, AN_3, T_3, C_3, \
401 N_4, AN_4, T_4, C_4, \
402 N_5, AN_5, T_5, C_5, \
403 N_6, AN_6, T_6, C_6, \
404 N_7, AN_7, T_7, C_7, \
405 N_8, AN_8, T_8, C_8, \
406 N_9, AN_9, T_9, C_9, \
407 N_10, AN_10, T_10, C_10, \
408 N_11, AN_11, T_11, C_11) \
409 public: \
410 INTERFACE_COMMON(KIND) \
411 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
412 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
413 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
414 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
415 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
416 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
417 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
418 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
419 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
420 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
421 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
422 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
423 protected: \
424 START_INIT() \
425 SET_ATTRIBUTE(N_0, T_0, AN_0) \
426 SET_ATTRIBUTE(N_1, T_1, AN_1) \
427 SET_ATTRIBUTE(N_2, T_2, AN_2) \
428 SET_ATTRIBUTE(N_3, T_3, AN_3) \
429 SET_ATTRIBUTE(N_4, T_4, AN_4) \
430 SET_ATTRIBUTE(N_5, T_5, AN_5) \
431 SET_ATTRIBUTE(N_6, T_6, AN_6) \
432 SET_ATTRIBUTE(N_7, T_7, AN_7) \
433 SET_ATTRIBUTE(N_8, T_8, AN_8) \
434 SET_ATTRIBUTE(N_9, T_9, AN_9) \
435 SET_ATTRIBUTE(N_10, T_10, AN_10) \
436 SET_ATTRIBUTE(N_11, T_11, AN_11) \
437 END_INIT() \
438 public:
439
440//--------------------------------------------------------------------------------------
441#define INTERFACE_13(KIND, \
442 N_0, AN_0, T_0, C_0, \
443 N_1, AN_1, T_1, C_1, \
444 N_2, AN_2, T_2, C_2, \
445 N_3, AN_3, T_3, C_3, \
446 N_4, AN_4, T_4, C_4, \
447 N_5, AN_5, T_5, C_5, \
448 N_6, AN_6, T_6, C_6, \
449 N_7, AN_7, T_7, C_7, \
450 N_8, AN_8, T_8, C_8, \
451 N_9, AN_9, T_9, C_9, \
452 N_10, AN_10, T_10, C_10, \
453 N_11, AN_11, T_11, C_11, \
454 N_12, AN_12, T_12, C_12) \
455 public: \
456 INTERFACE_COMMON(KIND) \
457 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
458 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
459 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
460 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
461 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
462 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
463 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
464 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
465 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
466 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
467 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
468 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
469 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
470 protected: \
471 START_INIT() \
472 SET_ATTRIBUTE(N_0, T_0, AN_0) \
473 SET_ATTRIBUTE(N_1, T_1, AN_1) \
474 SET_ATTRIBUTE(N_2, T_2, AN_2) \
475 SET_ATTRIBUTE(N_3, T_3, AN_3) \
476 SET_ATTRIBUTE(N_4, T_4, AN_4) \
477 SET_ATTRIBUTE(N_5, T_5, AN_5) \
478 SET_ATTRIBUTE(N_6, T_6, AN_6) \
479 SET_ATTRIBUTE(N_7, T_7, AN_7) \
480 SET_ATTRIBUTE(N_8, T_8, AN_8) \
481 SET_ATTRIBUTE(N_9, T_9, AN_9) \
482 SET_ATTRIBUTE(N_10, T_10, AN_10) \
483 SET_ATTRIBUTE(N_11, T_11, AN_11) \
484 SET_ATTRIBUTE(N_12, T_12, AN_12) \
485 END_INIT() \
486 public:
487
488//--------------------------------------------------------------------------------------
489#define INTERFACE_14(KIND, \
490 N_0, AN_0, T_0, C_0, \
491 N_1, AN_1, T_1, C_1, \
492 N_2, AN_2, T_2, C_2, \
493 N_3, AN_3, T_3, C_3, \
494 N_4, AN_4, T_4, C_4, \
495 N_5, AN_5, T_5, C_5, \
496 N_6, AN_6, T_6, C_6, \
497 N_7, AN_7, T_7, C_7, \
498 N_8, AN_8, T_8, C_8, \
499 N_9, AN_9, T_9, C_9, \
500 N_10, AN_10, T_10, C_10, \
501 N_11, AN_11, T_11, C_11, \
502 N_12, AN_12, T_12, C_12, \
503 N_13, AN_13, T_13, C_13) \
504 public: \
505 INTERFACE_COMMON(KIND) \
506 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
507 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
508 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
509 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
510 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
511 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
512 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
513 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
514 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
515 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
516 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
517 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
518 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
519 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
520 protected: \
521 START_INIT() \
522 SET_ATTRIBUTE(N_0, T_0, AN_0) \
523 SET_ATTRIBUTE(N_1, T_1, AN_1) \
524 SET_ATTRIBUTE(N_2, T_2, AN_2) \
525 SET_ATTRIBUTE(N_3, T_3, AN_3) \
526 SET_ATTRIBUTE(N_4, T_4, AN_4) \
527 SET_ATTRIBUTE(N_5, T_5, AN_5) \
528 SET_ATTRIBUTE(N_6, T_6, AN_6) \
529 SET_ATTRIBUTE(N_7, T_7, AN_7) \
530 SET_ATTRIBUTE(N_8, T_8, AN_8) \
531 SET_ATTRIBUTE(N_9, T_9, AN_9) \
532 SET_ATTRIBUTE(N_10, T_10, AN_10) \
533 SET_ATTRIBUTE(N_11, T_11, AN_11) \
534 SET_ATTRIBUTE(N_12, T_12, AN_12) \
535 SET_ATTRIBUTE(N_13, T_13, AN_13) \
536 END_INIT() \
537 public:
538
539//--------------------------------------------------------------------------------------
540#define INTERFACE_17(KIND, \
541 N_0, AN_0, T_0, C_0, \
542 N_1, AN_1, T_1, C_1, \
543 N_2, AN_2, T_2, C_2, \
544 N_3, AN_3, T_3, C_3, \
545 N_4, AN_4, T_4, C_4, \
546 N_5, AN_5, T_5, C_5, \
547 N_6, AN_6, T_6, C_6, \
548 N_7, AN_7, T_7, C_7, \
549 N_8, AN_8, T_8, C_8, \
550 N_9, AN_9, T_9, C_9, \
551 N_10, AN_10, T_10, C_10, \
552 N_11, AN_11, T_11, C_11, \
553 N_12, AN_12, T_12, C_12, \
554 N_13, AN_13, T_13, C_13, \
555 N_14, AN_14, T_14, C_14, \
556 N_15, AN_15, T_15, C_15, \
557 N_16, AN_16, T_16, C_16) \
558 public: \
559 INTERFACE_COMMON(KIND) \
560 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
561 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
562 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
563 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
564 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
565 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
566 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
567 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
568 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
569 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
570 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
571 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
572 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
573 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
574 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
575 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
576 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
577 protected: \
578 START_INIT() \
579 SET_ATTRIBUTE(N_0, T_0, AN_0) \
580 SET_ATTRIBUTE(N_1, T_1, AN_1) \
581 SET_ATTRIBUTE(N_2, T_2, AN_2) \
582 SET_ATTRIBUTE(N_3, T_3, AN_3) \
583 SET_ATTRIBUTE(N_4, T_4, AN_4) \
584 SET_ATTRIBUTE(N_5, T_5, AN_5) \
585 SET_ATTRIBUTE(N_6, T_6, AN_6) \
586 SET_ATTRIBUTE(N_7, T_7, AN_7) \
587 SET_ATTRIBUTE(N_8, T_8, AN_8) \
588 SET_ATTRIBUTE(N_9, T_9, AN_9) \
589 SET_ATTRIBUTE(N_10, T_10, AN_10) \
590 SET_ATTRIBUTE(N_11, T_11, AN_11) \
591 SET_ATTRIBUTE(N_12, T_12, AN_12) \
592 SET_ATTRIBUTE(N_13, T_13, AN_13) \
593 SET_ATTRIBUTE(N_14, T_14, AN_14) \
594 SET_ATTRIBUTE(N_15, T_15, AN_15) \
595 SET_ATTRIBUTE(N_16, T_16, AN_16) \
596 END_INIT() \
597 public:
598
599//--------------------------------------------------------------------------------------
600#define INTERFACE_21(KIND, \
601 N_0, AN_0, T_0, C_0, \
602 N_1, AN_1, T_1, C_1, \
603 N_2, AN_2, T_2, C_2, \
604 N_3, AN_3, T_3, C_3, \
605 N_4, AN_4, T_4, C_4, \
606 N_5, AN_5, T_5, C_5, \
607 N_6, AN_6, T_6, C_6, \
608 N_7, AN_7, T_7, C_7, \
609 N_8, AN_8, T_8, C_8, \
610 N_9, AN_9, T_9, C_9, \
611 N_10, AN_10, T_10, C_10, \
612 N_11, AN_11, T_11, C_11, \
613 N_12, AN_12, T_12, C_12, \
614 N_13, AN_13, T_13, C_13, \
615 N_14, AN_14, T_14, C_14, \
616 N_15, AN_15, T_15, C_15, \
617 N_16, AN_16, T_16, C_16, \
618 N_17, AN_17, T_17, C_17, \
619 N_18, AN_18, T_18, C_18, \
620 N_19, AN_19, T_19, C_19, \
621 N_20, AN_20, T_20, C_20) \
622 public: \
623 INTERFACE_COMMON(KIND) \
624 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
625 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
626 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
627 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
628 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
629 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
630 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
631 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
632 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
633 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
634 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
635 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
636 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
637 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
638 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
639 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
640 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
641 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
642 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
643 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
644 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
645 protected: \
646 START_INIT() \
647 SET_ATTRIBUTE(N_0, T_0, AN_0) \
648 SET_ATTRIBUTE(N_1, T_1, AN_1) \
649 SET_ATTRIBUTE(N_2, T_2, AN_2) \
650 SET_ATTRIBUTE(N_3, T_3, AN_3) \
651 SET_ATTRIBUTE(N_4, T_4, AN_4) \
652 SET_ATTRIBUTE(N_5, T_5, AN_5) \
653 SET_ATTRIBUTE(N_6, T_6, AN_6) \
654 SET_ATTRIBUTE(N_7, T_7, AN_7) \
655 SET_ATTRIBUTE(N_8, T_8, AN_8) \
656 SET_ATTRIBUTE(N_9, T_9, AN_9) \
657 SET_ATTRIBUTE(N_10, T_10, AN_10) \
658 SET_ATTRIBUTE(N_11, T_11, AN_11) \
659 SET_ATTRIBUTE(N_12, T_12, AN_12) \
660 SET_ATTRIBUTE(N_13, T_13, AN_13) \
661 SET_ATTRIBUTE(N_14, T_14, AN_14) \
662 SET_ATTRIBUTE(N_15, T_15, AN_15) \
663 SET_ATTRIBUTE(N_16, T_16, AN_16) \
664 SET_ATTRIBUTE(N_17, T_17, AN_17) \
665 SET_ATTRIBUTE(N_18, T_18, AN_18) \
666 SET_ATTRIBUTE(N_19, T_19, AN_19) \
667 SET_ATTRIBUTE(N_20, T_20, AN_20) \
668 END_INIT() \
669 public:
670
671//--------------------------------------------------------------------------------------
672#define INTERFACE_25(KIND, \
673 N_0, AN_0, T_0, C_0, \
674 N_1, AN_1, T_1, C_1, \
675 N_2, AN_2, T_2, C_2, \
676 N_3, AN_3, T_3, C_3, \
677 N_4, AN_4, T_4, C_4, \
678 N_5, AN_5, T_5, C_5, \
679 N_6, AN_6, T_6, C_6, \
680 N_7, AN_7, T_7, C_7, \
681 N_8, AN_8, T_8, C_8, \
682 N_9, AN_9, T_9, C_9, \
683 N_10, AN_10, T_10, C_10, \
684 N_11, AN_11, T_11, C_11, \
685 N_12, AN_12, T_12, C_12, \
686 N_13, AN_13, T_13, C_13, \
687 N_14, AN_14, T_14, C_14, \
688 N_15, AN_15, T_15, C_15, \
689 N_16, AN_16, T_16, C_16, \
690 N_17, AN_17, T_17, C_17, \
691 N_18, AN_18, T_18, C_18, \
692 N_19, AN_19, T_19, C_19, \
693 N_20, AN_20, T_20, C_20, \
694 N_21, AN_21, T_21, C_21, \
695 N_22, AN_22, T_22, C_22, \
696 N_23, AN_23, T_23, C_23, \
697 N_24, AN_24, T_24, C_24) \
698 public: \
699 INTERFACE_COMMON(KIND) \
700 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
701 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
702 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
703 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
704 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
705 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
706 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
707 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
708 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
709 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
710 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
711 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
712 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
713 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
714 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
715 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
716 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
717 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
718 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
719 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
720 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
721 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
722 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
723 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
724 DEFINE_ATTRIBUTE(N_24, T_24, C_24) \
725 protected: \
726 START_INIT() \
727 SET_ATTRIBUTE(N_0, T_0, AN_0) \
728 SET_ATTRIBUTE(N_1, T_1, AN_1) \
729 SET_ATTRIBUTE(N_2, T_2, AN_2) \
730 SET_ATTRIBUTE(N_3, T_3, AN_3) \
731 SET_ATTRIBUTE(N_4, T_4, AN_4) \
732 SET_ATTRIBUTE(N_5, T_5, AN_5) \
733 SET_ATTRIBUTE(N_6, T_6, AN_6) \
734 SET_ATTRIBUTE(N_7, T_7, AN_7) \
735 SET_ATTRIBUTE(N_8, T_8, AN_8) \
736 SET_ATTRIBUTE(N_9, T_9, AN_9) \
737 SET_ATTRIBUTE(N_10, T_10, AN_10) \
738 SET_ATTRIBUTE(N_11, T_11, AN_11) \
739 SET_ATTRIBUTE(N_12, T_12, AN_12) \
740 SET_ATTRIBUTE(N_13, T_13, AN_13) \
741 SET_ATTRIBUTE(N_14, T_14, AN_14) \
742 SET_ATTRIBUTE(N_15, T_15, AN_15) \
743 SET_ATTRIBUTE(N_16, T_16, AN_16) \
744 SET_ATTRIBUTE(N_17, T_17, AN_17) \
745 SET_ATTRIBUTE(N_18, T_18, AN_18) \
746 SET_ATTRIBUTE(N_19, T_19, AN_19) \
747 SET_ATTRIBUTE(N_20, T_20, AN_20) \
748 SET_ATTRIBUTE(N_21, T_21, AN_21) \
749 SET_ATTRIBUTE(N_22, T_22, AN_22) \
750 SET_ATTRIBUTE(N_23, T_23, AN_23) \
751 SET_ATTRIBUTE(N_24, T_24, AN_24) \
752 END_INIT() \
753 public:
754
755//--------------------------------------------------------------------------------------
756#endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */