26 #ifndef _CONV_H_217412934_ 27 #define _CONV_H_217412934_ 31 #include <qvaluevector.h> 32 #include <qdatetime.h> 69 typedef QDateTime Type;
75 typedef QDateTime Type;
105 typedef QCString Type;
109 QString toString(T v)
111 return QString(
"%1").arg(v);
115 LIB_EXPORT QString toString<double>(
double v);
118 LIB_EXPORT QString toString<QVariant>(QVariant v);
121 LIB_EXPORT QString toString<float>(
float v);
124 T fromQVariant(
const QVariant & s)
130 LIB_EXPORT
bool fromQVariant<bool>(
const QVariant &);
133 LIB_EXPORT
int fromQVariant<int>(
const QVariant &);
136 LIB_EXPORT uint fromQVariant<uint>(
const QVariant &);
139 LIB_EXPORT
float fromQVariant<float>(
const QVariant &);
142 LIB_EXPORT
double fromQVariant<double>(
const QVariant &);
145 LIB_EXPORT Q_LLONG fromQVariant<Q_LLONG>(
const QVariant &);
148 LIB_EXPORT Q_ULLONG fromQVariant<Q_ULLONG>(
const QVariant &);
151 LIB_EXPORT Q_ULONG fromQVariant<Q_ULONG>(
const QVariant &);
154 LIB_EXPORT Q_LONG fromQVariant<Q_LONG>(
const QVariant &);
157 LIB_EXPORT QString fromQVariant<QString>(
const QVariant &);
160 LIB_EXPORT QCString fromQVariant<QCString>(
const QVariant &);
164 virtual int argc()=0;
166 virtual int operator()(
const QValueVector<QVariant> & , QString & , QString & )=0;
170 template <
class T,
class R>
173 typedef R (T::*memFunPtr)();
179 typedef void (T::*Type)();
185 typedef void (T::*Type)()
const;
188 template <
class T,
class R,
class P1>
191 typedef R (T::*memFunPtr)(P1);
194 template <
class T,
class R,
class P1,
class P2>
197 typedef R (T::*memFunPtr)(P1,P2);
200 template <
class T,
class R,
class P1,
class P2,
class P3>
203 typedef R (T::*memFunPtr)(P1,P2,P3);
206 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4>
209 typedef R (T::*memFunPtr)(P1,P2,P3,P4);
212 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
215 typedef R (T::*memFunPtr)(P1,P2,P3,P4,P5);
218 template <
class T,
class R>
221 typedef R (T::*memFunPtr)()
const;
224 template <
class T,
class R,
class P1>
227 typedef R (T::*memFunPtr)(P1)
const;
230 template <
class T,
class R,
class P1,
class P2>
233 typedef R (T::*memFunPtr)(P1,P2)
const;
236 template <
class T,
class R,
class P1,
class P2,
class P3>
239 typedef R (T::*memFunPtr)(P1,P2,P3)
const;
242 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4>
245 typedef R (T::*memFunPtr)(P1,P2,P3,P4)
const;
248 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
251 typedef R (T::*memFunPtr)(P1,P2,P3,P4,P5)
const;
257 template <
class T,
class R,
class Func=NonConstFunc0<T,R> >
260 typedef typename Func::memFunPtr memFunPtr;
264 memFunc0(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
265 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
267 if (parms.size()!=arity)
269 err=QString(
"Number of provided parameters doesn't match function definition");
272 res=toString<R>((m_pobj->*m_pfunc)());
281 template <
class T,
class R,
class P1,
class Func=NonConstFunc1<T,R,P1> >
284 typedef typename LocVarType<P1>::Type PL1;
285 typedef typename Func::memFunPtr memFunPtr;
289 memFunc1(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
290 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
292 if (parms.size()!=arity)
294 err=QString(
"Number of provided parameters doesn't match function definition");
297 PL1 p1=fromQVariant<PL1>(parms[0]);
298 res=toString<R>((m_pobj->*m_pfunc)(p1));
307 template <
class T,
class R,
class P1,
class P2,
class Func=NonConstFunc2<T,R,P1,P2> >
310 typedef typename LocVarType<P1>::Type PL1;
311 typedef typename LocVarType<P2>::Type PL2;
312 typedef typename Func::memFunPtr memFunPtr;
316 memFunc2(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
317 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
319 if (parms.size()!=arity)
321 err=QString(
"Number of provided parameters doesn't match function definition");
324 PL1 p1=fromQVariant<PL1>(parms[0]);
325 PL2 p2=fromQVariant<PL2>(parms[1]);
326 res=toString<R>((m_pobj->*m_pfunc)(p1,p2));
335 template <
class T,
class R,
class P1,
class P2,
class P3,
class Func=NonConstFunc3<T,R,P1,P2,P3> >
338 typedef typename LocVarType<P1>::Type PL1;
339 typedef typename LocVarType<P2>::Type PL2;
340 typedef typename LocVarType<P3>::Type PL3;
341 typedef typename Func::memFunPtr memFunPtr;
345 memFunc3(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
346 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
348 if (parms.size()!=arity)
350 err=QString(
"Number of provided parameters doesn't match function definition");
353 PL1 p1=fromQVariant<PL1>(parms[0]);
354 PL2 p2=fromQVariant<PL2>(parms[1]);
355 PL3 p3=fromQVariant<PL3>(parms[2]);
356 res=toString<R>((m_pobj->*m_pfunc)(p1,p2,p3));
365 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4,
class Func=NonConstFunc4<T,R,P1,P2,P3,P4> >
368 typedef typename LocVarType<P1>::Type PL1;
369 typedef typename LocVarType<P2>::Type PL2;
370 typedef typename LocVarType<P3>::Type PL3;
371 typedef typename LocVarType<P4>::Type PL4;
372 typedef typename Func::memFunPtr memFunPtr;
376 memFunc4(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
377 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
379 if (parms.size()!=arity)
381 err=QString(
"Number of provided parameters doesn't match function definition");
384 PL1 p1=fromQVariant<PL1>(parms[0]);
385 PL2 p2=fromQVariant<PL2>(parms[1]);
386 PL3 p3=fromQVariant<PL3>(parms[2]);
387 PL4 p4=fromQVariant<PL4>(parms[3]);
388 res=toString<R>((m_pobj->*m_pfunc)(p1,p2,p3,p4));
397 template <
class T,
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
401 typedef typename LocVarType<P1>::Type PL1;
402 typedef typename LocVarType<P2>::Type PL2;
403 typedef typename LocVarType<P3>::Type PL3;
404 typedef typename LocVarType<P4>::Type PL4;
405 typedef typename LocVarType<P5>::Type PL5;
406 typedef typename Func::memFunPtr memFunPtr;
410 memFunc5(T * pobj, memFunPtr pfunc):m_pfunc(pfunc),m_pobj(pobj){};
411 virtual int operator()(
const QValueVector<QVariant> & parms, QString & res, QString & err)
413 if (parms.size()!=arity)
415 err=QString(
"Number of provided parameters doesn't match function definition");
418 PL1 p1=fromQVariant<PL1>(parms[0]);
419 PL2 p2=fromQVariant<PL2>(parms[1]);
420 PL3 p3=fromQVariant<PL3>(parms[2]);
421 PL4 p4=fromQVariant<PL4>(parms[3]);
422 PL5 p5=fromQVariant<PL5>(parms[4]);
423 res=toString<R>((m_pobj->*m_pfunc)(p1,p2,p3,p4,p5));
434 virtual int operator()(
const QValueVector<QVariant> & , QString & )
445 template <
class T,
class FT=NonConstProc0<T> >
448 typedef typename FT::Type memProcPtr;
452 memProc0(T * pobj, memProcPtr pproc):m_pobj(pobj),m_pproc(pproc){};
453 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
455 if (parms.size()!=arity)
457 err=QString(
"Number of provided parameters doesn't match function definition");
460 (m_pobj->*m_pproc)();
469 template <
class T,
class P1>
472 typedef void (T::*memProcPtr)(P1);
473 typedef typename LocVarType<P1>::Type PL1;
477 memProc1(T * pobj, memProcPtr pproc):m_pobj(pobj),m_pproc(pproc){};
478 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
480 if (parms.size()!=arity)
482 err=QString(
"Number of provided parameters doesn't match function definition");
485 PL1 p1=fromQVariant<PL1>(parms[0]);
486 (m_pobj->*m_pproc)(p1);
495 template <
class T,
class P1,
class P2>
498 typedef void (T::*memProcPtr)(P1,P2);
499 typedef typename LocVarType<P1>::Type PL1;
500 typedef typename LocVarType<P2>::Type PL2;
504 memProc2(T * pobj, memProcPtr pproc):m_pproc(pproc),m_pobj(pobj){};
505 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
507 if (parms.size()!=arity)
509 err=QString(
"Number of provided parameters doesn't match function definition");
512 PL1 p1=fromQVariant<PL1>(parms[0]);
513 PL2 p2=fromQVariant<PL2>(parms[1]);
514 (m_pobj->*m_pproc)(p1,p2);
523 template <
class T,
class P1,
class P2,
class P3>
526 typedef void (T::*memProcPtr)(P1,P2,P3);
527 typedef typename LocVarType<P1>::Type PL1;
528 typedef typename LocVarType<P2>::Type PL2;
529 typedef typename LocVarType<P3>::Type PL3;
533 memProc3(T * pobj, memProcPtr pproc):m_pproc(pproc),m_pobj(pobj){};
534 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
536 if (parms.size()!=arity)
538 err=QString(
"Number of provided parameters doesn't match function definition");
541 PL1 p1=fromQVariant<PL1>(parms[0]);
542 PL2 p2=fromQVariant<PL2>(parms[1]);
543 PL3 p3=fromQVariant<PL3>(parms[2]);
544 (m_pobj->*m_pproc)(p1,p2,p3);
553 template <
class T,
class P1,
class P2,
class P3,
class P4>
556 typedef void (T::*memProcPtr)(P1,P2,P3,P4);
557 typedef typename LocVarType<P1>::Type PL1;
558 typedef typename LocVarType<P2>::Type PL2;
559 typedef typename LocVarType<P3>::Type PL3;
560 typedef typename LocVarType<P4>::Type PL4;
564 memProc4(T * pobj, memProcPtr pproc):m_pproc(pproc),m_pobj(pobj){};
565 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
567 if (parms.size()!=arity)
569 err=QString(
"Number of provided parameters doesn't match function definition");
572 PL1 p1=fromQVariant<PL1>(parms[0]);
573 PL2 p2=fromQVariant<PL2>(parms[1]);
574 PL3 p3=fromQVariant<PL3>(parms[2]);
575 PL4 p4=fromQVariant<PL4>(parms[3]);
576 (m_pobj->*m_pproc)(p1,p2,p3,p4);
585 template <
class T,
class P1,
class P2,
class P3,
class P4,
class P5>
588 typedef void (T::*memProcPtr)(P1,P2,P3,P4,P5);
589 typedef typename LocVarType<P1>::Type PL1;
590 typedef typename LocVarType<P2>::Type PL2;
591 typedef typename LocVarType<P3>::Type PL3;
592 typedef typename LocVarType<P4>::Type PL4;
593 typedef typename LocVarType<P5>::Type PL5;
597 memProc5(T * pobj, memProcPtr pproc):m_pproc(pproc),m_pobj(pobj){};
598 virtual int operator()(
const QValueVector<QVariant> & parms, QString & err)
600 if (parms.size()!=arity)
602 err=QString(
"Number of provided parameters doesn't match function definition");
605 PL1 p1=fromQVariant<PL1>(parms[0]);
606 PL2 p2=fromQVariant<PL2>(parms[1]);
607 PL3 p3=fromQVariant<PL3>(parms[2]);
608 PL4 p4=fromQVariant<PL4>(parms[3]);
609 PL5 p5=fromQVariant<PL5>(parms[4]);
610 (m_pobj->*m_pproc)(p1,p2,p3,p4,p5);