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_14(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, \
397 N_12, AN_12, T_12, C_12, \
398 N_13, AN_13, T_13, C_13) \
400 INTERFACE_COMMON(KIND) \
401 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
402 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
403 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
404 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
405 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
406 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
407 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
408 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
409 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
410 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
411 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
412 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
413 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
414 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
417 SET_ATTRIBUTE(N_0, T_0, AN_0) \
418 SET_ATTRIBUTE(N_1, T_1, AN_1) \
419 SET_ATTRIBUTE(N_2, T_2, AN_2) \
420 SET_ATTRIBUTE(N_3, T_3, AN_3) \
421 SET_ATTRIBUTE(N_4, T_4, AN_4) \
422 SET_ATTRIBUTE(N_5, T_5, AN_5) \
423 SET_ATTRIBUTE(N_6, T_6, AN_6) \
424 SET_ATTRIBUTE(N_7, T_7, AN_7) \
425 SET_ATTRIBUTE(N_8, T_8, AN_8) \
426 SET_ATTRIBUTE(N_9, T_9, AN_9) \
427 SET_ATTRIBUTE(N_10, T_10, AN_10) \
428 SET_ATTRIBUTE(N_11, T_11, AN_11) \
429 SET_ATTRIBUTE(N_12, T_12, AN_12) \
430 SET_ATTRIBUTE(N_13, T_13, AN_13) \
434 //--------------------------------------------------------------------------------------
435 #define INTERFACE_20(KIND, \
436 N_0, AN_0, T_0, C_0, \
437 N_1, AN_1, T_1, C_1, \
438 N_2, AN_2, T_2, C_2, \
439 N_3, AN_3, T_3, C_3, \
440 N_4, AN_4, T_4, C_4, \
441 N_5, AN_5, T_5, C_5, \
442 N_6, AN_6, T_6, C_6, \
443 N_7, AN_7, T_7, C_7, \
444 N_8, AN_8, T_8, C_8, \
445 N_9, AN_9, T_9, C_9, \
446 N_10, AN_10, T_10, C_10, \
447 N_11, AN_11, T_11, C_11, \
448 N_12, AN_12, T_12, C_12, \
449 N_13, AN_13, T_13, C_13, \
450 N_14, AN_14, T_14, C_14, \
451 N_15, AN_15, T_15, C_15, \
452 N_16, AN_16, T_16, C_16, \
453 N_17, AN_17, T_17, C_17, \
454 N_18, AN_18, T_18, C_18, \
455 N_19, AN_19, T_19, C_19) \
457 INTERFACE_COMMON(KIND) \
458 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
459 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
460 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
461 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
462 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
463 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
464 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
465 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
466 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
467 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
468 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
469 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
470 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
471 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
472 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
473 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
474 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
475 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
476 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
477 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
480 SET_ATTRIBUTE(N_0, T_0, AN_0) \
481 SET_ATTRIBUTE(N_1, T_1, AN_1) \
482 SET_ATTRIBUTE(N_2, T_2, AN_2) \
483 SET_ATTRIBUTE(N_3, T_3, AN_3) \
484 SET_ATTRIBUTE(N_4, T_4, AN_4) \
485 SET_ATTRIBUTE(N_5, T_5, AN_5) \
486 SET_ATTRIBUTE(N_6, T_6, AN_6) \
487 SET_ATTRIBUTE(N_7, T_7, AN_7) \
488 SET_ATTRIBUTE(N_8, T_8, AN_8) \
489 SET_ATTRIBUTE(N_9, T_9, AN_9) \
490 SET_ATTRIBUTE(N_10, T_10, AN_10) \
491 SET_ATTRIBUTE(N_11, T_11, AN_11) \
492 SET_ATTRIBUTE(N_12, T_12, AN_12) \
493 SET_ATTRIBUTE(N_13, T_13, AN_13) \
494 SET_ATTRIBUTE(N_14, T_14, AN_14) \
495 SET_ATTRIBUTE(N_15, T_15, AN_15) \
496 SET_ATTRIBUTE(N_16, T_16, AN_16) \
497 SET_ATTRIBUTE(N_17, T_17, AN_17) \
498 SET_ATTRIBUTE(N_18, T_18, AN_18) \
499 SET_ATTRIBUTE(N_19, T_19, AN_19) \
503 //--------------------------------------------------------------------------------------
504 #define INTERFACE_21(KIND, \
505 N_0, AN_0, T_0, C_0, \
506 N_1, AN_1, T_1, C_1, \
507 N_2, AN_2, T_2, C_2, \
508 N_3, AN_3, T_3, C_3, \
509 N_4, AN_4, T_4, C_4, \
510 N_5, AN_5, T_5, C_5, \
511 N_6, AN_6, T_6, C_6, \
512 N_7, AN_7, T_7, C_7, \
513 N_8, AN_8, T_8, C_8, \
514 N_9, AN_9, T_9, C_9, \
515 N_10, AN_10, T_10, C_10, \
516 N_11, AN_11, T_11, C_11, \
517 N_12, AN_12, T_12, C_12, \
518 N_13, AN_13, T_13, C_13, \
519 N_14, AN_14, T_14, C_14, \
520 N_15, AN_15, T_15, C_15, \
521 N_16, AN_16, T_16, C_16, \
522 N_17, AN_17, T_17, C_17, \
523 N_18, AN_18, T_18, C_18, \
524 N_19, AN_19, T_19, C_19, \
525 N_20, AN_20, T_20, C_20) \
527 INTERFACE_COMMON(KIND) \
528 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
529 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
530 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
531 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
532 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
533 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
534 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
535 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
536 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
537 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
538 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
539 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
540 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
541 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
542 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
543 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
544 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
545 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
546 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
547 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
548 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
551 SET_ATTRIBUTE(N_0, T_0, AN_0) \
552 SET_ATTRIBUTE(N_1, T_1, AN_1) \
553 SET_ATTRIBUTE(N_2, T_2, AN_2) \
554 SET_ATTRIBUTE(N_3, T_3, AN_3) \
555 SET_ATTRIBUTE(N_4, T_4, AN_4) \
556 SET_ATTRIBUTE(N_5, T_5, AN_5) \
557 SET_ATTRIBUTE(N_6, T_6, AN_6) \
558 SET_ATTRIBUTE(N_7, T_7, AN_7) \
559 SET_ATTRIBUTE(N_8, T_8, AN_8) \
560 SET_ATTRIBUTE(N_9, T_9, AN_9) \
561 SET_ATTRIBUTE(N_10, T_10, AN_10) \
562 SET_ATTRIBUTE(N_11, T_11, AN_11) \
563 SET_ATTRIBUTE(N_12, T_12, AN_12) \
564 SET_ATTRIBUTE(N_13, T_13, AN_13) \
565 SET_ATTRIBUTE(N_14, T_14, AN_14) \
566 SET_ATTRIBUTE(N_15, T_15, AN_15) \
567 SET_ATTRIBUTE(N_16, T_16, AN_16) \
568 SET_ATTRIBUTE(N_17, T_17, AN_17) \
569 SET_ATTRIBUTE(N_18, T_18, AN_18) \
570 SET_ATTRIBUTE(N_19, T_19, AN_19) \
571 SET_ATTRIBUTE(N_20, T_20, AN_20) \
575 //--------------------------------------------------------------------------------------
576 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */