8#if !defined(OCF_AUTOMACR_H)
12#if defined(BI_HAS_PRAGMA_ONCE)
21#if defined(BI_COMP_BORLANDC)
61#define DEFINE_AUTOCLASS(cls) \
62 TAutoSymbol cls::SymbolTable[] = {
64#define END_AUTOCLASS(cls, flags, name, doc, help) {{name},{doc}, 0, \
65 flags,0,TAutoSymbol::InitAutoDestructor(cls::TCommand_dtr::Build),help} }; \
66 TAutoClass cls::ClassInfo(cls::SymbolTable, cls::SymbolTable + \
67 (sizeof(cls::SymbolTable)/sizeof(TAutoSymbol) - 1), typeid(cls), 0);
69#define DEFINE_AUTOAGGREGATE(cls, aggregator) \
70 IUnknown& cls::Aggregator(ObjectPtr inst, TUnknown& inner) \
71 { return ((cls*)inst)->aggregator(inner); } \
74#define END_AUTOAGGREGATE(cls, flags, name, doc, help) {{name},{doc}, 0, \
75 flags,0,TAutoSymbol::InitAutoDestructor(cls::TCommand_dtr::Build),help} }; \
76 TAutoClass cls::ClassInfo(cls::SymbolTable, cls::SymbolTable + \
77 (sizeof(cls::SymbolTable)/sizeof(TAutoSymbol)-1),typeid(cls),cls::Aggregator);
85#define DEFINE_AUTOEVENTCLASS(cls) \
86 class cls {static TAutoClass ClassInfo; static TAutoSymbol SymbolTable[]; \
87 typedef TAutoEventDummy ThisClass; };\
88 TAutoSymbol cls::SymbolTable[] = {
90#define END_AUTOEVENTCLASS(cls, flags, name, doc, help) {{name},{doc}, 0, \
91 flags|tfEventSource, 0, 0,help} }; \
92 TAutoClass cls::ClassInfo(cls::SymbolTable, cls::SymbolTable + \
93 (sizeof(cls::SymbolTable)/sizeof(TAutoSymbol) - 1), typeid(cls), 0);
95#define DEFINE_AUTODISPATCH(cls) DEFINE_AUTOCLASS(cls)
96#define END_AUTODISPATCH(cls) END_AUTOCLASS(cls, 0, 0, 0)
98#define EXPOSE_METHOD(cmd, cls, name, doc, help) {{name},{doc},\
99 asMethod, -1, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
101#define EXPOSE_METHOD_ID(id, cmd, cls, name, doc, help) {{name}, {doc},\
102 asMethod, id, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
104#define EXPOSE_PROPRW(cmd, cls, name, doc, help) {{name},{doc},\
105 asGetSet, -1, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
107#define EXPOSE_PROPRW_ID(id, cmd, cls, name, doc, help) {{name},{doc},\
108 asGetSet, id, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
110#define EXPOSE_PROPRO(cmd, cls, name, doc, help) {{name},{doc},\
111 asGet, -1, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
113#define EXPOSE_PROPRO_ID(id, cmd, cls, name, doc, help) {{name},{doc},\
114 asGet, id, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
116#define EXPOSE_PROPWO(cmd, cls, name, doc, help) {{name},{doc},\
117 asSet, -1, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
119#define EXPOSE_PROPWO_ID(id, cmd, cls, name, doc, help) {{name},{doc},\
120 asSet, id, &cls::ClassInfo, ThisClass::TCommand_##cmd::Build, help},
122#define EXPOSE_APPLICATION(cls, name, doc, help) {{name},{doc},\
123 asGet, -1, &cls::ClassInfo, ThisClass::TCommand_app::Build, help},
125#define EXPOSE_QUIT(name, doc, help) {{name},{doc},\
126 asMethod, -1, &TAutoVoid::ClassInfo, AutoQuitBuild, help},
128#define REQUIRED_ARG(cls, name) {{name}, {0}, \
129 asArgument, 0, &cls::ClassInfo, 0, 0},
131#define OPTIONAL_ARG(cls, name, dflt) {{name}, {dflt}, \
132 asArgument, 0, &cls::ClassInfo, 0, 0},
134#define EXPOSE_DELEGATE(cls, name, locator) {{name}, {0}, \
135 asClass, 0, &cls::ClassInfo, TAutoSymbol::InitTypeConvert(locator), 0},
137#define EXPOSE_INHERIT(cls, name) {{name}, {0}, asClass, 0, &cls::ClassInfo, \
138 TAutoSymbol::InitTypeConvert(TTypeConvert<cls,ThisClass>::Cast), 0},
140#define EXPOSE_FACTORY(cls, name, base) {{name}, {0}, asFactory, 0, \
141 &cls::ClassInfo, TAutoSymbol::InitTypeConvert(TTypeConvert<cls,base>::Cast), 0},
143#define EXPOSE_ITERATOR(cls, doc, help) {{_T("_NewEnum")},{doc}, asIterator, \
144 -4, &cls::ClassInfo, TAutoSymbol::InitAutoIterator(ThisClass::TIterator::Build), help},
156#define DEFINE_AUTOENUM(cls, type) \
157 TAutoEnumVal<type##Enum> cls##_Table[] = {
159#define AUTOENUM(name, val) {{name}, val},
161#define END_AUTOENUM(cls, type) }; \
162 struct cls { static TAutoEnumT<type##Enum> ClassInfo; }; \
163 TAutoEnumT<type##Enum> cls::ClassInfo(cls##_Table, \
164 sizeof(cls##_Table)/sizeof(TAutoEnumVal<type##Enum>),type::ClassInfo.GetType());
210#define AUTOUNDO(code) TAutoCommand* Undo(){code}
211#define AUTORECORD(code) int Record(TAutoStack& args){code};
212#define AUTOINVOKE(code) TAutoCommand& Invoke(){code return *this;}
213#define AUTOVALIDATE(condition) bool Validate() { return condition; }
214#define AUTONOHOOK TAutoCommand& Invoke() {Execute();}
215#define AUTOREPORT(errcode) long Report() {return errcode;}
222#define DECLARE_AUTOCLASS(cls) \
224 static TAutoClass ClassInfo; \
226 static TAutoSymbol SymbolTable[]; \
227 class TThisCommand : public TAutoCommand { \
229 TThisCommand(cls* obj, int attr):TAutoCommand(attr),This(obj){} \
232 typedef cls ThisClass; \
233 class TCommand_app : public TAutoCommand { \
235 TCommand_app(int attr, TServedObject* app) \
236 : TAutoCommand(attr), Val(app) {} \
237 void Return(TAutoVal& v) {v=(IDispatch*)Val;} \
238 TServedObject* Val; \
239 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
240 { return new TCommand_app(attr, args.Owner->GetAppObject()); } \
242 class TCommand_dtr : public TThisCommand { \
244 TCommand_dtr(ThisClass* obj, int attr) \
245 : TThisCommand(obj, attr) {} \
246 void Execute(){if (Attr == TObjectDescriptor::PostQuit) \
247 ::PostQuitMessage(0);\
249 static TAutoCommand* Build(ObjectPtr obj,int attr) \
250 { return new TCommand_dtr((ThisClass*)obj, attr); }\
251 }; friend class TCommand_dtr;
253#define DECLARE_AUTODISPATCH(cls) \
255 static TAutoClass ClassInfo; \
257 static TAutoSymbol SymbolTable[]; \
258 class TThisCommand : public TAutoCommand { \
260 TThisCommand(cls* obj, int attr):TAutoCommand(attr),This(obj){} \
262 }; typedef cls ThisClass;
268#define DECLARE_AUTOAGGREGATE(cls) \
270 static IUnknown& Aggregator(ObjectPtr inst, TUnknown& inner); \
271 DECLARE_AUTOCLASS(cls)
276#define RETARG(t) void Return(TAutoVal& v){v=Val;} t Val;
277#define RETARGO(t) void Return(TAutoVal& v){v=(TObjectDescriptor)Val;} TAutoObject<t> Val;
279#define AUTOFUNC_(name, invoke, defs, defargs, bldargs, ctrargs, setargs) \
280 class TCommand_##name : public TThisCommand { \
281 public: typedef TCommand_##name ThisCmd; \
283 TCommand_##name(ThisClass* obj, int attr ctrargs) \
284 : TThisCommand(obj, attr) setargs {} \
285 void Execute() {invoke} \
286 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
287 { return new TCommand_##name((ThisClass*)obj, attr bldargs); }\
288 }; friend class TCommand_##name;
290#define AUTOFUNC_ARG0(name, invoke, defs) \
291 class TCommand_##name : public TThisCommand { \
292 public: typedef TCommand_##name ThisCmd; \
294 TCommand_##name(ThisClass* obj, int attr) \
295 : TThisCommand(obj, attr){} \
296 void Execute() {invoke} \
297 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
298 { return new TCommand_##name((ThisClass*)obj, attr); }\
299 }; friend class TCommand_##name;
301#define AUTOFUNC_ARG0_D(name, invoke) \
302 class TCommand_##name : public TThisCommand { \
303 public: typedef TCommand_##name ThisCmd; \
304 TCommand_##name(ThisClass* obj, int attr) \
305 : TThisCommand(obj, attr){} \
306 void Execute() {invoke} \
307 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
308 { return new TCommand_##name((ThisClass*)obj, attr); }\
309 }; friend class TCommand_##name;
311#define AUTOFUNC_ARG1(name, invoke, defs, defargs) \
312 class TCommand_##name : public TThisCommand { \
313 public: typedef TCommand_##name ThisCmd; \
315 TCommand_##name(ThisClass* obj, int attr) \
316 : TThisCommand(obj, attr){} \
317 void Execute() {invoke} \
318 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
319 { return new TCommand_##name((ThisClass*)obj, attr); }\
320 }; friend class TCommand_##name;
322#define AUTOFUNC_ARG1_D(name, invoke) \
323 class TCommand_##name : public TThisCommand { \
324 public: typedef TCommand_##name ThisCmd; \
325 TCommand_##name(ThisClass* obj, int attr) \
326 : TThisCommand(obj, attr){} \
327 void Execute() {invoke} \
328 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
329 { return new TCommand_##name((ThisClass*)obj, attr); }\
330 }; friend class TCommand_##name;
332#define AUTOFUNC_ARG2(name, invoke, defs, defargs, bldargs) \
333 class TCommand_##name : public TThisCommand { \
334 public: typedef TCommand_##name ThisCmd; \
336 TCommand_##name(ThisClass* obj, int attr ) \
337 : TThisCommand(obj, attr) {} \
338 void Execute() {invoke} \
339 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
340 { return new TCommand_##name((ThisClass*)obj, attr bldargs); }\
341 }; friend class TCommand_##name;
343#define AUTOFUNC_ARG3(name, invoke, defs, defargs, bldargs, ctrargs) \
344 class TCommand_##name : public TThisCommand { \
345 public: typedef TCommand_##name ThisCmd; \
347 TCommand_##name(ThisClass* obj, int attr ctrargs) \
348 : TThisCommand(obj, attr) {} \
349 void Execute() {invoke} \
350 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
351 { return new TCommand_##name((ThisClass*)obj, attr bldargs); }\
352 }; friend class TCommand_##name;
354#define AUTOFUNC_ARG4 AUTOFUNC_
358#define AUTOPROP_(name, getcode, setcode, defs, type) \
359 class TCommand_##name : public TThisCommand { \
360 public: typedef TCommand_##name ThisCmd; \
362 TCommand_##name(ThisClass* obj, int attr) : TThisCommand(obj, attr) {} \
363 TCommand_##name(ThisClass* obj, int attr, type arg) \
364 : TThisCommand(obj, attr), Val(arg) {} \
365 void Execute() {if (IsPropSet()) {setcode} else {getcode}} \
366 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
367 { return (attr & asGet) ? \
368 new TCommand_##name((ThisClass*)obj, attr) : \
369 new TCommand_##name((ThisClass*)obj, attr, args[TAutoStack::SetValue]);} \
370 }; friend class TCommand_##name;
372#if !defined(BI_TYPECASTOPERATOR_BUG)
373#define AUTOPROPBUG_ AUTOPROP_
377#define AUTOPROPBUG_(name, getcode, setcode, defs, type) \
378 class TCommand_##name : public TThisCommand { \
379 public: typedef TCommand_##name ThisCmd; \
381 TCommand_##name(ThisClass* obj, int attr) : TThisCommand(obj, attr) {} \
382 TCommand_##name(ThisClass* obj, int attr, type arg) \
383 : TThisCommand(obj, attr), Val(arg) {} \
384 void Execute() {if (IsPropSet()) {setcode} else {getcode}} \
385 static TAutoCommand* Build(ObjectPtr obj,int attr,TAutoStack& args) \
386 { return (attr & asGet) ? \
387 new TCommand_##name((ThisClass*)obj, attr) : \
388 new TCommand_##name((ThisClass*)obj, attr,(type)(args[TAutoStack::SetValue]).operator type());}\
389 }; friend class TCommand_##name;
396#define AUTOBUILD_(name, invoke, defs, defargs, bldargs, ctrargs, setargs) \
397 class TCommand_##name : public TAutoCommand {\
399 defs defargs RETARG(TAutoMono<ThisClass>) \
400 TCommand_##name(int attr ctrargs) : TAutoCommand(attr) setargs {} \
401 void Execute() {invoke} \
402 static TAutoCommand* Build(ObjectPtr, int attr, TAutoStack& args) \
403 { return new TCommand_##name(attr bldargs); } \
406#define AUTOBUILD_ARG0(name, invoke, defs) \
407 class TCommand_##name : public TAutoCommand {\
409 defs RETARG(TAutoMono<ThisClass>) \
410 TCommand_##name(int attr ) : TAutoCommand(attr) {} \
411 void Execute() {invoke} \
412 static TAutoCommand* Build(ObjectPtr, int attr, TAutoStack& args) \
413 { return new TCommand_##name(attr); } \
416#define AUTOBUILD_ARG1(name, invoke, defs, defargs) \
417 class TCommand_##name : public TAutoCommand {\
419 defs defargs RETARG(TAutoMono<ThisClass>) \
420 TCommand_##name(int attr) : TAutoCommand(attr){} \
421 void Execute() {invoke} \
422 static TAutoCommand* Build(ObjectPtr, int attr, TAutoStack& args) \
423 { return new TCommand_##name(attr); } \
426#define AUTOBUILD_ARG2(name, invoke, defs, defargs, bldargs) \
427 class TCommand_##name : public TAutoCommand {\
429 defs defargs RETARG(TAutoMono<ThisClass>) \
430 TCommand_##name(int attr) : TAutoCommand(attr){} \
431 void Execute() {invoke} \
432 static TAutoCommand* Build(ObjectPtr, int attr, TAutoStack& args) \
433 { return new TCommand_##name(attr bldargs); } \
436#define AUTOBUILD_ARG3(name, invoke, defs, defargs, bldargs, ctrargs) \
437 class TCommand_##name : public TAutoCommand {\
439 defs defargs RETARG(TAutoMono<ThisClass>) \
440 TCommand_##name(int attr ctrargs) : TAutoCommand(attr) {} \
441 void Execute() {invoke} \
442 static TAutoCommand* Build(ObjectPtr, int attr, TAutoStack& args) \
443 { return new TCommand_##name(attr bldargs); } \
446#define AUTOBUILD_ARG4 AUTOBUILD_
451#define AUTOPROXY(name, proxy, defs) \
452 AUTOPROP_(name, Val=This->proxy;, This->proxy.Bind(Val);, defs, IDispatch*)
457#define AUTOITERATOR(state, init, test, step, extract) \
458 class TIterator : public TAutoIterator { \
462 void Init() {init;} \
463 bool Test() {return test;} \
464 void Step() {step;} \
465 void Return(TAutoVal& v) {v=extract;} \
466 TIterator* Copy() {return new TIterator(*this);} \
467 TIterator(ThisClass* obj, TAutoCreator& creator, IUnknown* owner, TLangId lang) \
468 : This(obj), TAutoIterator(creator, owner, lang) {} \
469 static TAutoIterator* Build(ObjectPtr obj, TAutoCreator& creator, \
470 IUnknown* owner, TLangId lang) \
471 { return new TIterator((ThisClass*)obj, creator, owner, lang); }\
472 }; friend class TIterator;
474#define AUTOITERATOR_DECLARE(state) \
475 class TIterator : public TAutoIterator { \
482 void Return(TAutoVal& v); \
483 TIterator* Copy() {return new TIterator(*this);} \
484 TIterator(ThisClass* obj, TAutoCreator& creator, IUnknown* owner, TLangId lang) \
485 : This(obj), TAutoIterator(creator, owner, lang) {} \
486 static TAutoIterator* Build(ObjectPtr obj, TAutoCreator& creator, \
487 IUnknown* owner, TLangId lang) \
488 { return new TIterator((ThisClass*)obj, creator, owner, lang); }\
489 }; friend class TIterator;
495#define DEFARGS0(t0) t0 Val;
496#define DEFARGS1(t1) t1 Arg1;
497#define DEFARGS2(t1,t2) t1 Arg1;t2 Arg2;
498#define DEFARGS3(t1,t2,t3) t1 Arg1;t2 Arg2;t3 Arg3;
499#define DEFARGS4(t1,t2,t3,t4) t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;
500#define DEFARGS5(t1,t2,t3,t4,t5) t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;
501#define DEFARGS6(t1,t2,t3,t4,t5,t6) t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;t6 Arg6;
502#define DEFARGS7(t1,t2,t3,t4,t5,t6,t7) \
503 t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;t6 Arg6;t7 Arg7;
504#define DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8) \
505 t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;t6 Arg6;t7 Arg7;t8 Arg8;
506#define DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9) \
507 t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;t6 Arg6;t7 Arg7;t8 Arg8;t9 Arg9;
508#define DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) \
509 t1 Arg1;t2 Arg2;t3 Arg3;t4 Arg4;t5 Arg5;t6 Arg6;t7 Arg7;t8 Arg8;t9 Arg9;t10 Arg10;
511#define BLDARGS0(t0) ,(t0)args[TAutoStack::SetValue]
512#define BLDARGS1(t1) ,(t1)args[0]
513#define BLDARGS2(t1,t2) ,(t1)args[0],(t2)args[1]
514#define BLDARGS3(t1,t2,t3) ,(t1)args[0],(t2)args[1],(t3)args[2]
515#define BLDARGS4(t1,t2,t3,t4) \
516 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3]
517#define BLDARGS5(t1,t2,t3,t4,t5) \
518 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4]
519#define BLDARGS6(t1,t2,t3,t4,t5,t6) \
520 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4],(t6)args[5]
521#define BLDARGS7(t1,t2,t3,t4,t5,t6,t7) \
522 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4] \
523 ,(t6)args[5],(t7)args[6]
524#define BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8) \
525 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4] \
526 ,(t6)args[5],(t7)args[6],(t8)args[7]
527#define BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9) \
528 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4] \
529 ,(t6)args[5],(t7)args[6],(t8)args[7],(t9)args[8]
530#define BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) \
531 ,(t1)args[0],(t2)args[1],(t3)args[2],(t4)args[3],(t5)args[4] \
532 ,(t6)args[5],(t7)args[6],(t8)args[7],(t9)args[8],(t10)args[9]
534#define CTRARGS0(t0) ,t0 val
535#define CTRARGS1(t1) ,t1 arg1
536#define CTRARGS2(t1,t2) ,t1 arg1,t2 arg2
537#define CTRARGS3(t1,t2,t3) ,t1 arg1,t2 arg2,t3 arg3
538#define CTRARGS4(t1,t2,t3,t4) ,t1 arg1,t2 arg2,t3 arg3,t4 arg4
539#define CTRARGS5(t1,t2,t3,t4,t5) ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5
540#define CTRARGS6(t1,t2,t3,t4,t5,t6) ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5,t6 arg6
541#define CTRARGS7(t1,t2,t3,t4,t5,t6,t7) ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5,t6 arg6,t7 arg7
542#define CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8) \
543 ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5,t6 arg6,t7 arg7,t8 arg8
544#define CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9) \
545 ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5,t6 arg6,t7 arg7,t8 arg8,t9 arg9
546#define CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) \
547 ,t1 arg1,t2 arg2,t3 arg3,t4 arg4,t5 arg5,t6 arg6,t7 arg7,t8 arg8,t9 arg9,t10 arg10
549#define SETARGS0 ,Val(val)
550#define SETARGS1 ,Arg1(arg1)
551#define SETARGS2 ,Arg1(arg1),Arg2(arg2)
552#define SETARGS3 ,Arg1(arg1),Arg2(arg2),Arg3(arg3)
553#define SETARGS4 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4)
554#define SETARGS5 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5)
555#define SETARGS6 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5),Arg6(arg6)
556#define SETARGS7 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5),Arg6(arg6), \
558#define SETARGS8 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5),Arg6(arg6), \
559 Arg7(arg7),Arg8(arg8)
560#define SETARGS9 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5),Arg6(arg6), \
561 Arg7(arg7),Arg8(arg8),Arg9(arg9)
562#define SETARGS10 ,Arg1(arg1),Arg2(arg2),Arg3(arg3),Arg4(arg4),Arg5(arg5),Arg6(arg6), \
563 Arg7(arg7),Arg8(arg8),Arg9(arg9),Arg10(arg10)
565#define AUTOFUNC0(name, func, ret, defs) \
566 AUTOFUNC_ARG1(name, Val=This->func();, defs, RETARG(ret))
568#define AUTOFUNC0O(name, func, ret, defs) \
569 AUTOFUNC_ARG1(name, Val=This->func();, defs, RETARGO(ret))
573#define AUTOFUNC0R(name, func, ret) \
574 AUTOFUNC_ARG0(name, Val=This->func();, RETARG(ret))
575#define AUTOFUNC0OR(name, func, ret) \
576 AUTOFUNC_ARG0(name, Val=This->func();, RETARGO(ret))
578#define AUTOFUNC0V(name, func, defs) \
579 AUTOFUNC_ARG0(name, This->func();, defs)
582#define AUTOFUNC0V3 AUTOFUNC0V
584#define AUTOFUNC0V2(name, func) \
585 AUTOFUNC_ARG1_D(name, This->func();)
587#define AUTOFUNC1(name, func, ret,type1, defs) \
588 AUTOFUNC_ARG4(name, Val=This->func(Arg1);, defs, RETARG(ret) \
589 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
590#define AUTOFUNC1O(name, func, ret,type1, defs) \
591 AUTOFUNC_ARG4(name, Val=This->func(Arg1);, defs, RETARGO(ret) \
592 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
594#define AUTOFUNC1R(name, func, ret,type1) \
595 AUTOFUNC_ARG4(name, Val=This->func(Arg1);, public:, RETARG(ret) \
596 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
597#define AUTOFUNC1OR(name, func, ret,type1) \
598 AUTOFUNC_ARG4(name, Val=This->func(Arg1);, public:, RETARGO(ret) \
599 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
601#define AUTOFUNC1V(name, func, type1, defs) \
602 AUTOFUNC_ARG4(name, This->func(Arg1);, defs, \
603 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
605#define AUTOFUNC2(name, func, ret,t1,t2, defs) \
606 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2);, defs, RETARG(ret) \
607 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
608#define AUTOFUNC2O(name, func, ret,t1,t2, defs) \
609 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2);, defs, RETARGO(ret) \
610 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
612#define AUTOFUNC2V(name, func, t1,t2, defs) \
613 AUTOFUNC_ARG4(name, This->func(Arg1,Arg2);, defs, \
614 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
616#define AUTOFUNC2V4(name, func, t1,t2) \
617 AUTOFUNC_ARG4(name, This->func(Arg1,Arg2);, public:, \
618 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
620#define AUTOFUNC3(name, func, ret,t1,t2,t3, defs) \
621 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2,Arg3);, defs, RETARG(ret) \
622 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
623#define AUTOFUNC3O(name, func, ret,t1,t2,t3, defs) \
624 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2,Arg3);, defs, RETARGO(ret) \
625 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
627#define AUTOFUNC3V(name, func, t1,t2,t3, defs) \
628 AUTOFUNC_ARG4(name, This->func(Arg1,Arg2,Arg3);, defs, \
629 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
631#define AUTOFUNC4(name, func, ret,t1,t2,t3,t4, defs) \
632 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2,Arg3,Arg4);, defs, RETARG(ret) \
633 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
634#define AUTOFUNC4O(name, func, ret,t1,t2,t3,t4, defs) \
635 AUTOFUNC_ARG4(name, Val=This->func(Arg1,Arg2,Arg3,Arg4);, defs, RETARGO(ret) \
636 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
638#define AUTOFUNC4V(name, func, t1,t2,t3,t4, defs) \
639 AUTOFUNC_ARG4(name, This->func(Arg1,Arg2,Arg3,Arg4);, defs,\
640 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
642#define AUTOFUNC5(name,func,ret,t1,t2,t3,t4,t5,defs) \
643 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5);,defs,RETARG(ret) \
644 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),SETARGS5)
645#define AUTOFUNC5O(name,func,ret,t1,t2,t3,t4,t5,defs) \
646 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5);,defs,RETARGO(ret) \
647 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),SETARGS5)
649#define AUTOFUNC5V(name,func,t1,t2,t3,t4,t5,defs) \
650 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5);,defs, \
651 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),SETARGS5)
653#define AUTOFUNC6(name,func,ret,t1,t2,t3,t4,t5,t6,defs) \
654 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs,RETARG(ret) \
655 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
656#define AUTOFUNCO6(name,func,ret,t1,t2,t3,t4,t5,t6,defs) \
657 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs,RETARGO(ret) \
658 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
660#define AUTOFUNC6V(name,func,t1,t2,t3,t4,t5,t6,defs) \
661 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs, \
662 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), \
663 CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
665#define AUTOFUNC7(name,func,ret,t1,t2,t3,t4,t5,t6,t7,defs) \
666 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs,RETARG(ret) \
667 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
668 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
669#define AUTOFUNC7O(name,func,ret,t1,t2,t3,t4,t5,t6,t7,defs) \
670 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs,RETARGO(ret) \
671 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
672 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
674#define AUTOFUNC7V(name,func,t1,t2,t3,t4,t5,t6,t7,defs) \
675 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs, \
676 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
677 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
679#define AUTOFUNC8(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
680 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs,RETARG(ret) \
681 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
682 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
683#define AUTOFUNC8O(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
684 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs,RETARGO(ret) \
685 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
686 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
688#define AUTOFUNC8V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
689 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs, \
690 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
691 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
693#define AUTOFUNC9(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
694 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs,RETARG(ret) \
695 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
696 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
697#define AUTOFUNC9O(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
698 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs,RETARGO(ret) \
699 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
700 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
702#define AUTOFUNC9V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
703 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs, \
704 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
705 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
707#define AUTOFUNC10(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
708 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs,RETARG(ret) \
709 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
710 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
711#define AUTOFUNC10O(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
712 AUTOFUNC_ARG4(name,Val=This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs,RETARGO(ret) \
713 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
714 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
716#define AUTOFUNC10V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
717 AUTOFUNC_ARG4(name,This->func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs, \
718 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
719 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
721#define AUTOSTAT0(name, func, ret, defs) \
722 AUTOFUNC_ARG1(name, Val=func();, defs, RETARG(ret))
725#define AUTOSTAT0V(name, func, defs) \
726 AUTOFUNC_ARG0(name, func();, defs)
729#define AUTOSTAT1(name, func, ret,type1, defs) \
730 AUTOFUNC_ARG4(name, Val=func(Arg1);, defs, RETARG(ret) \
731 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
733#define AUTOSTAT1V(name, func, type1, defs) \
734 AUTOFUNC_ARG4(name, func(Arg1);, defs, \
735 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
737#define AUTOSTAT2(name, func, ret,t1,t2, defs) \
738 AUTOFUNC_ARG4(name, Val=func(Arg1,Arg2);, defs, RETARG(ret) \
739 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
741#define AUTOSTAT2V(name, func, t1,t2, defs) \
742 AUTOFUNC_ARG4(name, func(Arg1,Arg2);, defs, \
743 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
745#define AUTOSTAT3(name, func, ret,t1,t2,t3, defs) \
746 AUTOFUNC_ARG4(name, Val=func(Arg1,Arg2,Arg3);, defs, RETARG(ret) \
747 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
749#define AUTOSTAT3V(name, func, t1,t2,t3, defs) \
750 AUTOFUNC_ARG4(name, func(Arg1,Arg2,Arg3);, defs, \
751 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
753#define AUTOSTAT4(name, func, ret,t1,t2,t3,t4, defs) \
754 AUTOFUNC_ARG4(name, Val=func(Arg1,Arg2,Arg3,Arg4);, defs, RETARG(ret) \
755 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
757#define AUTOSTAT4V(name, func, t1,t2,t3,t4, defs) \
758 AUTOFUNC_ARG4(name, func(Arg1,Arg2,Arg3,Arg4);, defs,\
759 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
761#define AUTOSTAT5(name,func,ret,t1,t2,t3,t4,t5,defs) \
762 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5);,defs,RETARG(ret) \
763 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),SETARGS5)
765#define AUTOSTAT5V(name,func,t1,t2,t3,t4,t5,defs) \
766 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5);,defs, \
767 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),SETARGS5)
769#define AUTOSTAT6(name,func,ret,t1,t2,t3,t4,t5,t6,defs) \
770 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs,RETARG(ret) \
771 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
773#define AUTOSTAT6V(name,func,t1,t2,t3,t4,t5,t6,defs) \
774 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs, \
775 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
777#define AUTOSTAT7(name,func,ret,t1,t2,t3,t4,t5,t6,t7,defs) \
778 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs,RETARG(ret) \
779 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
780 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
782#define AUTOSTAT7V(name,func,t1,t2,t3,t4,t5,t6,t7,defs) \
783 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs, \
784 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
785 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
787#define AUTOSTAT8(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
788 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs,RETARG(ret) \
789 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
790 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
792#define AUTOSTAT8V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
793 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs, \
794 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
795 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
797#define AUTOSTAT9(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
798 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs,RETARG(ret) \
799 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
800 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
802#define AUTOSTAT9V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
803 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs, \
804 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
805 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
807#define AUTOSTAT10(name,func,ret,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
808 AUTOFUNC_ARG4(name,Val=func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs,RETARG(ret) \
809 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
810 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
812#define AUTOSTAT10V(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
813 AUTOFUNC_ARG4(name,func(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs, \
814 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
815 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
818#define AUTOPROP( name, get, set, type, defs) \
819 AUTOPROP_(name, Val=This->get();, This->set(Val);, defs, type)
821#define AUTOPROPBUG( name, get, set, type, defs) \
822 AUTOPROPBUG_(name, Val=This->get();, This->set(Val);, defs, type)
824#define AUTOPROPRO(name, get, type, defs) \
825 AUTOFUNC0( name, get, type, defs)
827#define AUTOPROPWO( name, set, type, defs) \
828 AUTOFUNC_(name, This->set(Val);, defs, \
829 DEFARGS0(type), BLDARGS0(type), CTRARGS0(type), SETARGS0)
831#define AUTODATA( name, data, type, defs) \
832 AUTOPROP_(name, Val=This->data;, This->data=Val;, defs, type)
834#define AUTODATARO(name, data, type, defs) \
835 AUTOFUNC_ARG1(name, Val=This->data;, defs, RETARG(type))
838#define AUTOTHIS(name, type, defs) \
839 AUTOFUNC_ARG1(name, Val=*This;, defs, RETARG(type))
842#define AUTOFLAG( name, data, mask, defs) \
843 AUTOPROP_(name, Val=(TBool)((This->data & (mask)) != 0);, \
844 if (Val) This->data|=(mask); else This->data&=~(mask);, defs, TBool)
846#define AUTOBUILD0(name, defs) \
847 AUTOBUILD_ARG0(name, Val = new ThisClass();, defs)
850#define AUTOBUILD1(name, type1, defs) \
851 AUTOBUILD_ARG4(name, Val = new ThisClass(Arg1);, defs, \
852 DEFARGS1(type1), BLDARGS1(type1), CTRARGS1(type1), SETARGS1)
854#define AUTOBUILD2(name, t1,t2, defs) \
855 AUTOBUILD_ARG4(name, Val = new ThisClass(Arg1,Arg2);, defs, \
856 DEFARGS2(t1,t2), BLDARGS2(t1,t2), CTRARGS2(t1,t2), SETARGS2)
858#define AUTOBUILD3(name, t1,t2,t3, defs) \
859 AUTOBUILD_ARG4(name, Val = new ThisClass(Arg1,Arg2,Arg3);, defs, \
860 DEFARGS3(t1,t2,t3), BLDARGS3(t1,t2,t3), CTRARGS3(t1,t2,t3), SETARGS3)
862#define AUTOBUILD4(name, t1,t2,t3,t4, defs) \
863 AUTOBUILD_ARG4(name, Val = new ThisClass(Arg1,Arg2,Arg3,Arg4);, defs, \
864 DEFARGS4(t1,t2,t3,t4), BLDARGS4(t1,t2,t3,t4), CTRARGS4(t1,t2,t3,t4), SETARGS4)
866#define AUTOBUILD5(name,func,t1,t2,t3,t4,t5,defs) \
867 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5);,defs, \
868 DEFARGS5(t1,t2,t3,t4,t5),BLDARGS5(t1,t2,t3,t4,t5),CTRARGS5(t1,t2,t3,t4,t5),\
871#define AUTOBUILD6(name,func,t1,t2,t3,t4,t5,t6,defs) \
872 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6);,defs, \
873 DEFARGS6(t1,t2,t3,t4,t5,t6),BLDARGS6(t1,t2,t3,t4,t5,t6), \
874 CTRARGS6(t1,t2,t3,t4,t5,t6),SETARGS6)
876#define AUTOBUILD7(name,func,t1,t2,t3,t4,t5,t6,t7,defs) \
877 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7);,defs,\
878 DEFARGS7(t1,t2,t3,t4,t5,t6,t7),BLDARGS7(t1,t2,t3,t4,t5,t6,t7), \
879 CTRARGS7(t1,t2,t3,t4,t5,t6,t7),SETARGS7)
881#define AUTOBUILD8(name,func,t1,t2,t3,t4,t5,t6,t7,t8,defs) \
882 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8);,defs, \
883 DEFARGS8(t1,t2,t3,t4,t5,t6,t7,t8),BLDARGS8(t1,t2,t3,t4,t5,t6,t7,t8), \
884 CTRARGS8(t1,t2,t3,t4,t5,t6,t7,t8),SETARGS8)
886#define AUTOBUILD9(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,defs) \
887 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9);,defs, \
888 DEFARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),BLDARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9), \
889 CTRARGS9(t1,t2,t3,t4,t5,t6,t7,t8,t9),SETARGS9)
891#define AUTOBUILD10(name,func,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,defs) \
892 AUTOBUILD_ARG4(name,Val=new ThisClass(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8,Arg9,Arg10);,defs, \
893 DEFARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),BLDARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10), \
894 CTRARGS10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10),SETARGS10)
897 struct TDetach : public TAutoDetach { \
898 ~TDetach(){Notify((int)&((ThisClass*)0)->dtr_notify,typeid(ThisClass));} \
899 } dtr_notify; friend struct TDetach;
916#define AUTOCALL_ASSIGN \
917 ExtObjRef operator =(ExtObjRef ifc) {return TAutoProxy::operator =(ifc);}
921#define AUTONAMES0(id) static TAutoDispId i_(this, id);
922#define AUTONAMES1(id,n1) static TAutoDispIds<1> i_(this, id _A(n1));
923#define AUTONAMES2(id,n1,n2) static TAutoDispIds<2> i_(this, id _A(n2)_A(n1));
924#define AUTONAMES3(id,n1,n2,n3) \
925 static TAutoDispIds<3> i_(this, id _A(n3)_A(n2)_A(n1));
926#define AUTONAMES4(id,n1,n2,n3,n4) \
927 static TAutoDispIds<4> i_(this, id _A(n4)_A(n3)_A(n2)_A(n1));
928#define AUTONAMES5(id,n1,n2,n3,n4,n5) \
929 static TAutoDispIds<5> i_(this, id _A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
930#define AUTONAMES6(id,n1,n2,n3,n4,n5,n6) \
931 static TAutoDispIds<6> i_(this, id _A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
932#define AUTONAMES7(id,n1,n2,n3,n4,n5,n6,n7) \
933 static TAutoDispIds<7> i_(this,id,_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
934#define AUTONAMES8(id,n1,n2,n3,n4,n5,n6,n7,n8) \
935 static TAutoDispIds<8> i_(this,id,_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
936#define AUTONAMES9(id,n1,n2,n3,n4,n5,n6,n7,n8,n9) \
937 static TAutoDispIds<9> i_(this,id,_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
938#define AUTONAMES10(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10) \
939 static TAutoDispIds<10> i_(this,id,_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
941#define AUTONAMES11(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11) static TAutoDispIds<11> i_(this, id, _A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
942#define AUTONAMES12(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12) static TAutoDispIds<12> i_(this, id, _A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
943#define AUTONAMES13(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13) static TAutoDispIds<13> i_(this, id, _A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
944#define AUTONAMES14(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14) static TAutoDispIds<14> i_(this, id, _A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
945#define AUTONAMES15(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15) static TAutoDispIds<15> i_(this, id, _A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
946#define AUTONAMES16(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16) static TAutoDispIds<16> i_(this, id, _A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
947#define AUTONAMES17(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17) static TAutoDispIds<17> i_(this, id, _A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
948#define AUTONAMES18(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18) static TAutoDispIds<18> i_(this, id, _A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
949#define AUTONAMES19(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19) static TAutoDispIds<19> i_(this, id, _A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
950#define AUTONAMES20(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20) static TAutoDispIds<20> i_(this, id, _A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
951#define AUTONAMES21(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21) static TAutoDispIds<21> i_(this, id, _A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
952#define AUTONAMES22(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22) static TAutoDispIds<22> i_(this, id, _A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
953#define AUTONAMES23(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23) static TAutoDispIds<23> i_(this, id, _A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
954#define AUTONAMES24(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24) static TAutoDispIds<24> i_(this, id, _A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
955#define AUTONAMES25(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25) static TAutoDispIds<25> i_(this, id, _A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
956#define AUTONAMES26(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26) static TAutoDispIds<26> i_(this, id, _A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
957#define AUTONAMES27(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27) static TAutoDispIds<27> i_(this, id, _A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
958#define AUTONAMES28(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28) static TAutoDispIds<28> i_(this, id, _A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
959#define AUTONAMES29(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29) static TAutoDispIds<29> i_(this, id, _A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
960#define AUTONAMES30(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30) static TAutoDispIds<30> i_(this, id, _A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
961#define AUTONAMES31(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31) static TAutoDispIds<31> i_(this, id, _A(n31)_A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
962#define AUTONAMES32(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32) static TAutoDispIds<32> i_(this, id, _A(n32)_A(n31)_A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
963#define AUTONAMES33(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n33) static TAutoDispIds<33> i_(this, id, _A(n33)_A(n32)_A(n31)_A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
964#define AUTONAMES34(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n33,n34) static TAutoDispIds<34> i_(this, id, _A(n34)_A(n33)_A(n32)_A(n31)_A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
965#define AUTONAMES35(id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n33,n34,n35) static TAutoDispIds<35> i_(this, id, _A(n35)_A(n34)_A(n33)_A(n32)_A(n31)_A(n30)_A(n29)_A(n28)_A(n27)_A(n26)_A(n25)_A(n24)_A(n23)_A(n22)_A(n21)_A(n20)_A(n19)_A(n18)_A(n17)_A(n16)_A(n15)_A(n14)_A(n13)_A(n12)_A(n11)_A(n10)_A(n9)_A(n8)_A(n7)_A(n6)_A(n5)_A(n4)_A(n3)_A(n2)_A(n1));
968#define AUTOARGS0() TAutoArgs<0>a_;
969#define AUTOARGS1(a1) TAutoArgs<1>a_; a_[1]=a1;
970#define AUTOARGS2(a1,a2) TAutoArgs<2>a_; a_[1]=a1; a_[2]=a2;
971#define AUTOARGS3(a1,a2,a3) TAutoArgs<3>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3;
972#define AUTOARGS4(a1,a2,a3,a4) \
973 TAutoArgs<4>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4;
974#define AUTOARGS5(a1,a2,a3,a4,a5) \
975 TAutoArgs<5>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5;
976#define AUTOARGS6(a1,a2,a3,a4,a5,a6) \
977 TAutoArgs<6>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5;a_[6]=a6;
978#define AUTOARGS7(a1,a2,a3,a4,a5,a6,a7) \
979 TAutoArgs<7>a_;a_[1]=a1;a_[2]=a2;a_[3]=a3;a_[4]=a4;a_[5]=a5; \
981#define AUTOARGS8(a1,a2,a3,a4,a5,a6,a7,a8) \
982 TAutoArgs<8>a_;a_[1]=a1;a_[2]=a2;a_[3]=a3;a_[4]=a4;a_[5]=a5; \
983 a_[6]=a6;a_[7]=a7;a_[8]=a8;
984#define AUTOARGS9(a1,a2,a3,a4,a5,a6,a7,a8,a9) \
985 TAutoArgs<9>a_;a_[1]=a1;a_[2]=a2;a_[3]=a3;a_[4]=a4;a_[5]=a5; \
986 a_[6]=a6;a_[7]=a7;a_[8]=a8;a_[9]=a9;
987#define AUTOARGS10(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \
988 TAutoArgs<10>a_;a_[1]=a1;a_[2]=a2;a_[3]=a3;a_[4]=a4;a_[5]=a5; \
989 a_[6]=a6;a_[7]=a7;a_[8]=a8;a_[9]=a9;a_[10]=a10;
992#define AUTOARGS11(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) TAutoArgs<11>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11;
993#define AUTOARGS12(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) TAutoArgs<12>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12;
994#define AUTOARGS13(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) TAutoArgs<13>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13;
995#define AUTOARGS14(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) TAutoArgs<14>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14;
996#define AUTOARGS15(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) TAutoArgs<15>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15;
997#define AUTOARGS16(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16) TAutoArgs<16>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16;
998#define AUTOARGS17(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17) TAutoArgs<17>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17;
999#define AUTOARGS18(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18) TAutoArgs<18>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18;
1000#define AUTOARGS19(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19) TAutoArgs<19>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19;
1001#define AUTOARGS20(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20) TAutoArgs<20>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20;
1002#define AUTOARGS21(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21) TAutoArgs<21>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21;
1003#define AUTOARGS22(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22) TAutoArgs<22>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22;
1004#define AUTOARGS23(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23) TAutoArgs<23>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23;
1005#define AUTOARGS24(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24) TAutoArgs<24>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24;
1006#define AUTOARGS25(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25) TAutoArgs<25>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25;
1007#define AUTOARGS26(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26) TAutoArgs<26>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26;
1008#define AUTOARGS27(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27) TAutoArgs<27>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27;
1009#define AUTOARGS28(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28) TAutoArgs<28>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28;
1010#define AUTOARGS29(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29) TAutoArgs<29>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29;
1011#define AUTOARGS30(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30) TAutoArgs<30>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30;
1012#define AUTOARGS31(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31) TAutoArgs<31>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31;
1013#define AUTOARGS31(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31) TAutoArgs<31>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31;
1014#define AUTOARGS32(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32) TAutoArgs<32>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31; a_[32]=a32;
1015#define AUTOARGS33(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33) TAutoArgs<33>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31; a_[32]=a32; a_[33]=a33;
1016#define AUTOARGS34(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34) TAutoArgs<34>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31; a_[32]=a32; a_[33]=a33; a_[34]=a34;
1017#define AUTOARGS35(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35) TAutoArgs<35>a_; a_[1]=a1; a_[2]=a2; a_[3]=a3; a_[4]=a4; a_[5]=a5; a_[6]=a6; a_[7]=a7; a_[8]=a8; a_[9]=a9; a_[10]=a10; a_[11]=a11; a_[12]=a12; a_[13]=a13; a_[14]=a14; a_[15]=a15; a_[16]=a16; a_[17]=a17; a_[18]=a18; a_[19]=a19; a_[20]=a20; a_[21]=a21; a_[22]=a22; a_[23]=a23; a_[24]=a24; a_[25]=a25; a_[26]=a26; a_[27]=a27; a_[28]=a28; a_[29]=a29; a_[30]=a30; a_[31]=a31; a_[32]=a32; a_[33]=a33; a_[34]=a34; a_[35]=a35;
1019#define AUTOCALL_METHOD_RET return Invoke(acMethod, a_, i_, i_);
1020#define AUTOCALL_METHOD_VOID Invoke(acMethod|acVoidRet, a_, i_, i_);
1021#define AUTOCALL_METHOD_REF(prx) prx.Bind(Invoke(acMethod, a_, i_, i_));
1022#define AUTOCALL_METHOD_CONV(t) return t(Invoke(acMethod, a_, i_, i_));
1024#define AUTOCALL_PROP_GET return Invoke(acPropGet, a_, i_, i_);
1025#define AUTOCALL_PROP_SET(val) a_[0]=val; Invoke(acPropSet, a_, i_, i_);
1026#define AUTOCALL_PROP_REF(prx) prx.Bind(Invoke(acPropGet, a_, i_, i_));
1027#define AUTOCALL_PROP_CONV(t) return t(Invoke(acPropGet, a_, i_, i_));
1045#define DISPID_CATCH_ALL (-999)
1047#define AUTOFUNCX(name, func, ret, defs) \
1048 AUTOFUNC_(name, Val=(ret)This->func( (long *)Args);, defs, \
1049 RETARG(ret) DEFARGSX, BLDARGSX, CTRARGSX, SETARGSX)
1051#define DEFARGSX TAutoStack *Args;
1052#define BLDARGSX ,&args
1053#define CTRARGSX ,TAutoStack *args
1054#define SETARGSX ,Args(args)
OLE Automation Class Definitions.
Automation abstract base class for command objects.
Automation argument stack abstraction.
Object Component Framework (COM encapsulation)
TAutoCurrency TAutoCurrencyEnum
unsigned char TAutoByteEnum
static TAutoCommand * Build(ObjectPtr, int, TAutoStack &)