1 // Name : ModelHighAPI_Macro.h
5 // 27/05/16 - Sergey POKHODENKO - Creation of the file
7 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
8 #define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
10 //--------------------------------------------------------------------------------------
11 #include <GeomDataAPI_Dir.h>
12 #include <GeomDataAPI_Point.h>
13 #include <GeomDataAPI_Point2D.h>
14 //--------------------------------------------------------------------------------------
15 #include <ModelAPI_AttributeBoolean.h>
16 #include <ModelAPI_AttributeDocRef.h>
17 #include <ModelAPI_AttributeDouble.h>
18 #include <ModelAPI_AttributeIntArray.h>
19 #include <ModelAPI_AttributeInteger.h>
20 #include <ModelAPI_AttributeRefAttr.h>
21 #include <ModelAPI_AttributeRefAttrList.h>
22 #include <ModelAPI_AttributeReference.h>
23 #include <ModelAPI_AttributeRefList.h>
24 #include <ModelAPI_AttributeSelection.h>
25 #include <ModelAPI_AttributeSelectionList.h>
26 #include <ModelAPI_AttributeString.h>
27 #include <ModelAPI_Feature.h>
29 //--------------------------------------------------------------------------------------
30 #define VAR_NAME(NAME) my##NAME
32 //--------------------------------------------------------------------------------------
33 #define TO_STRING_(NAME) #NAME
34 #define TO_STRING(NAME) TO_STRING_(NAME)
36 //--------------------------------------------------------------------------------------
37 // Used in INTERFACE_N for create variable and getter
38 #define DEFINE_ATTRIBUTE(NAME, TYPE, COMMENT) \
40 std::shared_ptr<TYPE> NAME() const { return VAR_NAME(NAME); } \
42 std::shared_ptr<TYPE> VAR_NAME(NAME); \
45 //--------------------------------------------------------------------------------------
46 // Used in INTERFACE_N inside START_INIT/END_INIT for set variable with attribute received from feature
47 #define SET_ATTRIBUTE(NAME, TYPE, ATT_NAME) \
48 VAR_NAME(NAME) = std::dynamic_pointer_cast<TYPE>(feature()->attribute(ATT_NAME)); \
49 if (!VAR_NAME(NAME)) \
51 myAttrGetter[ATT_NAME] = TO_STRING(NAME);
53 //--------------------------------------------------------------------------------------
54 #define INTERFACE_COMMON(KIND) \
55 static std::string ID() { return KIND; }\
56 virtual std::string getID() { return ID(); }
58 //--------------------------------------------------------------------------------------
59 #define START_INIT() \
62 throwException(ID() + " exception: The feature is NULL."); \
65 if (getKind() != getID()) { \
66 throwException(ID() + " exception: Wrong feature kind."); \
70 //--------------------------------------------------------------------------------------
75 //--------------------------------------------------------------------------------------
76 #define INTERFACE_0(KIND) \
78 INTERFACE_COMMON(KIND) \
84 //--------------------------------------------------------------------------------------
85 #define INTERFACE_1(KIND, \
86 N_0, AN_0, T_0, C_0) \
88 INTERFACE_COMMON(KIND) \
89 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
92 SET_ATTRIBUTE(N_0, T_0, AN_0) \
96 //--------------------------------------------------------------------------------------
97 #define INTERFACE_2(KIND, \
98 N_0, AN_0, T_0, C_0, \
99 N_1, AN_1, T_1, C_1) \
101 INTERFACE_COMMON(KIND) \
102 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
103 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
106 SET_ATTRIBUTE(N_0, T_0, AN_0) \
107 SET_ATTRIBUTE(N_1, T_1, AN_1) \
111 //--------------------------------------------------------------------------------------
112 #define INTERFACE_3(KIND, \
113 N_0, AN_0, T_0, C_0, \
114 N_1, AN_1, T_1, C_1, \
115 N_2, AN_2, T_2, C_2) \
117 INTERFACE_COMMON(KIND) \
118 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
119 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
120 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
123 SET_ATTRIBUTE(N_0, T_0, AN_0) \
124 SET_ATTRIBUTE(N_1, T_1, AN_1) \
125 SET_ATTRIBUTE(N_2, T_2, AN_2) \
129 //--------------------------------------------------------------------------------------
130 #define INTERFACE_4(KIND, \
131 N_0, AN_0, T_0, C_0, \
132 N_1, AN_1, T_1, C_1, \
133 N_2, AN_2, T_2, C_2, \
134 N_3, AN_3, T_3, C_3) \
136 INTERFACE_COMMON(KIND) \
137 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
138 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
139 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
140 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
143 SET_ATTRIBUTE(N_0, T_0, AN_0) \
144 SET_ATTRIBUTE(N_1, T_1, AN_1) \
145 SET_ATTRIBUTE(N_2, T_2, AN_2) \
146 SET_ATTRIBUTE(N_3, T_3, AN_3) \
150 //--------------------------------------------------------------------------------------
151 #define INTERFACE_5(KIND, \
152 N_0, AN_0, T_0, C_0, \
153 N_1, AN_1, T_1, C_1, \
154 N_2, AN_2, T_2, C_2, \
155 N_3, AN_3, T_3, C_3, \
156 N_4, AN_4, T_4, C_4) \
158 INTERFACE_COMMON(KIND) \
159 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
160 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
161 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
162 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
163 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
166 SET_ATTRIBUTE(N_0, T_0, AN_0) \
167 SET_ATTRIBUTE(N_1, T_1, AN_1) \
168 SET_ATTRIBUTE(N_2, T_2, AN_2) \
169 SET_ATTRIBUTE(N_3, T_3, AN_3) \
170 SET_ATTRIBUTE(N_4, T_4, AN_4) \
174 //--------------------------------------------------------------------------------------
175 #define INTERFACE_6(KIND, \
176 N_0, AN_0, T_0, C_0, \
177 N_1, AN_1, T_1, C_1, \
178 N_2, AN_2, T_2, C_2, \
179 N_3, AN_3, T_3, C_3, \
180 N_4, AN_4, T_4, C_4, \
181 N_5, AN_5, T_5, C_5) \
183 INTERFACE_COMMON(KIND) \
184 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
185 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
186 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
187 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
188 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
189 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
192 SET_ATTRIBUTE(N_0, T_0, AN_0) \
193 SET_ATTRIBUTE(N_1, T_1, AN_1) \
194 SET_ATTRIBUTE(N_2, T_2, AN_2) \
195 SET_ATTRIBUTE(N_3, T_3, AN_3) \
196 SET_ATTRIBUTE(N_4, T_4, AN_4) \
197 SET_ATTRIBUTE(N_5, T_5, AN_5) \
201 //--------------------------------------------------------------------------------------
202 #define INTERFACE_7(KIND, \
203 N_0, AN_0, T_0, C_0, \
204 N_1, AN_1, T_1, C_1, \
205 N_2, AN_2, T_2, C_2, \
206 N_3, AN_3, T_3, C_3, \
207 N_4, AN_4, T_4, C_4, \
208 N_5, AN_5, T_5, C_5, \
209 N_6, AN_6, T_6, C_6) \
211 INTERFACE_COMMON(KIND) \
212 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
213 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
214 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
215 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
216 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
217 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
218 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
221 SET_ATTRIBUTE(N_0, T_0, AN_0) \
222 SET_ATTRIBUTE(N_1, T_1, AN_1) \
223 SET_ATTRIBUTE(N_2, T_2, AN_2) \
224 SET_ATTRIBUTE(N_3, T_3, AN_3) \
225 SET_ATTRIBUTE(N_4, T_4, AN_4) \
226 SET_ATTRIBUTE(N_5, T_5, AN_5) \
227 SET_ATTRIBUTE(N_6, T_6, AN_6) \
231 //--------------------------------------------------------------------------------------
232 #define INTERFACE_8(KIND, \
233 N_0, AN_0, T_0, C_0, \
234 N_1, AN_1, T_1, C_1, \
235 N_2, AN_2, T_2, C_2, \
236 N_3, AN_3, T_3, C_3, \
237 N_4, AN_4, T_4, C_4, \
238 N_5, AN_5, T_5, C_5, \
239 N_6, AN_6, T_6, C_6, \
240 N_7, AN_7, T_7, C_7) \
242 INTERFACE_COMMON(KIND) \
243 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
244 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
245 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
246 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
247 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
248 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
249 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
250 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
253 SET_ATTRIBUTE(N_0, T_0, AN_0) \
254 SET_ATTRIBUTE(N_1, T_1, AN_1) \
255 SET_ATTRIBUTE(N_2, T_2, AN_2) \
256 SET_ATTRIBUTE(N_3, T_3, AN_3) \
257 SET_ATTRIBUTE(N_4, T_4, AN_4) \
258 SET_ATTRIBUTE(N_5, T_5, AN_5) \
259 SET_ATTRIBUTE(N_6, T_6, AN_6) \
260 SET_ATTRIBUTE(N_7, T_7, AN_7) \
264 //--------------------------------------------------------------------------------------
265 #define INTERFACE_9(KIND, \
266 N_0, AN_0, T_0, C_0, \
267 N_1, AN_1, T_1, C_1, \
268 N_2, AN_2, T_2, C_2, \
269 N_3, AN_3, T_3, C_3, \
270 N_4, AN_4, T_4, C_4, \
271 N_5, AN_5, T_5, C_5, \
272 N_6, AN_6, T_6, C_6, \
273 N_7, AN_7, T_7, C_7, \
274 N_8, AN_8, T_8, C_8) \
276 INTERFACE_COMMON(KIND) \
277 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
278 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
279 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
280 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
281 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
282 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
283 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
284 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
285 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
288 SET_ATTRIBUTE(N_0, T_0, AN_0) \
289 SET_ATTRIBUTE(N_1, T_1, AN_1) \
290 SET_ATTRIBUTE(N_2, T_2, AN_2) \
291 SET_ATTRIBUTE(N_3, T_3, AN_3) \
292 SET_ATTRIBUTE(N_4, T_4, AN_4) \
293 SET_ATTRIBUTE(N_5, T_5, AN_5) \
294 SET_ATTRIBUTE(N_6, T_6, AN_6) \
295 SET_ATTRIBUTE(N_7, T_7, AN_7) \
296 SET_ATTRIBUTE(N_8, T_8, AN_8) \
300 //--------------------------------------------------------------------------------------
301 #define INTERFACE_10(KIND, \
302 N_0, AN_0, T_0, C_0, \
303 N_1, AN_1, T_1, C_1, \
304 N_2, AN_2, T_2, C_2, \
305 N_3, AN_3, T_3, C_3, \
306 N_4, AN_4, T_4, C_4, \
307 N_5, AN_5, T_5, C_5, \
308 N_6, AN_6, T_6, C_6, \
309 N_7, AN_7, T_7, C_7, \
310 N_8, AN_8, T_8, C_8, \
311 N_9, AN_9, T_9, C_9) \
313 INTERFACE_COMMON(KIND) \
314 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
315 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
316 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
317 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
318 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
319 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
320 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
321 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
322 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
323 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
326 SET_ATTRIBUTE(N_0, T_0, AN_0) \
327 SET_ATTRIBUTE(N_1, T_1, AN_1) \
328 SET_ATTRIBUTE(N_2, T_2, AN_2) \
329 SET_ATTRIBUTE(N_3, T_3, AN_3) \
330 SET_ATTRIBUTE(N_4, T_4, AN_4) \
331 SET_ATTRIBUTE(N_5, T_5, AN_5) \
332 SET_ATTRIBUTE(N_6, T_6, AN_6) \
333 SET_ATTRIBUTE(N_7, T_7, AN_7) \
334 SET_ATTRIBUTE(N_8, T_8, AN_8) \
335 SET_ATTRIBUTE(N_9, T_9, AN_9) \
339 //--------------------------------------------------------------------------------------
340 #define INTERFACE_11(KIND, \
341 N_0, AN_0, T_0, C_0, \
342 N_1, AN_1, T_1, C_1, \
343 N_2, AN_2, T_2, C_2, \
344 N_3, AN_3, T_3, C_3, \
345 N_4, AN_4, T_4, C_4, \
346 N_5, AN_5, T_5, C_5, \
347 N_6, AN_6, T_6, C_6, \
348 N_7, AN_7, T_7, C_7, \
349 N_8, AN_8, T_8, C_8, \
350 N_9, AN_9, T_9, C_9, \
351 N_10, AN_10, T_10, C_10) \
353 INTERFACE_COMMON(KIND) \
354 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
355 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
356 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
357 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
358 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
359 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
360 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
361 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
362 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
363 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
364 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
367 SET_ATTRIBUTE(N_0, T_0, AN_0) \
368 SET_ATTRIBUTE(N_1, T_1, AN_1) \
369 SET_ATTRIBUTE(N_2, T_2, AN_2) \
370 SET_ATTRIBUTE(N_3, T_3, AN_3) \
371 SET_ATTRIBUTE(N_4, T_4, AN_4) \
372 SET_ATTRIBUTE(N_5, T_5, AN_5) \
373 SET_ATTRIBUTE(N_6, T_6, AN_6) \
374 SET_ATTRIBUTE(N_7, T_7, AN_7) \
375 SET_ATTRIBUTE(N_8, T_8, AN_8) \
376 SET_ATTRIBUTE(N_9, T_9, AN_9) \
377 SET_ATTRIBUTE(N_10, T_10, AN_10) \
381 //--------------------------------------------------------------------------------------
382 #define INTERFACE_14(KIND, \
383 N_0, AN_0, T_0, C_0, \
384 N_1, AN_1, T_1, C_1, \
385 N_2, AN_2, T_2, C_2, \
386 N_3, AN_3, T_3, C_3, \
387 N_4, AN_4, T_4, C_4, \
388 N_5, AN_5, T_5, C_5, \
389 N_6, AN_6, T_6, C_6, \
390 N_7, AN_7, T_7, C_7, \
391 N_8, AN_8, T_8, C_8, \
392 N_9, AN_9, T_9, C_9, \
393 N_10, AN_10, T_10, C_10, \
394 N_11, AN_11, T_11, C_11, \
395 N_12, AN_12, T_12, C_12, \
396 N_13, AN_13, T_13, C_13) \
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) \
411 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
412 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
415 SET_ATTRIBUTE(N_0, T_0, AN_0) \
416 SET_ATTRIBUTE(N_1, T_1, AN_1) \
417 SET_ATTRIBUTE(N_2, T_2, AN_2) \
418 SET_ATTRIBUTE(N_3, T_3, AN_3) \
419 SET_ATTRIBUTE(N_4, T_4, AN_4) \
420 SET_ATTRIBUTE(N_5, T_5, AN_5) \
421 SET_ATTRIBUTE(N_6, T_6, AN_6) \
422 SET_ATTRIBUTE(N_7, T_7, AN_7) \
423 SET_ATTRIBUTE(N_8, T_8, AN_8) \
424 SET_ATTRIBUTE(N_9, T_9, AN_9) \
425 SET_ATTRIBUTE(N_10, T_10, AN_10) \
426 SET_ATTRIBUTE(N_11, T_11, AN_11) \
427 SET_ATTRIBUTE(N_12, T_12, AN_12) \
428 SET_ATTRIBUTE(N_13, T_13, AN_13) \
432 //--------------------------------------------------------------------------------------
433 #define INTERFACE_20(KIND, \
434 N_0, AN_0, T_0, C_0, \
435 N_1, AN_1, T_1, C_1, \
436 N_2, AN_2, T_2, C_2, \
437 N_3, AN_3, T_3, C_3, \
438 N_4, AN_4, T_4, C_4, \
439 N_5, AN_5, T_5, C_5, \
440 N_6, AN_6, T_6, C_6, \
441 N_7, AN_7, T_7, C_7, \
442 N_8, AN_8, T_8, C_8, \
443 N_9, AN_9, T_9, C_9, \
444 N_10, AN_10, T_10, C_10, \
445 N_11, AN_11, T_11, C_11, \
446 N_12, AN_12, T_12, C_12, \
447 N_13, AN_13, T_13, C_13, \
448 N_14, AN_14, T_14, C_14, \
449 N_15, AN_15, T_15, C_15, \
450 N_16, AN_16, T_16, C_16, \
451 N_17, AN_17, T_17, C_17, \
452 N_18, AN_18, T_18, C_18, \
453 N_19, AN_19, T_19, C_19) \
455 INTERFACE_COMMON(KIND) \
456 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
457 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
458 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
459 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
460 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
461 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
462 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
463 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
464 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
465 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
466 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
467 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
468 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
469 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
470 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
471 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
472 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
473 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
474 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
475 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
478 SET_ATTRIBUTE(N_0, T_0, AN_0) \
479 SET_ATTRIBUTE(N_1, T_1, AN_1) \
480 SET_ATTRIBUTE(N_2, T_2, AN_2) \
481 SET_ATTRIBUTE(N_3, T_3, AN_3) \
482 SET_ATTRIBUTE(N_4, T_4, AN_4) \
483 SET_ATTRIBUTE(N_5, T_5, AN_5) \
484 SET_ATTRIBUTE(N_6, T_6, AN_6) \
485 SET_ATTRIBUTE(N_7, T_7, AN_7) \
486 SET_ATTRIBUTE(N_8, T_8, AN_8) \
487 SET_ATTRIBUTE(N_9, T_9, AN_9) \
488 SET_ATTRIBUTE(N_10, T_10, AN_10) \
489 SET_ATTRIBUTE(N_11, T_11, AN_11) \
490 SET_ATTRIBUTE(N_12, T_12, AN_12) \
491 SET_ATTRIBUTE(N_13, T_13, AN_13) \
492 SET_ATTRIBUTE(N_14, T_14, AN_14) \
493 SET_ATTRIBUTE(N_15, T_15, AN_15) \
494 SET_ATTRIBUTE(N_16, T_16, AN_16) \
495 SET_ATTRIBUTE(N_17, T_17, AN_17) \
496 SET_ATTRIBUTE(N_18, T_18, AN_18) \
497 SET_ATTRIBUTE(N_19, T_19, AN_19) \
501 //--------------------------------------------------------------------------------------
502 #define INTERFACE_21(KIND, \
503 N_0, AN_0, T_0, C_0, \
504 N_1, AN_1, T_1, C_1, \
505 N_2, AN_2, T_2, C_2, \
506 N_3, AN_3, T_3, C_3, \
507 N_4, AN_4, T_4, C_4, \
508 N_5, AN_5, T_5, C_5, \
509 N_6, AN_6, T_6, C_6, \
510 N_7, AN_7, T_7, C_7, \
511 N_8, AN_8, T_8, C_8, \
512 N_9, AN_9, T_9, C_9, \
513 N_10, AN_10, T_10, C_10, \
514 N_11, AN_11, T_11, C_11, \
515 N_12, AN_12, T_12, C_12, \
516 N_13, AN_13, T_13, C_13, \
517 N_14, AN_14, T_14, C_14, \
518 N_15, AN_15, T_15, C_15, \
519 N_16, AN_16, T_16, C_16, \
520 N_17, AN_17, T_17, C_17, \
521 N_18, AN_18, T_18, C_18, \
522 N_19, AN_19, T_19, C_19, \
523 N_20, AN_20, T_20, C_20) \
525 INTERFACE_COMMON(KIND) \
526 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
527 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
528 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
529 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
530 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
531 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
532 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
533 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
534 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
535 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
536 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
537 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
538 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
539 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
540 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
541 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
542 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
543 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
544 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
545 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
546 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
549 SET_ATTRIBUTE(N_0, T_0, AN_0) \
550 SET_ATTRIBUTE(N_1, T_1, AN_1) \
551 SET_ATTRIBUTE(N_2, T_2, AN_2) \
552 SET_ATTRIBUTE(N_3, T_3, AN_3) \
553 SET_ATTRIBUTE(N_4, T_4, AN_4) \
554 SET_ATTRIBUTE(N_5, T_5, AN_5) \
555 SET_ATTRIBUTE(N_6, T_6, AN_6) \
556 SET_ATTRIBUTE(N_7, T_7, AN_7) \
557 SET_ATTRIBUTE(N_8, T_8, AN_8) \
558 SET_ATTRIBUTE(N_9, T_9, AN_9) \
559 SET_ATTRIBUTE(N_10, T_10, AN_10) \
560 SET_ATTRIBUTE(N_11, T_11, AN_11) \
561 SET_ATTRIBUTE(N_12, T_12, AN_12) \
562 SET_ATTRIBUTE(N_13, T_13, AN_13) \
563 SET_ATTRIBUTE(N_14, T_14, AN_14) \
564 SET_ATTRIBUTE(N_15, T_15, AN_15) \
565 SET_ATTRIBUTE(N_16, T_16, AN_16) \
566 SET_ATTRIBUTE(N_17, T_17, AN_17) \
567 SET_ATTRIBUTE(N_18, T_18, AN_18) \
568 SET_ATTRIBUTE(N_19, T_19, AN_19) \
569 SET_ATTRIBUTE(N_20, T_20, AN_20) \
573 //--------------------------------------------------------------------------------------
574 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */