1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2 // Name : ModelHighAPI_Macro.h
6 // 27/05/16 - Sergey POKHODENKO - Creation of the file
8 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
9 #define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
11 //--------------------------------------------------------------------------------------
12 #include <GeomDataAPI_Dir.h>
13 #include <GeomDataAPI_Point.h>
14 #include <GeomDataAPI_Point2D.h>
15 //--------------------------------------------------------------------------------------
16 #include <ModelAPI_AttributeBoolean.h>
17 #include <ModelAPI_AttributeDocRef.h>
18 #include <ModelAPI_AttributeDouble.h>
19 #include <ModelAPI_AttributeIntArray.h>
20 #include <ModelAPI_AttributeInteger.h>
21 #include <ModelAPI_AttributeRefAttr.h>
22 #include <ModelAPI_AttributeRefAttrList.h>
23 #include <ModelAPI_AttributeReference.h>
24 #include <ModelAPI_AttributeRefList.h>
25 #include <ModelAPI_AttributeSelection.h>
26 #include <ModelAPI_AttributeSelectionList.h>
27 #include <ModelAPI_AttributeString.h>
28 #include <ModelAPI_Feature.h>
30 //--------------------------------------------------------------------------------------
31 #define VAR_NAME(NAME) my##NAME
33 //--------------------------------------------------------------------------------------
34 #define TO_STRING_(NAME) #NAME
35 #define TO_STRING(NAME) TO_STRING_(NAME)
37 //--------------------------------------------------------------------------------------
38 // Used in INTERFACE_N for create variable and getter
39 #define DEFINE_ATTRIBUTE(NAME, TYPE, COMMENT) \
41 std::shared_ptr<TYPE> NAME() const { return VAR_NAME(NAME); } \
43 std::shared_ptr<TYPE> VAR_NAME(NAME); \
46 //--------------------------------------------------------------------------------------
47 // Used in INTERFACE_N inside START_INIT/END_INIT for
48 // set variable with attribute received from feature
49 #define SET_ATTRIBUTE(NAME, TYPE, ATT_NAME) \
50 VAR_NAME(NAME) = std::dynamic_pointer_cast<TYPE>(feature()->attribute(ATT_NAME)); \
51 if (!VAR_NAME(NAME)) \
53 myAttrGetter[ATT_NAME] = TO_STRING(NAME);
55 //--------------------------------------------------------------------------------------
56 #define INTERFACE_COMMON(KIND) \
57 static std::string ID() { return KIND; }\
58 virtual std::string getID() { return ID(); }
60 //--------------------------------------------------------------------------------------
61 #define START_INIT() \
64 throwException(ID() + " exception: The feature is NULL."); \
67 if (getKind() != getID()) { \
68 throwException(ID() + " exception: Wrong feature kind."); \
72 //--------------------------------------------------------------------------------------
77 //--------------------------------------------------------------------------------------
78 #define INTERFACE_0(KIND) \
80 INTERFACE_COMMON(KIND) \
86 //--------------------------------------------------------------------------------------
87 #define INTERFACE_1(KIND, \
88 N_0, AN_0, T_0, C_0) \
90 INTERFACE_COMMON(KIND) \
91 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
94 SET_ATTRIBUTE(N_0, T_0, AN_0) \
98 //--------------------------------------------------------------------------------------
99 #define INTERFACE_2(KIND, \
100 N_0, AN_0, T_0, C_0, \
101 N_1, AN_1, T_1, C_1) \
103 INTERFACE_COMMON(KIND) \
104 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
105 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
108 SET_ATTRIBUTE(N_0, T_0, AN_0) \
109 SET_ATTRIBUTE(N_1, T_1, AN_1) \
113 //--------------------------------------------------------------------------------------
114 #define INTERFACE_3(KIND, \
115 N_0, AN_0, T_0, C_0, \
116 N_1, AN_1, T_1, C_1, \
117 N_2, AN_2, T_2, C_2) \
119 INTERFACE_COMMON(KIND) \
120 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
121 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
122 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
125 SET_ATTRIBUTE(N_0, T_0, AN_0) \
126 SET_ATTRIBUTE(N_1, T_1, AN_1) \
127 SET_ATTRIBUTE(N_2, T_2, AN_2) \
131 //--------------------------------------------------------------------------------------
132 #define INTERFACE_4(KIND, \
133 N_0, AN_0, T_0, C_0, \
134 N_1, AN_1, T_1, C_1, \
135 N_2, AN_2, T_2, C_2, \
136 N_3, AN_3, T_3, C_3) \
138 INTERFACE_COMMON(KIND) \
139 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
140 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
141 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
142 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
145 SET_ATTRIBUTE(N_0, T_0, AN_0) \
146 SET_ATTRIBUTE(N_1, T_1, AN_1) \
147 SET_ATTRIBUTE(N_2, T_2, AN_2) \
148 SET_ATTRIBUTE(N_3, T_3, AN_3) \
152 //--------------------------------------------------------------------------------------
153 #define INTERFACE_5(KIND, \
154 N_0, AN_0, T_0, C_0, \
155 N_1, AN_1, T_1, C_1, \
156 N_2, AN_2, T_2, C_2, \
157 N_3, AN_3, T_3, C_3, \
158 N_4, AN_4, T_4, C_4) \
160 INTERFACE_COMMON(KIND) \
161 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
162 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
163 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
164 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
165 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
168 SET_ATTRIBUTE(N_0, T_0, AN_0) \
169 SET_ATTRIBUTE(N_1, T_1, AN_1) \
170 SET_ATTRIBUTE(N_2, T_2, AN_2) \
171 SET_ATTRIBUTE(N_3, T_3, AN_3) \
172 SET_ATTRIBUTE(N_4, T_4, AN_4) \
176 //--------------------------------------------------------------------------------------
177 #define INTERFACE_6(KIND, \
178 N_0, AN_0, T_0, C_0, \
179 N_1, AN_1, T_1, C_1, \
180 N_2, AN_2, T_2, C_2, \
181 N_3, AN_3, T_3, C_3, \
182 N_4, AN_4, T_4, C_4, \
183 N_5, AN_5, T_5, C_5) \
185 INTERFACE_COMMON(KIND) \
186 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
187 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
188 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
189 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
190 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
191 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
194 SET_ATTRIBUTE(N_0, T_0, AN_0) \
195 SET_ATTRIBUTE(N_1, T_1, AN_1) \
196 SET_ATTRIBUTE(N_2, T_2, AN_2) \
197 SET_ATTRIBUTE(N_3, T_3, AN_3) \
198 SET_ATTRIBUTE(N_4, T_4, AN_4) \
199 SET_ATTRIBUTE(N_5, T_5, AN_5) \
203 //--------------------------------------------------------------------------------------
204 #define INTERFACE_7(KIND, \
205 N_0, AN_0, T_0, C_0, \
206 N_1, AN_1, T_1, C_1, \
207 N_2, AN_2, T_2, C_2, \
208 N_3, AN_3, T_3, C_3, \
209 N_4, AN_4, T_4, C_4, \
210 N_5, AN_5, T_5, C_5, \
211 N_6, AN_6, T_6, C_6) \
213 INTERFACE_COMMON(KIND) \
214 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
215 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
216 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
217 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
218 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
219 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
220 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
223 SET_ATTRIBUTE(N_0, T_0, AN_0) \
224 SET_ATTRIBUTE(N_1, T_1, AN_1) \
225 SET_ATTRIBUTE(N_2, T_2, AN_2) \
226 SET_ATTRIBUTE(N_3, T_3, AN_3) \
227 SET_ATTRIBUTE(N_4, T_4, AN_4) \
228 SET_ATTRIBUTE(N_5, T_5, AN_5) \
229 SET_ATTRIBUTE(N_6, T_6, AN_6) \
233 //--------------------------------------------------------------------------------------
234 #define INTERFACE_8(KIND, \
235 N_0, AN_0, T_0, C_0, \
236 N_1, AN_1, T_1, C_1, \
237 N_2, AN_2, T_2, C_2, \
238 N_3, AN_3, T_3, C_3, \
239 N_4, AN_4, T_4, C_4, \
240 N_5, AN_5, T_5, C_5, \
241 N_6, AN_6, T_6, C_6, \
242 N_7, AN_7, T_7, C_7) \
244 INTERFACE_COMMON(KIND) \
245 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
246 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
247 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
248 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
249 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
250 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
251 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
252 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
255 SET_ATTRIBUTE(N_0, T_0, AN_0) \
256 SET_ATTRIBUTE(N_1, T_1, AN_1) \
257 SET_ATTRIBUTE(N_2, T_2, AN_2) \
258 SET_ATTRIBUTE(N_3, T_3, AN_3) \
259 SET_ATTRIBUTE(N_4, T_4, AN_4) \
260 SET_ATTRIBUTE(N_5, T_5, AN_5) \
261 SET_ATTRIBUTE(N_6, T_6, AN_6) \
262 SET_ATTRIBUTE(N_7, T_7, AN_7) \
266 //--------------------------------------------------------------------------------------
267 #define INTERFACE_9(KIND, \
268 N_0, AN_0, T_0, C_0, \
269 N_1, AN_1, T_1, C_1, \
270 N_2, AN_2, T_2, C_2, \
271 N_3, AN_3, T_3, C_3, \
272 N_4, AN_4, T_4, C_4, \
273 N_5, AN_5, T_5, C_5, \
274 N_6, AN_6, T_6, C_6, \
275 N_7, AN_7, T_7, C_7, \
276 N_8, AN_8, T_8, C_8) \
278 INTERFACE_COMMON(KIND) \
279 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
280 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
281 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
282 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
283 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
284 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
285 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
286 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
287 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
290 SET_ATTRIBUTE(N_0, T_0, AN_0) \
291 SET_ATTRIBUTE(N_1, T_1, AN_1) \
292 SET_ATTRIBUTE(N_2, T_2, AN_2) \
293 SET_ATTRIBUTE(N_3, T_3, AN_3) \
294 SET_ATTRIBUTE(N_4, T_4, AN_4) \
295 SET_ATTRIBUTE(N_5, T_5, AN_5) \
296 SET_ATTRIBUTE(N_6, T_6, AN_6) \
297 SET_ATTRIBUTE(N_7, T_7, AN_7) \
298 SET_ATTRIBUTE(N_8, T_8, AN_8) \
302 //--------------------------------------------------------------------------------------
303 #define INTERFACE_10(KIND, \
304 N_0, AN_0, T_0, C_0, \
305 N_1, AN_1, T_1, C_1, \
306 N_2, AN_2, T_2, C_2, \
307 N_3, AN_3, T_3, C_3, \
308 N_4, AN_4, T_4, C_4, \
309 N_5, AN_5, T_5, C_5, \
310 N_6, AN_6, T_6, C_6, \
311 N_7, AN_7, T_7, C_7, \
312 N_8, AN_8, T_8, C_8, \
313 N_9, AN_9, T_9, C_9) \
315 INTERFACE_COMMON(KIND) \
316 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
317 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
318 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
319 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
320 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
321 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
322 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
323 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
324 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
325 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
328 SET_ATTRIBUTE(N_0, T_0, AN_0) \
329 SET_ATTRIBUTE(N_1, T_1, AN_1) \
330 SET_ATTRIBUTE(N_2, T_2, AN_2) \
331 SET_ATTRIBUTE(N_3, T_3, AN_3) \
332 SET_ATTRIBUTE(N_4, T_4, AN_4) \
333 SET_ATTRIBUTE(N_5, T_5, AN_5) \
334 SET_ATTRIBUTE(N_6, T_6, AN_6) \
335 SET_ATTRIBUTE(N_7, T_7, AN_7) \
336 SET_ATTRIBUTE(N_8, T_8, AN_8) \
337 SET_ATTRIBUTE(N_9, T_9, AN_9) \
341 //--------------------------------------------------------------------------------------
342 #define INTERFACE_11(KIND, \
343 N_0, AN_0, T_0, C_0, \
344 N_1, AN_1, T_1, C_1, \
345 N_2, AN_2, T_2, C_2, \
346 N_3, AN_3, T_3, C_3, \
347 N_4, AN_4, T_4, C_4, \
348 N_5, AN_5, T_5, C_5, \
349 N_6, AN_6, T_6, C_6, \
350 N_7, AN_7, T_7, C_7, \
351 N_8, AN_8, T_8, C_8, \
352 N_9, AN_9, T_9, C_9, \
353 N_10, AN_10, T_10, C_10) \
355 INTERFACE_COMMON(KIND) \
356 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
357 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
358 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
359 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
360 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
361 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
362 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
363 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
364 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
365 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
366 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
369 SET_ATTRIBUTE(N_0, T_0, AN_0) \
370 SET_ATTRIBUTE(N_1, T_1, AN_1) \
371 SET_ATTRIBUTE(N_2, T_2, AN_2) \
372 SET_ATTRIBUTE(N_3, T_3, AN_3) \
373 SET_ATTRIBUTE(N_4, T_4, AN_4) \
374 SET_ATTRIBUTE(N_5, T_5, AN_5) \
375 SET_ATTRIBUTE(N_6, T_6, AN_6) \
376 SET_ATTRIBUTE(N_7, T_7, AN_7) \
377 SET_ATTRIBUTE(N_8, T_8, AN_8) \
378 SET_ATTRIBUTE(N_9, T_9, AN_9) \
379 SET_ATTRIBUTE(N_10, T_10, AN_10) \
383 //--------------------------------------------------------------------------------------
384 #define INTERFACE_12(KIND, \
385 N_0, AN_0, T_0, C_0, \
386 N_1, AN_1, T_1, C_1, \
387 N_2, AN_2, T_2, C_2, \
388 N_3, AN_3, T_3, C_3, \
389 N_4, AN_4, T_4, C_4, \
390 N_5, AN_5, T_5, C_5, \
391 N_6, AN_6, T_6, C_6, \
392 N_7, AN_7, T_7, C_7, \
393 N_8, AN_8, T_8, C_8, \
394 N_9, AN_9, T_9, C_9, \
395 N_10, AN_10, T_10, C_10, \
396 N_11, AN_11, T_11, C_11) \
398 INTERFACE_COMMON(KIND) \
399 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
400 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
401 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
402 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
403 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
404 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
405 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
406 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
407 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
408 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
409 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
410 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
413 SET_ATTRIBUTE(N_0, T_0, AN_0) \
414 SET_ATTRIBUTE(N_1, T_1, AN_1) \
415 SET_ATTRIBUTE(N_2, T_2, AN_2) \
416 SET_ATTRIBUTE(N_3, T_3, AN_3) \
417 SET_ATTRIBUTE(N_4, T_4, AN_4) \
418 SET_ATTRIBUTE(N_5, T_5, AN_5) \
419 SET_ATTRIBUTE(N_6, T_6, AN_6) \
420 SET_ATTRIBUTE(N_7, T_7, AN_7) \
421 SET_ATTRIBUTE(N_8, T_8, AN_8) \
422 SET_ATTRIBUTE(N_9, T_9, AN_9) \
423 SET_ATTRIBUTE(N_10, T_10, AN_10) \
424 SET_ATTRIBUTE(N_11, T_11, AN_11) \
428 //--------------------------------------------------------------------------------------
429 #define INTERFACE_14(KIND, \
430 N_0, AN_0, T_0, C_0, \
431 N_1, AN_1, T_1, C_1, \
432 N_2, AN_2, T_2, C_2, \
433 N_3, AN_3, T_3, C_3, \
434 N_4, AN_4, T_4, C_4, \
435 N_5, AN_5, T_5, C_5, \
436 N_6, AN_6, T_6, C_6, \
437 N_7, AN_7, T_7, C_7, \
438 N_8, AN_8, T_8, C_8, \
439 N_9, AN_9, T_9, C_9, \
440 N_10, AN_10, T_10, C_10, \
441 N_11, AN_11, T_11, C_11, \
442 N_12, AN_12, T_12, C_12, \
443 N_13, AN_13, T_13, C_13) \
445 INTERFACE_COMMON(KIND) \
446 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
447 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
448 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
449 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
450 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
451 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
452 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
453 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
454 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
455 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
456 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
457 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
458 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
459 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
462 SET_ATTRIBUTE(N_0, T_0, AN_0) \
463 SET_ATTRIBUTE(N_1, T_1, AN_1) \
464 SET_ATTRIBUTE(N_2, T_2, AN_2) \
465 SET_ATTRIBUTE(N_3, T_3, AN_3) \
466 SET_ATTRIBUTE(N_4, T_4, AN_4) \
467 SET_ATTRIBUTE(N_5, T_5, AN_5) \
468 SET_ATTRIBUTE(N_6, T_6, AN_6) \
469 SET_ATTRIBUTE(N_7, T_7, AN_7) \
470 SET_ATTRIBUTE(N_8, T_8, AN_8) \
471 SET_ATTRIBUTE(N_9, T_9, AN_9) \
472 SET_ATTRIBUTE(N_10, T_10, AN_10) \
473 SET_ATTRIBUTE(N_11, T_11, AN_11) \
474 SET_ATTRIBUTE(N_12, T_12, AN_12) \
475 SET_ATTRIBUTE(N_13, T_13, AN_13) \
479 //--------------------------------------------------------------------------------------
480 #define INTERFACE_20(KIND, \
481 N_0, AN_0, T_0, C_0, \
482 N_1, AN_1, T_1, C_1, \
483 N_2, AN_2, T_2, C_2, \
484 N_3, AN_3, T_3, C_3, \
485 N_4, AN_4, T_4, C_4, \
486 N_5, AN_5, T_5, C_5, \
487 N_6, AN_6, T_6, C_6, \
488 N_7, AN_7, T_7, C_7, \
489 N_8, AN_8, T_8, C_8, \
490 N_9, AN_9, T_9, C_9, \
491 N_10, AN_10, T_10, C_10, \
492 N_11, AN_11, T_11, C_11, \
493 N_12, AN_12, T_12, C_12, \
494 N_13, AN_13, T_13, C_13, \
495 N_14, AN_14, T_14, C_14, \
496 N_15, AN_15, T_15, C_15, \
497 N_16, AN_16, T_16, C_16, \
498 N_17, AN_17, T_17, C_17, \
499 N_18, AN_18, T_18, C_18, \
500 N_19, AN_19, T_19, C_19) \
502 INTERFACE_COMMON(KIND) \
503 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
504 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
505 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
506 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
507 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
508 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
509 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
510 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
511 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
512 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
513 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
514 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
515 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
516 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
517 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
518 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
519 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
520 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
521 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
522 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
525 SET_ATTRIBUTE(N_0, T_0, AN_0) \
526 SET_ATTRIBUTE(N_1, T_1, AN_1) \
527 SET_ATTRIBUTE(N_2, T_2, AN_2) \
528 SET_ATTRIBUTE(N_3, T_3, AN_3) \
529 SET_ATTRIBUTE(N_4, T_4, AN_4) \
530 SET_ATTRIBUTE(N_5, T_5, AN_5) \
531 SET_ATTRIBUTE(N_6, T_6, AN_6) \
532 SET_ATTRIBUTE(N_7, T_7, AN_7) \
533 SET_ATTRIBUTE(N_8, T_8, AN_8) \
534 SET_ATTRIBUTE(N_9, T_9, AN_9) \
535 SET_ATTRIBUTE(N_10, T_10, AN_10) \
536 SET_ATTRIBUTE(N_11, T_11, AN_11) \
537 SET_ATTRIBUTE(N_12, T_12, AN_12) \
538 SET_ATTRIBUTE(N_13, T_13, AN_13) \
539 SET_ATTRIBUTE(N_14, T_14, AN_14) \
540 SET_ATTRIBUTE(N_15, T_15, AN_15) \
541 SET_ATTRIBUTE(N_16, T_16, AN_16) \
542 SET_ATTRIBUTE(N_17, T_17, AN_17) \
543 SET_ATTRIBUTE(N_18, T_18, AN_18) \
544 SET_ATTRIBUTE(N_19, T_19, AN_19) \
548 //--------------------------------------------------------------------------------------
549 #define INTERFACE_21(KIND, \
550 N_0, AN_0, T_0, C_0, \
551 N_1, AN_1, T_1, C_1, \
552 N_2, AN_2, T_2, C_2, \
553 N_3, AN_3, T_3, C_3, \
554 N_4, AN_4, T_4, C_4, \
555 N_5, AN_5, T_5, C_5, \
556 N_6, AN_6, T_6, C_6, \
557 N_7, AN_7, T_7, C_7, \
558 N_8, AN_8, T_8, C_8, \
559 N_9, AN_9, T_9, C_9, \
560 N_10, AN_10, T_10, C_10, \
561 N_11, AN_11, T_11, C_11, \
562 N_12, AN_12, T_12, C_12, \
563 N_13, AN_13, T_13, C_13, \
564 N_14, AN_14, T_14, C_14, \
565 N_15, AN_15, T_15, C_15, \
566 N_16, AN_16, T_16, C_16, \
567 N_17, AN_17, T_17, C_17, \
568 N_18, AN_18, T_18, C_18, \
569 N_19, AN_19, T_19, C_19, \
570 N_20, AN_20, T_20, C_20) \
572 INTERFACE_COMMON(KIND) \
573 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
574 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
575 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
576 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
577 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
578 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
579 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
580 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
581 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
582 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
583 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
584 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
585 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
586 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
587 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
588 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
589 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
590 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
591 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
592 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
593 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
596 SET_ATTRIBUTE(N_0, T_0, AN_0) \
597 SET_ATTRIBUTE(N_1, T_1, AN_1) \
598 SET_ATTRIBUTE(N_2, T_2, AN_2) \
599 SET_ATTRIBUTE(N_3, T_3, AN_3) \
600 SET_ATTRIBUTE(N_4, T_4, AN_4) \
601 SET_ATTRIBUTE(N_5, T_5, AN_5) \
602 SET_ATTRIBUTE(N_6, T_6, AN_6) \
603 SET_ATTRIBUTE(N_7, T_7, AN_7) \
604 SET_ATTRIBUTE(N_8, T_8, AN_8) \
605 SET_ATTRIBUTE(N_9, T_9, AN_9) \
606 SET_ATTRIBUTE(N_10, T_10, AN_10) \
607 SET_ATTRIBUTE(N_11, T_11, AN_11) \
608 SET_ATTRIBUTE(N_12, T_12, AN_12) \
609 SET_ATTRIBUTE(N_13, T_13, AN_13) \
610 SET_ATTRIBUTE(N_14, T_14, AN_14) \
611 SET_ATTRIBUTE(N_15, T_15, AN_15) \
612 SET_ATTRIBUTE(N_16, T_16, AN_16) \
613 SET_ATTRIBUTE(N_17, T_17, AN_17) \
614 SET_ATTRIBUTE(N_18, T_18, AN_18) \
615 SET_ATTRIBUTE(N_19, T_19, AN_19) \
616 SET_ATTRIBUTE(N_20, T_20, AN_20) \
620 //--------------------------------------------------------------------------------------
621 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */