1 // Copyright (C) 2014-2017 CEA/DEN, EDF R&D
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
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
21 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
22 #define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
24 //--------------------------------------------------------------------------------------
25 #include <GeomDataAPI_Dir.h>
26 #include <GeomDataAPI_Point.h>
27 #include <GeomDataAPI_Point2D.h>
28 //--------------------------------------------------------------------------------------
29 #include <ModelAPI_AttributeBoolean.h>
30 #include <ModelAPI_AttributeDocRef.h>
31 #include <ModelAPI_AttributeDouble.h>
32 #include <ModelAPI_AttributeIntArray.h>
33 #include <ModelAPI_AttributeInteger.h>
34 #include <ModelAPI_AttributeRefAttr.h>
35 #include <ModelAPI_AttributeRefAttrList.h>
36 #include <ModelAPI_AttributeReference.h>
37 #include <ModelAPI_AttributeRefList.h>
38 #include <ModelAPI_AttributeSelection.h>
39 #include <ModelAPI_AttributeSelectionList.h>
40 #include <ModelAPI_AttributeString.h>
41 #include <ModelAPI_Feature.h>
43 //--------------------------------------------------------------------------------------
44 #define VAR_NAME(NAME) my##NAME
46 //--------------------------------------------------------------------------------------
47 #define TO_STRING_(NAME) #NAME
48 #define TO_STRING(NAME) TO_STRING_(NAME)
50 //--------------------------------------------------------------------------------------
51 // Used in INTERFACE_N for create variable and getter
52 #define DEFINE_ATTRIBUTE(NAME, TYPE, COMMENT) \
54 std::shared_ptr<TYPE> NAME() const { return VAR_NAME(NAME); } \
56 std::shared_ptr<TYPE> VAR_NAME(NAME); \
59 //--------------------------------------------------------------------------------------
60 // Used in INTERFACE_N inside START_INIT/END_INIT for
61 // set variable with attribute received from feature
62 #define SET_ATTRIBUTE(NAME, TYPE, ATT_NAME) \
63 VAR_NAME(NAME) = std::dynamic_pointer_cast<TYPE>(feature()->attribute(ATT_NAME)); \
64 if (!VAR_NAME(NAME)) \
66 myAttrGetter[ATT_NAME] = TO_STRING(NAME);
68 //--------------------------------------------------------------------------------------
69 #define INTERFACE_COMMON(KIND) \
70 static std::string ID() { return KIND; }\
71 virtual std::string getID() { return ID(); }
73 //--------------------------------------------------------------------------------------
74 #define START_INIT() \
77 throwException(ID() + " exception: The feature is NULL."); \
80 if (getKind() != getID()) { \
81 throwException(ID() + " exception: Wrong feature kind."); \
85 //--------------------------------------------------------------------------------------
90 //--------------------------------------------------------------------------------------
91 #define INTERFACE_0(KIND) \
93 INTERFACE_COMMON(KIND) \
99 //--------------------------------------------------------------------------------------
100 #define INTERFACE_1(KIND, \
101 N_0, AN_0, T_0, C_0) \
103 INTERFACE_COMMON(KIND) \
104 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
107 SET_ATTRIBUTE(N_0, T_0, AN_0) \
111 //--------------------------------------------------------------------------------------
112 #define INTERFACE_2(KIND, \
113 N_0, AN_0, T_0, C_0, \
114 N_1, AN_1, T_1, C_1) \
116 INTERFACE_COMMON(KIND) \
117 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
118 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
121 SET_ATTRIBUTE(N_0, T_0, AN_0) \
122 SET_ATTRIBUTE(N_1, T_1, AN_1) \
126 //--------------------------------------------------------------------------------------
127 #define INTERFACE_3(KIND, \
128 N_0, AN_0, T_0, C_0, \
129 N_1, AN_1, T_1, C_1, \
130 N_2, AN_2, T_2, C_2) \
132 INTERFACE_COMMON(KIND) \
133 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
134 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
135 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
138 SET_ATTRIBUTE(N_0, T_0, AN_0) \
139 SET_ATTRIBUTE(N_1, T_1, AN_1) \
140 SET_ATTRIBUTE(N_2, T_2, AN_2) \
144 //--------------------------------------------------------------------------------------
145 #define INTERFACE_4(KIND, \
146 N_0, AN_0, T_0, C_0, \
147 N_1, AN_1, T_1, C_1, \
148 N_2, AN_2, T_2, C_2, \
149 N_3, AN_3, T_3, C_3) \
151 INTERFACE_COMMON(KIND) \
152 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
153 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
154 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
155 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
158 SET_ATTRIBUTE(N_0, T_0, AN_0) \
159 SET_ATTRIBUTE(N_1, T_1, AN_1) \
160 SET_ATTRIBUTE(N_2, T_2, AN_2) \
161 SET_ATTRIBUTE(N_3, T_3, AN_3) \
165 //--------------------------------------------------------------------------------------
166 #define INTERFACE_5(KIND, \
167 N_0, AN_0, T_0, C_0, \
168 N_1, AN_1, T_1, C_1, \
169 N_2, AN_2, T_2, C_2, \
170 N_3, AN_3, T_3, C_3, \
171 N_4, AN_4, T_4, C_4) \
173 INTERFACE_COMMON(KIND) \
174 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
175 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
176 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
177 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
178 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
181 SET_ATTRIBUTE(N_0, T_0, AN_0) \
182 SET_ATTRIBUTE(N_1, T_1, AN_1) \
183 SET_ATTRIBUTE(N_2, T_2, AN_2) \
184 SET_ATTRIBUTE(N_3, T_3, AN_3) \
185 SET_ATTRIBUTE(N_4, T_4, AN_4) \
189 //--------------------------------------------------------------------------------------
190 #define INTERFACE_6(KIND, \
191 N_0, AN_0, T_0, C_0, \
192 N_1, AN_1, T_1, C_1, \
193 N_2, AN_2, T_2, C_2, \
194 N_3, AN_3, T_3, C_3, \
195 N_4, AN_4, T_4, C_4, \
196 N_5, AN_5, T_5, C_5) \
198 INTERFACE_COMMON(KIND) \
199 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
200 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
201 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
202 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
203 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
204 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
207 SET_ATTRIBUTE(N_0, T_0, AN_0) \
208 SET_ATTRIBUTE(N_1, T_1, AN_1) \
209 SET_ATTRIBUTE(N_2, T_2, AN_2) \
210 SET_ATTRIBUTE(N_3, T_3, AN_3) \
211 SET_ATTRIBUTE(N_4, T_4, AN_4) \
212 SET_ATTRIBUTE(N_5, T_5, AN_5) \
216 //--------------------------------------------------------------------------------------
217 #define INTERFACE_7(KIND, \
218 N_0, AN_0, T_0, C_0, \
219 N_1, AN_1, T_1, C_1, \
220 N_2, AN_2, T_2, C_2, \
221 N_3, AN_3, T_3, C_3, \
222 N_4, AN_4, T_4, C_4, \
223 N_5, AN_5, T_5, C_5, \
224 N_6, AN_6, T_6, C_6) \
226 INTERFACE_COMMON(KIND) \
227 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
228 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
229 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
230 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
231 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
232 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
233 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
236 SET_ATTRIBUTE(N_0, T_0, AN_0) \
237 SET_ATTRIBUTE(N_1, T_1, AN_1) \
238 SET_ATTRIBUTE(N_2, T_2, AN_2) \
239 SET_ATTRIBUTE(N_3, T_3, AN_3) \
240 SET_ATTRIBUTE(N_4, T_4, AN_4) \
241 SET_ATTRIBUTE(N_5, T_5, AN_5) \
242 SET_ATTRIBUTE(N_6, T_6, AN_6) \
246 //--------------------------------------------------------------------------------------
247 #define INTERFACE_8(KIND, \
248 N_0, AN_0, T_0, C_0, \
249 N_1, AN_1, T_1, C_1, \
250 N_2, AN_2, T_2, C_2, \
251 N_3, AN_3, T_3, C_3, \
252 N_4, AN_4, T_4, C_4, \
253 N_5, AN_5, T_5, C_5, \
254 N_6, AN_6, T_6, C_6, \
255 N_7, AN_7, T_7, C_7) \
257 INTERFACE_COMMON(KIND) \
258 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
259 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
260 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
261 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
262 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
263 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
264 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
265 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
268 SET_ATTRIBUTE(N_0, T_0, AN_0) \
269 SET_ATTRIBUTE(N_1, T_1, AN_1) \
270 SET_ATTRIBUTE(N_2, T_2, AN_2) \
271 SET_ATTRIBUTE(N_3, T_3, AN_3) \
272 SET_ATTRIBUTE(N_4, T_4, AN_4) \
273 SET_ATTRIBUTE(N_5, T_5, AN_5) \
274 SET_ATTRIBUTE(N_6, T_6, AN_6) \
275 SET_ATTRIBUTE(N_7, T_7, AN_7) \
279 //--------------------------------------------------------------------------------------
280 #define INTERFACE_9(KIND, \
281 N_0, AN_0, T_0, C_0, \
282 N_1, AN_1, T_1, C_1, \
283 N_2, AN_2, T_2, C_2, \
284 N_3, AN_3, T_3, C_3, \
285 N_4, AN_4, T_4, C_4, \
286 N_5, AN_5, T_5, C_5, \
287 N_6, AN_6, T_6, C_6, \
288 N_7, AN_7, T_7, C_7, \
289 N_8, AN_8, T_8, C_8) \
291 INTERFACE_COMMON(KIND) \
292 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
293 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
294 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
295 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
296 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
297 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
298 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
299 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
300 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
303 SET_ATTRIBUTE(N_0, T_0, AN_0) \
304 SET_ATTRIBUTE(N_1, T_1, AN_1) \
305 SET_ATTRIBUTE(N_2, T_2, AN_2) \
306 SET_ATTRIBUTE(N_3, T_3, AN_3) \
307 SET_ATTRIBUTE(N_4, T_4, AN_4) \
308 SET_ATTRIBUTE(N_5, T_5, AN_5) \
309 SET_ATTRIBUTE(N_6, T_6, AN_6) \
310 SET_ATTRIBUTE(N_7, T_7, AN_7) \
311 SET_ATTRIBUTE(N_8, T_8, AN_8) \
315 //--------------------------------------------------------------------------------------
316 #define INTERFACE_10(KIND, \
317 N_0, AN_0, T_0, C_0, \
318 N_1, AN_1, T_1, C_1, \
319 N_2, AN_2, T_2, C_2, \
320 N_3, AN_3, T_3, C_3, \
321 N_4, AN_4, T_4, C_4, \
322 N_5, AN_5, T_5, C_5, \
323 N_6, AN_6, T_6, C_6, \
324 N_7, AN_7, T_7, C_7, \
325 N_8, AN_8, T_8, C_8, \
326 N_9, AN_9, T_9, C_9) \
328 INTERFACE_COMMON(KIND) \
329 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
330 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
331 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
332 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
333 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
334 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
335 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
336 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
337 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
338 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
341 SET_ATTRIBUTE(N_0, T_0, AN_0) \
342 SET_ATTRIBUTE(N_1, T_1, AN_1) \
343 SET_ATTRIBUTE(N_2, T_2, AN_2) \
344 SET_ATTRIBUTE(N_3, T_3, AN_3) \
345 SET_ATTRIBUTE(N_4, T_4, AN_4) \
346 SET_ATTRIBUTE(N_5, T_5, AN_5) \
347 SET_ATTRIBUTE(N_6, T_6, AN_6) \
348 SET_ATTRIBUTE(N_7, T_7, AN_7) \
349 SET_ATTRIBUTE(N_8, T_8, AN_8) \
350 SET_ATTRIBUTE(N_9, T_9, AN_9) \
354 //--------------------------------------------------------------------------------------
355 #define INTERFACE_11(KIND, \
356 N_0, AN_0, T_0, C_0, \
357 N_1, AN_1, T_1, C_1, \
358 N_2, AN_2, T_2, C_2, \
359 N_3, AN_3, T_3, C_3, \
360 N_4, AN_4, T_4, C_4, \
361 N_5, AN_5, T_5, C_5, \
362 N_6, AN_6, T_6, C_6, \
363 N_7, AN_7, T_7, C_7, \
364 N_8, AN_8, T_8, C_8, \
365 N_9, AN_9, T_9, C_9, \
366 N_10, AN_10, T_10, C_10) \
368 INTERFACE_COMMON(KIND) \
369 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
370 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
371 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
372 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
373 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
374 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
375 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
376 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
377 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
378 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
379 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
382 SET_ATTRIBUTE(N_0, T_0, AN_0) \
383 SET_ATTRIBUTE(N_1, T_1, AN_1) \
384 SET_ATTRIBUTE(N_2, T_2, AN_2) \
385 SET_ATTRIBUTE(N_3, T_3, AN_3) \
386 SET_ATTRIBUTE(N_4, T_4, AN_4) \
387 SET_ATTRIBUTE(N_5, T_5, AN_5) \
388 SET_ATTRIBUTE(N_6, T_6, AN_6) \
389 SET_ATTRIBUTE(N_7, T_7, AN_7) \
390 SET_ATTRIBUTE(N_8, T_8, AN_8) \
391 SET_ATTRIBUTE(N_9, T_9, AN_9) \
392 SET_ATTRIBUTE(N_10, T_10, AN_10) \
396 //--------------------------------------------------------------------------------------
397 #define INTERFACE_12(KIND, \
398 N_0, AN_0, T_0, C_0, \
399 N_1, AN_1, T_1, C_1, \
400 N_2, AN_2, T_2, C_2, \
401 N_3, AN_3, T_3, C_3, \
402 N_4, AN_4, T_4, C_4, \
403 N_5, AN_5, T_5, C_5, \
404 N_6, AN_6, T_6, C_6, \
405 N_7, AN_7, T_7, C_7, \
406 N_8, AN_8, T_8, C_8, \
407 N_9, AN_9, T_9, C_9, \
408 N_10, AN_10, T_10, C_10, \
409 N_11, AN_11, T_11, C_11) \
411 INTERFACE_COMMON(KIND) \
412 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
413 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
414 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
415 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
416 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
417 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
418 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
419 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
420 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
421 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
422 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
423 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
426 SET_ATTRIBUTE(N_0, T_0, AN_0) \
427 SET_ATTRIBUTE(N_1, T_1, AN_1) \
428 SET_ATTRIBUTE(N_2, T_2, AN_2) \
429 SET_ATTRIBUTE(N_3, T_3, AN_3) \
430 SET_ATTRIBUTE(N_4, T_4, AN_4) \
431 SET_ATTRIBUTE(N_5, T_5, AN_5) \
432 SET_ATTRIBUTE(N_6, T_6, AN_6) \
433 SET_ATTRIBUTE(N_7, T_7, AN_7) \
434 SET_ATTRIBUTE(N_8, T_8, AN_8) \
435 SET_ATTRIBUTE(N_9, T_9, AN_9) \
436 SET_ATTRIBUTE(N_10, T_10, AN_10) \
437 SET_ATTRIBUTE(N_11, T_11, AN_11) \
441 //--------------------------------------------------------------------------------------
442 #define INTERFACE_14(KIND, \
443 N_0, AN_0, T_0, C_0, \
444 N_1, AN_1, T_1, C_1, \
445 N_2, AN_2, T_2, C_2, \
446 N_3, AN_3, T_3, C_3, \
447 N_4, AN_4, T_4, C_4, \
448 N_5, AN_5, T_5, C_5, \
449 N_6, AN_6, T_6, C_6, \
450 N_7, AN_7, T_7, C_7, \
451 N_8, AN_8, T_8, C_8, \
452 N_9, AN_9, T_9, C_9, \
453 N_10, AN_10, T_10, C_10, \
454 N_11, AN_11, T_11, C_11, \
455 N_12, AN_12, T_12, C_12, \
456 N_13, AN_13, T_13, C_13) \
458 INTERFACE_COMMON(KIND) \
459 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
460 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
461 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
462 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
463 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
464 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
465 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
466 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
467 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
468 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
469 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
470 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
471 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
472 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
475 SET_ATTRIBUTE(N_0, T_0, AN_0) \
476 SET_ATTRIBUTE(N_1, T_1, AN_1) \
477 SET_ATTRIBUTE(N_2, T_2, AN_2) \
478 SET_ATTRIBUTE(N_3, T_3, AN_3) \
479 SET_ATTRIBUTE(N_4, T_4, AN_4) \
480 SET_ATTRIBUTE(N_5, T_5, AN_5) \
481 SET_ATTRIBUTE(N_6, T_6, AN_6) \
482 SET_ATTRIBUTE(N_7, T_7, AN_7) \
483 SET_ATTRIBUTE(N_8, T_8, AN_8) \
484 SET_ATTRIBUTE(N_9, T_9, AN_9) \
485 SET_ATTRIBUTE(N_10, T_10, AN_10) \
486 SET_ATTRIBUTE(N_11, T_11, AN_11) \
487 SET_ATTRIBUTE(N_12, T_12, AN_12) \
488 SET_ATTRIBUTE(N_13, T_13, AN_13) \
492 //--------------------------------------------------------------------------------------
493 #define INTERFACE_16(KIND, \
494 N_0, AN_0, T_0, C_0, \
495 N_1, AN_1, T_1, C_1, \
496 N_2, AN_2, T_2, C_2, \
497 N_3, AN_3, T_3, C_3, \
498 N_4, AN_4, T_4, C_4, \
499 N_5, AN_5, T_5, C_5, \
500 N_6, AN_6, T_6, C_6, \
501 N_7, AN_7, T_7, C_7, \
502 N_8, AN_8, T_8, C_8, \
503 N_9, AN_9, T_9, C_9, \
504 N_10, AN_10, T_10, C_10, \
505 N_11, AN_11, T_11, C_11, \
506 N_12, AN_12, T_12, C_12, \
507 N_13, AN_13, T_13, C_13, \
508 N_14, AN_14, T_14, C_14, \
509 N_15, AN_15, T_15, C_15) \
511 INTERFACE_COMMON(KIND) \
512 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
513 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
514 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
515 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
516 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
517 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
518 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
519 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
520 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
521 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
522 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
523 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
524 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
525 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
526 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
527 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
530 SET_ATTRIBUTE(N_0, T_0, AN_0) \
531 SET_ATTRIBUTE(N_1, T_1, AN_1) \
532 SET_ATTRIBUTE(N_2, T_2, AN_2) \
533 SET_ATTRIBUTE(N_3, T_3, AN_3) \
534 SET_ATTRIBUTE(N_4, T_4, AN_4) \
535 SET_ATTRIBUTE(N_5, T_5, AN_5) \
536 SET_ATTRIBUTE(N_6, T_6, AN_6) \
537 SET_ATTRIBUTE(N_7, T_7, AN_7) \
538 SET_ATTRIBUTE(N_8, T_8, AN_8) \
539 SET_ATTRIBUTE(N_9, T_9, AN_9) \
540 SET_ATTRIBUTE(N_10, T_10, AN_10) \
541 SET_ATTRIBUTE(N_11, T_11, AN_11) \
542 SET_ATTRIBUTE(N_12, T_12, AN_12) \
543 SET_ATTRIBUTE(N_13, T_13, AN_13) \
544 SET_ATTRIBUTE(N_14, T_14, AN_14) \
545 SET_ATTRIBUTE(N_15, T_15, AN_15) \
549 //--------------------------------------------------------------------------------------
550 #define INTERFACE_18(KIND, \
551 N_0, AN_0, T_0, C_0, \
552 N_1, AN_1, T_1, C_1, \
553 N_2, AN_2, T_2, C_2, \
554 N_3, AN_3, T_3, C_3, \
555 N_4, AN_4, T_4, C_4, \
556 N_5, AN_5, T_5, C_5, \
557 N_6, AN_6, T_6, C_6, \
558 N_7, AN_7, T_7, C_7, \
559 N_8, AN_8, T_8, C_8, \
560 N_9, AN_9, T_9, C_9, \
561 N_10, AN_10, T_10, C_10, \
562 N_11, AN_11, T_11, C_11, \
563 N_12, AN_12, T_12, C_12, \
564 N_13, AN_13, T_13, C_13, \
565 N_14, AN_14, T_14, C_14, \
566 N_15, AN_15, T_15, C_15, \
567 N_16, AN_16, T_16, C_16, \
568 N_17, AN_17, T_17, C_17) \
570 INTERFACE_COMMON(KIND) \
571 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
572 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
573 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
574 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
575 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
576 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
577 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
578 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
579 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
580 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
581 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
582 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
583 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
584 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
585 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
586 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
587 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
588 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
591 SET_ATTRIBUTE(N_0, T_0, AN_0) \
592 SET_ATTRIBUTE(N_1, T_1, AN_1) \
593 SET_ATTRIBUTE(N_2, T_2, AN_2) \
594 SET_ATTRIBUTE(N_3, T_3, AN_3) \
595 SET_ATTRIBUTE(N_4, T_4, AN_4) \
596 SET_ATTRIBUTE(N_5, T_5, AN_5) \
597 SET_ATTRIBUTE(N_6, T_6, AN_6) \
598 SET_ATTRIBUTE(N_7, T_7, AN_7) \
599 SET_ATTRIBUTE(N_8, T_8, AN_8) \
600 SET_ATTRIBUTE(N_9, T_9, AN_9) \
601 SET_ATTRIBUTE(N_10, T_10, AN_10) \
602 SET_ATTRIBUTE(N_11, T_11, AN_11) \
603 SET_ATTRIBUTE(N_12, T_12, AN_12) \
604 SET_ATTRIBUTE(N_13, T_13, AN_13) \
605 SET_ATTRIBUTE(N_14, T_14, AN_14) \
606 SET_ATTRIBUTE(N_15, T_15, AN_15) \
607 SET_ATTRIBUTE(N_16, T_16, AN_16) \
608 SET_ATTRIBUTE(N_17, T_17, AN_17) \
612 //--------------------------------------------------------------------------------------
613 #define INTERFACE_20(KIND, \
614 N_0, AN_0, T_0, C_0, \
615 N_1, AN_1, T_1, C_1, \
616 N_2, AN_2, T_2, C_2, \
617 N_3, AN_3, T_3, C_3, \
618 N_4, AN_4, T_4, C_4, \
619 N_5, AN_5, T_5, C_5, \
620 N_6, AN_6, T_6, C_6, \
621 N_7, AN_7, T_7, C_7, \
622 N_8, AN_8, T_8, C_8, \
623 N_9, AN_9, T_9, C_9, \
624 N_10, AN_10, T_10, C_10, \
625 N_11, AN_11, T_11, C_11, \
626 N_12, AN_12, T_12, C_12, \
627 N_13, AN_13, T_13, C_13, \
628 N_14, AN_14, T_14, C_14, \
629 N_15, AN_15, T_15, C_15, \
630 N_16, AN_16, T_16, C_16, \
631 N_17, AN_17, T_17, C_17, \
632 N_18, AN_18, T_18, C_18, \
633 N_19, AN_19, T_19, C_19) \
635 INTERFACE_COMMON(KIND) \
636 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
637 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
638 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
639 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
640 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
641 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
642 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
643 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
644 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
645 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
646 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
647 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
648 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
649 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
650 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
651 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
652 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
653 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
654 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
655 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
658 SET_ATTRIBUTE(N_0, T_0, AN_0) \
659 SET_ATTRIBUTE(N_1, T_1, AN_1) \
660 SET_ATTRIBUTE(N_2, T_2, AN_2) \
661 SET_ATTRIBUTE(N_3, T_3, AN_3) \
662 SET_ATTRIBUTE(N_4, T_4, AN_4) \
663 SET_ATTRIBUTE(N_5, T_5, AN_5) \
664 SET_ATTRIBUTE(N_6, T_6, AN_6) \
665 SET_ATTRIBUTE(N_7, T_7, AN_7) \
666 SET_ATTRIBUTE(N_8, T_8, AN_8) \
667 SET_ATTRIBUTE(N_9, T_9, AN_9) \
668 SET_ATTRIBUTE(N_10, T_10, AN_10) \
669 SET_ATTRIBUTE(N_11, T_11, AN_11) \
670 SET_ATTRIBUTE(N_12, T_12, AN_12) \
671 SET_ATTRIBUTE(N_13, T_13, AN_13) \
672 SET_ATTRIBUTE(N_14, T_14, AN_14) \
673 SET_ATTRIBUTE(N_15, T_15, AN_15) \
674 SET_ATTRIBUTE(N_16, T_16, AN_16) \
675 SET_ATTRIBUTE(N_17, T_17, AN_17) \
676 SET_ATTRIBUTE(N_18, T_18, AN_18) \
677 SET_ATTRIBUTE(N_19, T_19, AN_19) \
681 //--------------------------------------------------------------------------------------
682 #define INTERFACE_21(KIND, \
683 N_0, AN_0, T_0, C_0, \
684 N_1, AN_1, T_1, C_1, \
685 N_2, AN_2, T_2, C_2, \
686 N_3, AN_3, T_3, C_3, \
687 N_4, AN_4, T_4, C_4, \
688 N_5, AN_5, T_5, C_5, \
689 N_6, AN_6, T_6, C_6, \
690 N_7, AN_7, T_7, C_7, \
691 N_8, AN_8, T_8, C_8, \
692 N_9, AN_9, T_9, C_9, \
693 N_10, AN_10, T_10, C_10, \
694 N_11, AN_11, T_11, C_11, \
695 N_12, AN_12, T_12, C_12, \
696 N_13, AN_13, T_13, C_13, \
697 N_14, AN_14, T_14, C_14, \
698 N_15, AN_15, T_15, C_15, \
699 N_16, AN_16, T_16, C_16, \
700 N_17, AN_17, T_17, C_17, \
701 N_18, AN_18, T_18, C_18, \
702 N_19, AN_19, T_19, C_19, \
703 N_20, AN_20, T_20, C_20) \
705 INTERFACE_COMMON(KIND) \
706 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
707 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
708 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
709 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
710 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
711 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
712 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
713 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
714 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
715 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
716 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
717 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
718 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
719 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
720 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
721 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
722 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
723 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
724 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
725 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
726 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
729 SET_ATTRIBUTE(N_0, T_0, AN_0) \
730 SET_ATTRIBUTE(N_1, T_1, AN_1) \
731 SET_ATTRIBUTE(N_2, T_2, AN_2) \
732 SET_ATTRIBUTE(N_3, T_3, AN_3) \
733 SET_ATTRIBUTE(N_4, T_4, AN_4) \
734 SET_ATTRIBUTE(N_5, T_5, AN_5) \
735 SET_ATTRIBUTE(N_6, T_6, AN_6) \
736 SET_ATTRIBUTE(N_7, T_7, AN_7) \
737 SET_ATTRIBUTE(N_8, T_8, AN_8) \
738 SET_ATTRIBUTE(N_9, T_9, AN_9) \
739 SET_ATTRIBUTE(N_10, T_10, AN_10) \
740 SET_ATTRIBUTE(N_11, T_11, AN_11) \
741 SET_ATTRIBUTE(N_12, T_12, AN_12) \
742 SET_ATTRIBUTE(N_13, T_13, AN_13) \
743 SET_ATTRIBUTE(N_14, T_14, AN_14) \
744 SET_ATTRIBUTE(N_15, T_15, AN_15) \
745 SET_ATTRIBUTE(N_16, T_16, AN_16) \
746 SET_ATTRIBUTE(N_17, T_17, AN_17) \
747 SET_ATTRIBUTE(N_18, T_18, AN_18) \
748 SET_ATTRIBUTE(N_19, T_19, AN_19) \
749 SET_ATTRIBUTE(N_20, T_20, AN_20) \
753 //--------------------------------------------------------------------------------------
754 #define INTERFACE_24(KIND, \
755 N_0, AN_0, T_0, C_0, \
756 N_1, AN_1, T_1, C_1, \
757 N_2, AN_2, T_2, C_2, \
758 N_3, AN_3, T_3, C_3, \
759 N_4, AN_4, T_4, C_4, \
760 N_5, AN_5, T_5, C_5, \
761 N_6, AN_6, T_6, C_6, \
762 N_7, AN_7, T_7, C_7, \
763 N_8, AN_8, T_8, C_8, \
764 N_9, AN_9, T_9, C_9, \
765 N_10, AN_10, T_10, C_10, \
766 N_11, AN_11, T_11, C_11, \
767 N_12, AN_12, T_12, C_12, \
768 N_13, AN_13, T_13, C_13, \
769 N_14, AN_14, T_14, C_14, \
770 N_15, AN_15, T_15, C_15, \
771 N_16, AN_16, T_16, C_16, \
772 N_17, AN_17, T_17, C_17, \
773 N_18, AN_18, T_18, C_18, \
774 N_19, AN_19, T_19, C_19, \
775 N_20, AN_20, T_20, C_20, \
776 N_21, AN_21, T_21, C_21, \
777 N_22, AN_22, T_22, C_22, \
778 N_23, AN_23, T_23, C_23) \
780 INTERFACE_COMMON(KIND) \
781 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
782 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
783 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
784 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
785 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
786 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
787 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
788 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
789 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
790 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
791 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
792 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
793 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
794 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
795 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
796 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
797 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
798 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
799 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
800 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
801 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
802 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
803 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
804 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
807 SET_ATTRIBUTE(N_0, T_0, AN_0) \
808 SET_ATTRIBUTE(N_1, T_1, AN_1) \
809 SET_ATTRIBUTE(N_2, T_2, AN_2) \
810 SET_ATTRIBUTE(N_3, T_3, AN_3) \
811 SET_ATTRIBUTE(N_4, T_4, AN_4) \
812 SET_ATTRIBUTE(N_5, T_5, AN_5) \
813 SET_ATTRIBUTE(N_6, T_6, AN_6) \
814 SET_ATTRIBUTE(N_7, T_7, AN_7) \
815 SET_ATTRIBUTE(N_8, T_8, AN_8) \
816 SET_ATTRIBUTE(N_9, T_9, AN_9) \
817 SET_ATTRIBUTE(N_10, T_10, AN_10) \
818 SET_ATTRIBUTE(N_11, T_11, AN_11) \
819 SET_ATTRIBUTE(N_12, T_12, AN_12) \
820 SET_ATTRIBUTE(N_13, T_13, AN_13) \
821 SET_ATTRIBUTE(N_14, T_14, AN_14) \
822 SET_ATTRIBUTE(N_15, T_15, AN_15) \
823 SET_ATTRIBUTE(N_16, T_16, AN_16) \
824 SET_ATTRIBUTE(N_17, T_17, AN_17) \
825 SET_ATTRIBUTE(N_18, T_18, AN_18) \
826 SET_ATTRIBUTE(N_19, T_19, AN_19) \
827 SET_ATTRIBUTE(N_20, T_20, AN_20) \
828 SET_ATTRIBUTE(N_21, T_21, AN_21) \
829 SET_ATTRIBUTE(N_22, T_22, AN_22) \
830 SET_ATTRIBUTE(N_23, T_23, AN_23) \
834 //--------------------------------------------------------------------------------------
835 #define INTERFACE_25(KIND, \
836 N_0, AN_0, T_0, C_0, \
837 N_1, AN_1, T_1, C_1, \
838 N_2, AN_2, T_2, C_2, \
839 N_3, AN_3, T_3, C_3, \
840 N_4, AN_4, T_4, C_4, \
841 N_5, AN_5, T_5, C_5, \
842 N_6, AN_6, T_6, C_6, \
843 N_7, AN_7, T_7, C_7, \
844 N_8, AN_8, T_8, C_8, \
845 N_9, AN_9, T_9, C_9, \
846 N_10, AN_10, T_10, C_10, \
847 N_11, AN_11, T_11, C_11, \
848 N_12, AN_12, T_12, C_12, \
849 N_13, AN_13, T_13, C_13, \
850 N_14, AN_14, T_14, C_14, \
851 N_15, AN_15, T_15, C_15, \
852 N_16, AN_16, T_16, C_16, \
853 N_17, AN_17, T_17, C_17, \
854 N_18, AN_18, T_18, C_18, \
855 N_19, AN_19, T_19, C_19, \
856 N_20, AN_20, T_20, C_20, \
857 N_21, AN_21, T_21, C_21, \
858 N_22, AN_22, T_22, C_22, \
859 N_23, AN_23, T_23, C_23, \
860 N_24, AN_24, T_24, C_24) \
862 INTERFACE_COMMON(KIND) \
863 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
864 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
865 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
866 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
867 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
868 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
869 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
870 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
871 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
872 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
873 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
874 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
875 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
876 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
877 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
878 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
879 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
880 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
881 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
882 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
883 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
884 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
885 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
886 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
887 DEFINE_ATTRIBUTE(N_24, T_24, C_24) \
890 SET_ATTRIBUTE(N_0, T_0, AN_0) \
891 SET_ATTRIBUTE(N_1, T_1, AN_1) \
892 SET_ATTRIBUTE(N_2, T_2, AN_2) \
893 SET_ATTRIBUTE(N_3, T_3, AN_3) \
894 SET_ATTRIBUTE(N_4, T_4, AN_4) \
895 SET_ATTRIBUTE(N_5, T_5, AN_5) \
896 SET_ATTRIBUTE(N_6, T_6, AN_6) \
897 SET_ATTRIBUTE(N_7, T_7, AN_7) \
898 SET_ATTRIBUTE(N_8, T_8, AN_8) \
899 SET_ATTRIBUTE(N_9, T_9, AN_9) \
900 SET_ATTRIBUTE(N_10, T_10, AN_10) \
901 SET_ATTRIBUTE(N_11, T_11, AN_11) \
902 SET_ATTRIBUTE(N_12, T_12, AN_12) \
903 SET_ATTRIBUTE(N_13, T_13, AN_13) \
904 SET_ATTRIBUTE(N_14, T_14, AN_14) \
905 SET_ATTRIBUTE(N_15, T_15, AN_15) \
906 SET_ATTRIBUTE(N_16, T_16, AN_16) \
907 SET_ATTRIBUTE(N_17, T_17, AN_17) \
908 SET_ATTRIBUTE(N_18, T_18, AN_18) \
909 SET_ATTRIBUTE(N_19, T_19, AN_19) \
910 SET_ATTRIBUTE(N_20, T_20, AN_20) \
911 SET_ATTRIBUTE(N_21, T_21, AN_21) \
912 SET_ATTRIBUTE(N_22, T_22, AN_22) \
913 SET_ATTRIBUTE(N_23, T_23, AN_23) \
914 SET_ATTRIBUTE(N_24, T_24, AN_24) \
919 //--------------------------------------------------------------------------------------
920 #define INTERFACE_27(KIND, \
921 N_0, AN_0, T_0, C_0, \
922 N_1, AN_1, T_1, C_1, \
923 N_2, AN_2, T_2, C_2, \
924 N_3, AN_3, T_3, C_3, \
925 N_4, AN_4, T_4, C_4, \
926 N_5, AN_5, T_5, C_5, \
927 N_6, AN_6, T_6, C_6, \
928 N_7, AN_7, T_7, C_7, \
929 N_8, AN_8, T_8, C_8, \
930 N_9, AN_9, T_9, C_9, \
931 N_10, AN_10, T_10, C_10, \
932 N_11, AN_11, T_11, C_11, \
933 N_12, AN_12, T_12, C_12, \
934 N_13, AN_13, T_13, C_13, \
935 N_14, AN_14, T_14, C_14, \
936 N_15, AN_15, T_15, C_15, \
937 N_16, AN_16, T_16, C_16, \
938 N_17, AN_17, T_17, C_17, \
939 N_18, AN_18, T_18, C_18, \
940 N_19, AN_19, T_19, C_19, \
941 N_20, AN_20, T_20, C_20, \
942 N_21, AN_21, T_21, C_21, \
943 N_22, AN_22, T_22, C_22, \
944 N_23, AN_23, T_23, C_23, \
945 N_24, AN_24, T_24, C_24, \
946 N_25, AN_25, T_25, C_25, \
947 N_26, AN_26, T_26, C_26) \
949 INTERFACE_COMMON(KIND) \
950 DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
951 DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
952 DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
953 DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
954 DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
955 DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
956 DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
957 DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
958 DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
959 DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
960 DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
961 DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
962 DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
963 DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
964 DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
965 DEFINE_ATTRIBUTE(N_15, T_15, C_15) \
966 DEFINE_ATTRIBUTE(N_16, T_16, C_16) \
967 DEFINE_ATTRIBUTE(N_17, T_17, C_17) \
968 DEFINE_ATTRIBUTE(N_18, T_18, C_18) \
969 DEFINE_ATTRIBUTE(N_19, T_19, C_19) \
970 DEFINE_ATTRIBUTE(N_20, T_20, C_20) \
971 DEFINE_ATTRIBUTE(N_21, T_21, C_21) \
972 DEFINE_ATTRIBUTE(N_22, T_22, C_22) \
973 DEFINE_ATTRIBUTE(N_23, T_23, C_23) \
974 DEFINE_ATTRIBUTE(N_24, T_24, C_24) \
975 DEFINE_ATTRIBUTE(N_25, T_25, C_25) \
976 DEFINE_ATTRIBUTE(N_26, T_26, C_26) \
979 SET_ATTRIBUTE(N_0, T_0, AN_0) \
980 SET_ATTRIBUTE(N_1, T_1, AN_1) \
981 SET_ATTRIBUTE(N_2, T_2, AN_2) \
982 SET_ATTRIBUTE(N_3, T_3, AN_3) \
983 SET_ATTRIBUTE(N_4, T_4, AN_4) \
984 SET_ATTRIBUTE(N_5, T_5, AN_5) \
985 SET_ATTRIBUTE(N_6, T_6, AN_6) \
986 SET_ATTRIBUTE(N_7, T_7, AN_7) \
987 SET_ATTRIBUTE(N_8, T_8, AN_8) \
988 SET_ATTRIBUTE(N_9, T_9, AN_9) \
989 SET_ATTRIBUTE(N_10, T_10, AN_10) \
990 SET_ATTRIBUTE(N_11, T_11, AN_11) \
991 SET_ATTRIBUTE(N_12, T_12, AN_12) \
992 SET_ATTRIBUTE(N_13, T_13, AN_13) \
993 SET_ATTRIBUTE(N_14, T_14, AN_14) \
994 SET_ATTRIBUTE(N_15, T_15, AN_15) \
995 SET_ATTRIBUTE(N_16, T_16, AN_16) \
996 SET_ATTRIBUTE(N_17, T_17, AN_17) \
997 SET_ATTRIBUTE(N_18, T_18, AN_18) \
998 SET_ATTRIBUTE(N_19, T_19, AN_19) \
999 SET_ATTRIBUTE(N_20, T_20, AN_20) \
1000 SET_ATTRIBUTE(N_21, T_21, AN_21) \
1001 SET_ATTRIBUTE(N_22, T_22, AN_22) \
1002 SET_ATTRIBUTE(N_23, T_23, AN_23) \
1003 SET_ATTRIBUTE(N_24, T_24, AN_24) \
1004 SET_ATTRIBUTE(N_25, T_25, AN_25) \
1005 SET_ATTRIBUTE(N_26, T_26, AN_26) \
1009 //--------------------------------------------------------------------------------------
1010 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */