diff --git a/PenetrateBasic/cmds_basic.h b/PenetrateBasic/cmds_basic.h index cd5fdc7..c5f7858 100644 --- a/PenetrateBasic/cmds_basic.h +++ b/PenetrateBasic/cmds_basic.h @@ -3,6 +3,7 @@ #include #include #include "data_types.h" +#include "validation.h" namespace Inlet { template struct SignatureImpl; @@ -15,8 +16,8 @@ namespace Inlet { } void result() const { } - void saveTo(int index, datas::IDataObject &object) { } - void loadFrom(int index, datas::IDataObject &object) { } + void saveTo(int index, datas::IDataObject& object) { } + void loadFrom(int index, datas::IDataObject& object) { } }; template struct SignatureImpl { private: @@ -34,10 +35,10 @@ namespace Inlet { return _result; } - void saveTo(int index, datas::IDataObject &object) { + void saveTo(int index, datas::IDataObject& object) { datas::dataSet(object, u8"RetValue", _result); } - void loadFrom(int index, datas::IDataObject &object) { + void loadFrom(int index, datas::IDataObject& object) { _result = datas::dataGet(object, u8"RetValue"); } }; @@ -50,6 +51,10 @@ namespace Inlet { SignatureImpl() : SignatureImpl(), _args_value(First()) { } SignatureImpl(First a0, Args... args) :SignatureImpl(args...), _args_value(a0) { } + First getArgs0() { + return _args_value; + } + Ret execute(std::function unit) { auto unit_wrap = [&](Args... args) { return unit(_args_value, args...); @@ -58,11 +63,11 @@ namespace Inlet { } - void saveTo(int index, datas::IDataObject &object) { + void saveTo(int index, datas::IDataObject& object) { datas::dataSet(object, QString(u8"Args_%1").arg(index), _args_value); SignatureImpl::saveTo(index + 1, object); } - void loadFrom(int index, datas::IDataObject &object) { + void loadFrom(int index, datas::IDataObject& object) { _args_value = datas::dataGet(object, QString(u8"Args_%1").arg(index)); SignatureImpl::loadFrom(index + 1, object); } @@ -118,10 +123,10 @@ namespace Inlet { void run() { _args_value.execute(_func); } - virtual void saveTo(datas::IDataObject &object) { + virtual void saveTo(datas::IDataObject& object) { _args_value.saveTo(0, object); } - virtual void loadFrom(datas::IDataObject &object) { + virtual void loadFrom(datas::IDataObject& object) { _args_value.loadFrom(0, object); } }; @@ -157,10 +162,10 @@ namespace Inlet { void run() { _args_value.execute(_func); } - virtual void saveTo(datas::IDataObject &object) { + virtual void saveTo(datas::IDataObject& object) { _args_value.saveTo(0, object); } - virtual void loadFrom(datas::IDataObject &object) { + virtual void loadFrom(datas::IDataObject& object) { _args_value.loadFrom(0, object); } }; diff --git a/PenetrateBasic/validation.h b/PenetrateBasic/validation.h index e3bfdc0..0f290cf 100644 --- a/PenetrateBasic/validation.h +++ b/PenetrateBasic/validation.h @@ -144,6 +144,10 @@ namespace validate { template struct ValidateHelper; template struct ValidateHelper : public ValidateTemplet { + quint64 address() const { + return (quint64) func; + } + template ArgsPosition pos() { return ArgsPosition(*this); }