1 // Copyright (C) 2014-2024 CEA, EDF
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
21 #define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
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>
42 //--------------------------------------------------------------------------------------
43 #define VAR_NAME(NAME) my##NAME
45 //--------------------------------------------------------------------------------------
46 #define TO_STRING_(NAME) #NAME
47 #define TO_STRING(NAME) TO_STRING_(NAME)
49 //--------------------------------------------------------------------------------------
50 // Used in INTERFACE_N for create variable and getter
51 #define DEFINE_ATTRIBUTE(NAME, TYPE, COMMENT) \
53 virtual std::shared_ptr<TYPE> NAME() const { return VAR_NAME(NAME); } \
55 std::shared_ptr<TYPE> VAR_NAME(NAME); \
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)) \
65 myAttrGetter[ATT_NAME] = TO_STRING(NAME);
67 //--------------------------------------------------------------------------------------
68 #define INTERFACE_COMMON(KIND) \
69 static std::string ID() { return KIND; }\
70 virtual std::string getID() { return ID(); }
72 //--------------------------------------------------------------------------------------
73 #define START_INIT() \
76 throwException(ID() + " exception: The feature is NULL."); \
79 if (getKind() != getID()) { \
80 throwException(ID() + " exception: Wrong feature kind."); \
84 //--------------------------------------------------------------------------------------
89 //--------------------------------------------------------------------------------------
90 #define INTERFACE_0(KIND) \
92 INTERFACE_COMMON(KIND) \
98 //--------------------------------------------------------------------------------------
99 #define INTERFACE_1(KIND, \
100 N_0, AN_0, T_0, C_0) \
102 INTERFACE_COMMON(KIND) \
103 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
106 SET_ATTRIBUTE(N_0, T_0, AN_0) \
110 //--------------------------------------------------------------------------------------
111 #define INTERFACE_2(KIND, \
112 N_0, AN_0, T_0, C_0, \
113 N_1, AN_1, T_1, C_1) \
115 INTERFACE_COMMON(KIND) \
116 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
117 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
120 SET_ATTRIBUTE(N_0, T_0, AN_0) \
121 SET_ATTRIBUTE(N_1, T_1, AN_1) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
538 //--------------------------------------------------------------------------------------
539 #define INTERFACE_15(KIND, \
540 N_0, AN_0, T_0, C_0, \
541 N_1, AN_1, T_1, C_1, \
542 N_2, AN_2, T_2, C_2, \
543 N_3, AN_3, T_3, C_3, \
544 N_4, AN_4, T_4, C_4, \
545 N_5, AN_5, T_5, C_5, \
546 N_6, AN_6, T_6, C_6, \
547 N_7, AN_7, T_7, C_7, \
548 N_8, AN_8, T_8, C_8, \
549 N_9, AN_9, T_9, C_9, \
550 N_10, AN_10, T_10, C_10, \
551 N_11, AN_11, T_11, C_11, \
552 N_12, AN_12, T_12, C_12, \
553 N_13, AN_13, T_13, C_13, \
554 N_14, AN_14, T_14, C_14) \
556 INTERFACE_COMMON(KIND) \
557 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
558 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
559 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
560 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
561 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
562 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
563 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
564 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
565 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
566 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
567 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
568 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
569 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
570 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
571 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
574 SET_ATTRIBUTE(N_0, T_0, AN_0) \
575 SET_ATTRIBUTE(N_1, T_1, AN_1) \
576 SET_ATTRIBUTE(N_2, T_2, AN_2) \
577 SET_ATTRIBUTE(N_3, T_3, AN_3) \
578 SET_ATTRIBUTE(N_4, T_4, AN_4) \
579 SET_ATTRIBUTE(N_5, T_5, AN_5) \
580 SET_ATTRIBUTE(N_6, T_6, AN_6) \
581 SET_ATTRIBUTE(N_7, T_7, AN_7) \
582 SET_ATTRIBUTE(N_8, T_8, AN_8) \
583 SET_ATTRIBUTE(N_9, T_9, AN_9) \
584 SET_ATTRIBUTE(N_10, T_10, AN_10) \
585 SET_ATTRIBUTE(N_11, T_11, AN_11) \
586 SET_ATTRIBUTE(N_12, T_12, AN_12) \
587 SET_ATTRIBUTE(N_13, T_13, AN_13) \
588 SET_ATTRIBUTE(N_14, T_14, AN_14) \
592 //--------------------------------------------------------------------------------------
593 #define INTERFACE_16(KIND, \
594 N_0, AN_0, T_0, C_0, \
595 N_1, AN_1, T_1, C_1, \
596 N_2, AN_2, T_2, C_2, \
597 N_3, AN_3, T_3, C_3, \
598 N_4, AN_4, T_4, C_4, \
599 N_5, AN_5, T_5, C_5, \
600 N_6, AN_6, T_6, C_6, \
601 N_7, AN_7, T_7, C_7, \
602 N_8, AN_8, T_8, C_8, \
603 N_9, AN_9, T_9, C_9, \
604 N_10, AN_10, T_10, C_10, \
605 N_11, AN_11, T_11, C_11, \
606 N_12, AN_12, T_12, C_12, \
607 N_13, AN_13, T_13, C_13, \
608 N_14, AN_14, T_14, C_14, \
609 N_15, AN_15, T_15, C_15) \
611 INTERFACE_COMMON(KIND) \
612 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
613 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
614 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
615 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
616 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
617 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
618 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
619 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
620 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
621 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
622 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
623 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
624 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
625 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
626 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
627 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
630 SET_ATTRIBUTE(N_0, T_0, AN_0) \
631 SET_ATTRIBUTE(N_1, T_1, AN_1) \
632 SET_ATTRIBUTE(N_2, T_2, AN_2) \
633 SET_ATTRIBUTE(N_3, T_3, AN_3) \
634 SET_ATTRIBUTE(N_4, T_4, AN_4) \
635 SET_ATTRIBUTE(N_5, T_5, AN_5) \
636 SET_ATTRIBUTE(N_6, T_6, AN_6) \
637 SET_ATTRIBUTE(N_7, T_7, AN_7) \
638 SET_ATTRIBUTE(N_8, T_8, AN_8) \
639 SET_ATTRIBUTE(N_9, T_9, AN_9) \
640 SET_ATTRIBUTE(N_10, T_10, AN_10) \
641 SET_ATTRIBUTE(N_11, T_11, AN_11) \
642 SET_ATTRIBUTE(N_12, T_12, AN_12) \
643 SET_ATTRIBUTE(N_13, T_13, AN_13) \
644 SET_ATTRIBUTE(N_14, T_14, AN_14) \
645 SET_ATTRIBUTE(N_15, T_15, AN_15) \
649 //--------------------------------------------------------------------------------------
650 #define INTERFACE_18(KIND, \
651 N_0, AN_0, T_0, C_0, \
652 N_1, AN_1, T_1, C_1, \
653 N_2, AN_2, T_2, C_2, \
654 N_3, AN_3, T_3, C_3, \
655 N_4, AN_4, T_4, C_4, \
656 N_5, AN_5, T_5, C_5, \
657 N_6, AN_6, T_6, C_6, \
658 N_7, AN_7, T_7, C_7, \
659 N_8, AN_8, T_8, C_8, \
660 N_9, AN_9, T_9, C_9, \
661 N_10, AN_10, T_10, C_10, \
662 N_11, AN_11, T_11, C_11, \
663 N_12, AN_12, T_12, C_12, \
664 N_13, AN_13, T_13, C_13, \
665 N_14, AN_14, T_14, C_14, \
666 N_15, AN_15, T_15, C_15, \
667 N_16, AN_16, T_16, C_16, \
668 N_17, AN_17, T_17, C_17) \
670 INTERFACE_COMMON(KIND) \
671 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
672 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
673 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
674 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
675 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
676 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
677 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
678 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
679 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
680 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
681 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
682 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
683 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
684 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
685 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
686 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
687 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
688 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
691 SET_ATTRIBUTE(N_0, T_0, AN_0) \
692 SET_ATTRIBUTE(N_1, T_1, AN_1) \
693 SET_ATTRIBUTE(N_2, T_2, AN_2) \
694 SET_ATTRIBUTE(N_3, T_3, AN_3) \
695 SET_ATTRIBUTE(N_4, T_4, AN_4) \
696 SET_ATTRIBUTE(N_5, T_5, AN_5) \
697 SET_ATTRIBUTE(N_6, T_6, AN_6) \
698 SET_ATTRIBUTE(N_7, T_7, AN_7) \
699 SET_ATTRIBUTE(N_8, T_8, AN_8) \
700 SET_ATTRIBUTE(N_9, T_9, AN_9) \
701 SET_ATTRIBUTE(N_10, T_10, AN_10) \
702 SET_ATTRIBUTE(N_11, T_11, AN_11) \
703 SET_ATTRIBUTE(N_12, T_12, AN_12) \
704 SET_ATTRIBUTE(N_13, T_13, AN_13) \
705 SET_ATTRIBUTE(N_14, T_14, AN_14) \
706 SET_ATTRIBUTE(N_15, T_15, AN_15) \
707 SET_ATTRIBUTE(N_16, T_16, AN_16) \
708 SET_ATTRIBUTE(N_17, T_17, AN_17) \
712 //--------------------------------------------------------------------------------------
713 #define INTERFACE_20(KIND, \
714 N_0, AN_0, T_0, C_0, \
715 N_1, AN_1, T_1, C_1, \
716 N_2, AN_2, T_2, C_2, \
717 N_3, AN_3, T_3, C_3, \
718 N_4, AN_4, T_4, C_4, \
719 N_5, AN_5, T_5, C_5, \
720 N_6, AN_6, T_6, C_6, \
721 N_7, AN_7, T_7, C_7, \
722 N_8, AN_8, T_8, C_8, \
723 N_9, AN_9, T_9, C_9, \
724 N_10, AN_10, T_10, C_10, \
725 N_11, AN_11, T_11, C_11, \
726 N_12, AN_12, T_12, C_12, \
727 N_13, AN_13, T_13, C_13, \
728 N_14, AN_14, T_14, C_14, \
729 N_15, AN_15, T_15, C_15, \
730 N_16, AN_16, T_16, C_16, \
731 N_17, AN_17, T_17, C_17, \
732 N_18, AN_18, T_18, C_18, \
733 N_19, AN_19, T_19, C_19) \
735 INTERFACE_COMMON(KIND) \
736 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
737 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
738 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
739 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
740 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
741 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
742 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
743 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
744 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
745 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
746 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
747 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
748 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
749 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
750 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
751 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
752 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
753 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
754 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
755 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
758 SET_ATTRIBUTE(N_0, T_0, AN_0) \
759 SET_ATTRIBUTE(N_1, T_1, AN_1) \
760 SET_ATTRIBUTE(N_2, T_2, AN_2) \
761 SET_ATTRIBUTE(N_3, T_3, AN_3) \
762 SET_ATTRIBUTE(N_4, T_4, AN_4) \
763 SET_ATTRIBUTE(N_5, T_5, AN_5) \
764 SET_ATTRIBUTE(N_6, T_6, AN_6) \
765 SET_ATTRIBUTE(N_7, T_7, AN_7) \
766 SET_ATTRIBUTE(N_8, T_8, AN_8) \
767 SET_ATTRIBUTE(N_9, T_9, AN_9) \
768 SET_ATTRIBUTE(N_10, T_10, AN_10) \
769 SET_ATTRIBUTE(N_11, T_11, AN_11) \
770 SET_ATTRIBUTE(N_12, T_12, AN_12) \
771 SET_ATTRIBUTE(N_13, T_13, AN_13) \
772 SET_ATTRIBUTE(N_14, T_14, AN_14) \
773 SET_ATTRIBUTE(N_15, T_15, AN_15) \
774 SET_ATTRIBUTE(N_16, T_16, AN_16) \
775 SET_ATTRIBUTE(N_17, T_17, AN_17) \
776 SET_ATTRIBUTE(N_18, T_18, AN_18) \
777 SET_ATTRIBUTE(N_19, T_19, AN_19) \
781 //--------------------------------------------------------------------------------------
782 #define INTERFACE_21(KIND, \
783 N_0, AN_0, T_0, C_0, \
784 N_1, AN_1, T_1, C_1, \
785 N_2, AN_2, T_2, C_2, \
786 N_3, AN_3, T_3, C_3, \
787 N_4, AN_4, T_4, C_4, \
788 N_5, AN_5, T_5, C_5, \
789 N_6, AN_6, T_6, C_6, \
790 N_7, AN_7, T_7, C_7, \
791 N_8, AN_8, T_8, C_8, \
792 N_9, AN_9, T_9, C_9, \
793 N_10, AN_10, T_10, C_10, \
794 N_11, AN_11, T_11, C_11, \
795 N_12, AN_12, T_12, C_12, \
796 N_13, AN_13, T_13, C_13, \
797 N_14, AN_14, T_14, C_14, \
798 N_15, AN_15, T_15, C_15, \
799 N_16, AN_16, T_16, C_16, \
800 N_17, AN_17, T_17, C_17, \
801 N_18, AN_18, T_18, C_18, \
802 N_19, AN_19, T_19, C_19, \
803 N_20, AN_20, T_20, C_20) \
805 INTERFACE_COMMON(KIND) \
806 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
807 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
808 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
809 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
810 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
811 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
812 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
813 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
814 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
815 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
816 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
817 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
818 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
819 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
820 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
821 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
822 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
823 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
824 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
825 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
826 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
829 SET_ATTRIBUTE(N_0, T_0, AN_0) \
830 SET_ATTRIBUTE(N_1, T_1, AN_1) \
831 SET_ATTRIBUTE(N_2, T_2, AN_2) \
832 SET_ATTRIBUTE(N_3, T_3, AN_3) \
833 SET_ATTRIBUTE(N_4, T_4, AN_4) \
834 SET_ATTRIBUTE(N_5, T_5, AN_5) \
835 SET_ATTRIBUTE(N_6, T_6, AN_6) \
836 SET_ATTRIBUTE(N_7, T_7, AN_7) \
837 SET_ATTRIBUTE(N_8, T_8, AN_8) \
838 SET_ATTRIBUTE(N_9, T_9, AN_9) \
839 SET_ATTRIBUTE(N_10, T_10, AN_10) \
840 SET_ATTRIBUTE(N_11, T_11, AN_11) \
841 SET_ATTRIBUTE(N_12, T_12, AN_12) \
842 SET_ATTRIBUTE(N_13, T_13, AN_13) \
843 SET_ATTRIBUTE(N_14, T_14, AN_14) \
844 SET_ATTRIBUTE(N_15, T_15, AN_15) \
845 SET_ATTRIBUTE(N_16, T_16, AN_16) \
846 SET_ATTRIBUTE(N_17, T_17, AN_17) \
847 SET_ATTRIBUTE(N_18, T_18, AN_18) \
848 SET_ATTRIBUTE(N_19, T_19, AN_19) \
849 SET_ATTRIBUTE(N_20, T_20, AN_20) \
853 //--------------------------------------------------------------------------------------
854 #define INTERFACE_24(KIND, \
855 N_0, AN_0, T_0, C_0, \
856 N_1, AN_1, T_1, C_1, \
857 N_2, AN_2, T_2, C_2, \
858 N_3, AN_3, T_3, C_3, \
859 N_4, AN_4, T_4, C_4, \
860 N_5, AN_5, T_5, C_5, \
861 N_6, AN_6, T_6, C_6, \
862 N_7, AN_7, T_7, C_7, \
863 N_8, AN_8, T_8, C_8, \
864 N_9, AN_9, T_9, C_9, \
865 N_10, AN_10, T_10, C_10, \
866 N_11, AN_11, T_11, C_11, \
867 N_12, AN_12, T_12, C_12, \
868 N_13, AN_13, T_13, C_13, \
869 N_14, AN_14, T_14, C_14, \
870 N_15, AN_15, T_15, C_15, \
871 N_16, AN_16, T_16, C_16, \
872 N_17, AN_17, T_17, C_17, \
873 N_18, AN_18, T_18, C_18, \
874 N_19, AN_19, T_19, C_19, \
875 N_20, AN_20, T_20, C_20, \
876 N_21, AN_21, T_21, C_21, \
877 N_22, AN_22, T_22, C_22, \
878 N_23, AN_23, T_23, C_23) \
880 INTERFACE_COMMON(KIND) \
881 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
882 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
883 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
884 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
885 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
886 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
887 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
888 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
889 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
890 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
891 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
892 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
893 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
894 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
895 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
896 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
897 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
898 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
899 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
900 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
901 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
902 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
903 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
904 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
907 SET_ATTRIBUTE(N_0, T_0, AN_0) \
908 SET_ATTRIBUTE(N_1, T_1, AN_1) \
909 SET_ATTRIBUTE(N_2, T_2, AN_2) \
910 SET_ATTRIBUTE(N_3, T_3, AN_3) \
911 SET_ATTRIBUTE(N_4, T_4, AN_4) \
912 SET_ATTRIBUTE(N_5, T_5, AN_5) \
913 SET_ATTRIBUTE(N_6, T_6, AN_6) \
914 SET_ATTRIBUTE(N_7, T_7, AN_7) \
915 SET_ATTRIBUTE(N_8, T_8, AN_8) \
916 SET_ATTRIBUTE(N_9, T_9, AN_9) \
917 SET_ATTRIBUTE(N_10, T_10, AN_10) \
918 SET_ATTRIBUTE(N_11, T_11, AN_11) \
919 SET_ATTRIBUTE(N_12, T_12, AN_12) \
920 SET_ATTRIBUTE(N_13, T_13, AN_13) \
921 SET_ATTRIBUTE(N_14, T_14, AN_14) \
922 SET_ATTRIBUTE(N_15, T_15, AN_15) \
923 SET_ATTRIBUTE(N_16, T_16, AN_16) \
924 SET_ATTRIBUTE(N_17, T_17, AN_17) \
925 SET_ATTRIBUTE(N_18, T_18, AN_18) \
926 SET_ATTRIBUTE(N_19, T_19, AN_19) \
927 SET_ATTRIBUTE(N_20, T_20, AN_20) \
928 SET_ATTRIBUTE(N_21, T_21, AN_21) \
929 SET_ATTRIBUTE(N_22, T_22, AN_22) \
930 SET_ATTRIBUTE(N_23, T_23, AN_23) \
934 //--------------------------------------------------------------------------------------
935 #define INTERFACE_25(KIND, \
936 N_0, AN_0, T_0, C_0, \
937 N_1, AN_1, T_1, C_1, \
938 N_2, AN_2, T_2, C_2, \
939 N_3, AN_3, T_3, C_3, \
940 N_4, AN_4, T_4, C_4, \
941 N_5, AN_5, T_5, C_5, \
942 N_6, AN_6, T_6, C_6, \
943 N_7, AN_7, T_7, C_7, \
944 N_8, AN_8, T_8, C_8, \
945 N_9, AN_9, T_9, C_9, \
946 N_10, AN_10, T_10, C_10, \
947 N_11, AN_11, T_11, C_11, \
948 N_12, AN_12, T_12, C_12, \
949 N_13, AN_13, T_13, C_13, \
950 N_14, AN_14, T_14, C_14, \
951 N_15, AN_15, T_15, C_15, \
952 N_16, AN_16, T_16, C_16, \
953 N_17, AN_17, T_17, C_17, \
954 N_18, AN_18, T_18, C_18, \
955 N_19, AN_19, T_19, C_19, \
956 N_20, AN_20, T_20, C_20, \
957 N_21, AN_21, T_21, C_21, \
958 N_22, AN_22, T_22, C_22, \
959 N_23, AN_23, T_23, C_23, \
960 N_24, AN_24, T_24, C_24) \
962 INTERFACE_COMMON(KIND) \
963 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
964 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
965 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
966 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
967 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
968 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
969 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
970 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
971 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
972 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
973 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
974 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
975 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
976 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
977 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
978 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
979 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
980 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
981 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
982 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
983 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
984 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
985 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
986 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
987 DEFINE_ATTRIBUTE(N_24, T_24, C_24) \
990 SET_ATTRIBUTE(N_0, T_0, AN_0) \
991 SET_ATTRIBUTE(N_1, T_1, AN_1) \
992 SET_ATTRIBUTE(N_2, T_2, AN_2) \
993 SET_ATTRIBUTE(N_3, T_3, AN_3) \
994 SET_ATTRIBUTE(N_4, T_4, AN_4) \
995 SET_ATTRIBUTE(N_5, T_5, AN_5) \
996 SET_ATTRIBUTE(N_6, T_6, AN_6) \
997 SET_ATTRIBUTE(N_7, T_7, AN_7) \
998 SET_ATTRIBUTE(N_8, T_8, AN_8) \
999 SET_ATTRIBUTE(N_9, T_9, AN_9) \
1000 SET_ATTRIBUTE(N_10, T_10, AN_10) \
1001 SET_ATTRIBUTE(N_11, T_11, AN_11) \
1002 SET_ATTRIBUTE(N_12, T_12, AN_12) \
1003 SET_ATTRIBUTE(N_13, T_13, AN_13) \
1004 SET_ATTRIBUTE(N_14, T_14, AN_14) \
1005 SET_ATTRIBUTE(N_15, T_15, AN_15) \
1006 SET_ATTRIBUTE(N_16, T_16, AN_16) \
1007 SET_ATTRIBUTE(N_17, T_17, AN_17) \
1008 SET_ATTRIBUTE(N_18, T_18, AN_18) \
1009 SET_ATTRIBUTE(N_19, T_19, AN_19) \
1010 SET_ATTRIBUTE(N_20, T_20, AN_20) \
1011 SET_ATTRIBUTE(N_21, T_21, AN_21) \
1012 SET_ATTRIBUTE(N_22, T_22, AN_22) \
1013 SET_ATTRIBUTE(N_23, T_23, AN_23) \
1014 SET_ATTRIBUTE(N_24, T_24, AN_24) \
1019 //--------------------------------------------------------------------------------------
1020 #define INTERFACE_27(KIND, \
1021 N_0, AN_0, T_0, C_0, \
1022 N_1, AN_1, T_1, C_1, \
1023 N_2, AN_2, T_2, C_2, \
1024 N_3, AN_3, T_3, C_3, \
1025 N_4, AN_4, T_4, C_4, \
1026 N_5, AN_5, T_5, C_5, \
1027 N_6, AN_6, T_6, C_6, \
1028 N_7, AN_7, T_7, C_7, \
1029 N_8, AN_8, T_8, C_8, \
1030 N_9, AN_9, T_9, C_9, \
1031 N_10, AN_10, T_10, C_10, \
1032 N_11, AN_11, T_11, C_11, \
1033 N_12, AN_12, T_12, C_12, \
1034 N_13, AN_13, T_13, C_13, \
1035 N_14, AN_14, T_14, C_14, \
1036 N_15, AN_15, T_15, C_15, \
1037 N_16, AN_16, T_16, C_16, \
1038 N_17, AN_17, T_17, C_17, \
1039 N_18, AN_18, T_18, C_18, \
1040 N_19, AN_19, T_19, C_19, \
1041 N_20, AN_20, T_20, C_20, \
1042 N_21, AN_21, T_21, C_21, \
1043 N_22, AN_22, T_22, C_22, \
1044 N_23, AN_23, T_23, C_23, \
1045 N_24, AN_24, T_24, C_24, \
1046 N_25, AN_25, T_25, C_25, \
1047 N_26, AN_26, T_26, C_26) \
1049 INTERFACE_COMMON(KIND) \
1050 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
1051 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
1052 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
1053 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
1054 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
1055 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
1056 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
1057 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
1058 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
1059 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
1060 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
1061 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
1062 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
1063 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
1064 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
1065 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
1066 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
1067 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
1068 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
1069 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
1070 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
1071 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
1072 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
1073 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
1074 DEFINE_ATTRIBUTE(N_24, T_24, C_24) \
1075 DEFINE_ATTRIBUTE(N_25, T_25, C_25) \
1076 DEFINE_ATTRIBUTE(N_26, T_26, C_26) \
1079 SET_ATTRIBUTE(N_0, T_0, AN_0) \
1080 SET_ATTRIBUTE(N_1, T_1, AN_1) \
1081 SET_ATTRIBUTE(N_2, T_2, AN_2) \
1082 SET_ATTRIBUTE(N_3, T_3, AN_3) \
1083 SET_ATTRIBUTE(N_4, T_4, AN_4) \
1084 SET_ATTRIBUTE(N_5, T_5, AN_5) \
1085 SET_ATTRIBUTE(N_6, T_6, AN_6) \
1086 SET_ATTRIBUTE(N_7, T_7, AN_7) \
1087 SET_ATTRIBUTE(N_8, T_8, AN_8) \
1088 SET_ATTRIBUTE(N_9, T_9, AN_9) \
1089 SET_ATTRIBUTE(N_10, T_10, AN_10) \
1090 SET_ATTRIBUTE(N_11, T_11, AN_11) \
1091 SET_ATTRIBUTE(N_12, T_12, AN_12) \
1092 SET_ATTRIBUTE(N_13, T_13, AN_13) \
1093 SET_ATTRIBUTE(N_14, T_14, AN_14) \
1094 SET_ATTRIBUTE(N_15, T_15, AN_15) \
1095 SET_ATTRIBUTE(N_16, T_16, AN_16) \
1096 SET_ATTRIBUTE(N_17, T_17, AN_17) \
1097 SET_ATTRIBUTE(N_18, T_18, AN_18) \
1098 SET_ATTRIBUTE(N_19, T_19, AN_19) \
1099 SET_ATTRIBUTE(N_20, T_20, AN_20) \
1100 SET_ATTRIBUTE(N_21, T_21, AN_21) \
1101 SET_ATTRIBUTE(N_22, T_22, AN_22) \
1102 SET_ATTRIBUTE(N_23, T_23, AN_23) \
1103 SET_ATTRIBUTE(N_24, T_24, AN_24) \
1104 SET_ATTRIBUTE(N_25, T_25, AN_25) \
1105 SET_ATTRIBUTE(N_26, T_26, AN_26) \
1109 //--------------------------------------------------------------------------------------
1110 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */