#ifndef ARGUMENT_H
#define ARGUMENT_H
#include <QMetaType>
#include <QVariant>
#include <QString>
#include "dal.h"
class BaseAdaptor;

class Argument
{
public:
    Argument( const BaseAdaptor * const db = 0,
              QString (BaseAdaptor::*call)( const QVariantList& )const = 0,
              const QVariantList &args = QVariantList() );
    virtual ~Argument(){;}
    operator QVariant() const;
    operator QString() const;
    virtual QString toString() const;
    virtual QVariant toVariant() const;
    QString exec() const;
    QVariantList args() const;
    int nativeTypeId() const;

    const BaseAdaptor *db() const;
protected:
    const BaseAdaptor *m_db;
    QString (BaseAdaptor::*m_call)(const QVariantList&)const;
    QVariantList m_args;
    int m_nativeTypeId;
};
Q_DECLARE_METATYPE(Argument)
#endif // ARGUMENT_H

