26 #include <tqcstring.h>
27 #include <dcoptypes.h>
28 #include <kdatastream.h>
29 #include "tdelibs_export.h"
57 if ( typeCheck( dcopTypeName(t),
true ) ) {
58 TQDataStream reply( data, IO_ReadOnly );
70 template <
class T>
bool get( T& t,
const char* tname ) {
71 if ( typeCheck( tname,
false ) ) {
72 TQDataStream reply( data, IO_ReadOnly );
86 template <
class T>
bool get( T& t ) {
87 if ( typeCheck( dcopTypeName(t),
false ) ) {
88 TQDataStream reply( data, IO_ReadOnly );
99 inline bool isValid()
const {
return !type.isNull(); }
106 bool typeCheck(
const char* t );
107 bool typeCheck(
const char* t,
bool warn );
130 template <
class T>
DCOPArg(
const T& t,
const char* tname_arg )
133 TQDataStream ds( data, IO_WriteOnly );
145 : tname( dcopTypeName(t) )
147 TQDataStream ds( data, IO_WriteOnly );
157 inline const char* dcopTypeName(
const DCOPArg &arg ) {
return arg.
tname; }
159 { str.writeRawBytes( arg.
data.data(), arg.
data.size() );
return str; }
298 DCOPRef(
const TQCString& app,
const TQCString& obj =
"" );
316 DCOPRef(
const TQCString& app,
const TQCString& obj,
const TQCString& type );
329 TQCString app()
const;
336 TQCString obj()
const;
341 TQCString object()
const;
347 TQCString type()
const;
361 void setRef(
const TQCString& app,
const TQCString& obj =
"" );
369 void setRef(
const TQCString& app,
const TQCString& obj,
const TQCString& type );
419 return callInternal( fun,
"()", data );
438 return callInternal( fun,
"()", data, useEventLoop, timeout );
459 args.sprintf(
"(%s)",
462 TQDataStream ds( data, IO_WriteOnly );
464 return callInternal( fun, args, data );
487 args.sprintf(
"(%s)",
490 TQDataStream ds( data, IO_WriteOnly );
492 return callInternal( fun, args, data, useEventLoop, timeout );
512 template <
class T1,
class T2>
517 args.sprintf(
"(%s,%s)",
521 TQDataStream ds( data, IO_WriteOnly );
523 return callInternal( fun, args, data );
543 template <
class T1,
class T2>
549 args.sprintf(
"(%s,%s)",
553 TQDataStream ds( data, IO_WriteOnly );
555 return callInternal( fun, args, data, useEventLoop, timeout );
577 template <
class T1,
class T2,
class T3>
583 args.sprintf(
"(%s,%s,%s)",
588 TQDataStream ds( data, IO_WriteOnly );
589 ds << t1 << t2 << t3;
590 return callInternal( fun, args, data );
612 template <
class T1,
class T2,
class T3>
619 args.sprintf(
"(%s,%s,%s)",
624 TQDataStream ds( data, IO_WriteOnly );
625 ds << t1 << t2 << t3;
626 return callInternal( fun, args, data, useEventLoop, timeout );
650 template <
class T1,
class T2,
class T3,
class T4>
657 args.sprintf(
"(%s,%s,%s,%s)",
663 TQDataStream ds( data, IO_WriteOnly );
664 ds << t1 << t2 << t3 << t4;
665 return callInternal( fun, args, data );
689 template <
class T1,
class T2,
class T3,
class T4>
697 args.sprintf(
"(%s,%s,%s,%s)",
703 TQDataStream ds( data, IO_WriteOnly );
704 ds << t1 << t2 << t3 << t4;
705 return callInternal( fun, args, data, useEventLoop, timeout );
731 template <
class T1,
class T2,
class T3,
class T4,
class T5>
739 args.sprintf(
"(%s,%s,%s,%s,%s)",
746 TQDataStream ds( data, IO_WriteOnly );
747 ds << t1 << t2 << t3 << t4 << t5;
748 return callInternal( fun, args, data );
774 template <
class T1,
class T2,
class T3,
class T4,
class T5>
783 args.sprintf(
"(%s,%s,%s,%s,%s)",
790 TQDataStream ds( data, IO_WriteOnly );
791 ds << t1 << t2 << t3 << t4 << t5;
792 return callInternal( fun, args, data, useEventLoop, timeout );
820 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
829 args.sprintf(
"(%s,%s,%s,%s,%s,%s)",
837 TQDataStream ds( data, IO_WriteOnly );
838 ds << t1 << t2 << t3 << t4 << t5 << t6;
839 return callInternal( fun, args, data );
867 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
877 args.sprintf(
"(%s,%s,%s,%s,%s,%s)",
885 TQDataStream ds( data, IO_WriteOnly );
886 ds << t1 << t2 << t3 << t4 << t5 << t6;
887 return callInternal( fun, args, data, useEventLoop, timeout );
916 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
926 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s)",
935 TQDataStream ds( data, IO_WriteOnly );
936 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7;
937 return callInternal( fun, args, data );
967 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
978 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s)",
987 TQDataStream ds( data, IO_WriteOnly );
988 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7;
989 return callInternal( fun, args, data, useEventLoop, timeout );
1021 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
1032 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s,%s)",
1042 TQDataStream ds( data, IO_WriteOnly );
1043 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7 << t8;
1044 return callInternal( fun, args, data );
1076 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
1088 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s,%s)",
1098 TQDataStream ds( data, IO_WriteOnly );
1099 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7 << t8;
1100 return callInternal( fun, args, data, useEventLoop, timeout );
1116 bool send(
const TQCString& fun ) {
1118 return sendInternal( fun,
"()", data );
1138 bool send(
const TQCString& fun,
const T1& t1 ) {
1140 args.sprintf(
"(%s)",
1143 TQDataStream ds( data, IO_WriteOnly );
1145 return sendInternal( fun, args, data );
1165 template <
class T1,
class T2>
1166 bool send(
const TQCString& fun,
1170 args.sprintf(
"(%s,%s)",
1174 TQDataStream ds( data, IO_WriteOnly );
1176 return sendInternal( fun, args, data );
1198 template <
class T1,
class T2,
class T3>
1199 bool send(
const TQCString& fun,
1204 args.sprintf(
"(%s,%s,%s)",
1209 TQDataStream ds( data, IO_WriteOnly );
1210 ds << t1 << t2 << t3;
1211 return sendInternal( fun, args, data );
1235 template <
class T1,
class T2,
class T3,
class T4>
1236 bool send(
const TQCString& fun,
1242 args.sprintf(
"(%s,%s,%s,%s)",
1248 TQDataStream ds( data, IO_WriteOnly );
1249 ds << t1 << t2 << t3 << t4;
1250 return sendInternal( fun, args, data );
1276 template <
class T1,
class T2,
class T3,
class T4,
class T5>
1277 bool send(
const TQCString& fun,
1284 args.sprintf(
"(%s,%s,%s,%s,%s)",
1291 TQDataStream ds( data, IO_WriteOnly );
1292 ds << t1 << t2 << t3 << t4 << t5;
1293 return sendInternal( fun, args, data );
1321 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
1322 bool send(
const TQCString& fun,
1330 args.sprintf(
"(%s,%s,%s,%s,%s,%s)",
1338 TQDataStream ds( data, IO_WriteOnly );
1339 ds << t1 << t2 << t3 << t4 << t5 << t6;
1340 return sendInternal( fun, args, data );
1370 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
1371 bool send(
const TQCString& fun,
1380 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s)",
1389 TQDataStream ds( data, IO_WriteOnly );
1390 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7;
1391 return sendInternal( fun, args, data );
1423 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
1424 bool send(
const TQCString& fun,
1434 args.sprintf(
"(%s,%s,%s,%s,%s,%s,%s,%s)",
1444 TQDataStream ds( data, IO_WriteOnly );
1445 ds << t1 << t2 << t3 << t4 << t5 << t6 << t7 << t8;
1446 return sendInternal( fun, args, data );
1452 DCOPReply callInternal(
const TQCString& fun,
const TQCString& args,
const TQByteArray& data,
1453 EventLoopFlag useEventLoop,
int timeout );
1454 DCOPReply callInternal(
const TQCString& fun,
const TQCString& args,
const TQByteArray& data );
1455 bool sendInternal(
const TQCString& fun,
const TQCString& args,
const TQByteArray& data );
1461 class DCOPRefPrivate;
1472 DCOP_EXPORT TQDataStream& operator>>( TQDataStream&,
DCOPRef& ref );