diff --git a/PenetrateBasic/cmds.h b/PenetrateBasic/cmds.h index c99ce09..3757410 100644 --- a/PenetrateBasic/cmds.h +++ b/PenetrateBasic/cmds.h @@ -10,12 +10,12 @@ namespace cmds { private: QString _name_value; dispatch::Dispatch* core = dispatch::Dispatch::unique(); + Inlet::CmdsImpl<(void*) func, Ret, Args...> _g_inst; public: Cmd(const QString& name) : _name_value(name) { - auto g_inst = Inlet::CmdsImpl<(void*) func, Ret, Args...>::unique(); - core->registerCmd(g_inst->address(), g_inst); - core->setCmdAlias(g_inst->address(), name); + core->registerCmd(_g_inst.address(), &_g_inst); + core->setCmdAlias(_g_inst.address(), name); } Ret operator()(Args... args) { @@ -31,12 +31,12 @@ namespace cmds { private: QString _name_value; dispatch::Dispatch* core = dispatch::Dispatch::unique(); + Inlet::EventsImpl<(void*) func, Ret, Args...> _g_inst; public: Event(const QString& name) : _name_value(name) { - auto g_inst = Inlet::EventsImpl<(void*)func, Ret, Args...>::unique(); - core->registerEvent(g_inst->address(), g_inst); - core->setEventAlias(g_inst->address(), name); + core->registerEvent(_g_inst.address(), &_g_inst); + core->setEventAlias(_g_inst.address(), name); } void operator()(Args... args) { diff --git a/PenetrateBasic/cmds_basic.h b/PenetrateBasic/cmds_basic.h index 257fedb..efc7a71 100644 --- a/PenetrateBasic/cmds_basic.h +++ b/PenetrateBasic/cmds_basic.h @@ -93,18 +93,10 @@ namespace Inlet { Callable _func = (Callable)addr; SignatureImpl _args_value; - static CmdsImpl* _unique_inst; - public: CmdsImpl() : _args_value() { } CmdsImpl(Args... args) :_args_value(args...) { } - static CmdsImpl* unique() { - if (!_unique_inst) - _unique_inst = new CmdsImpl(); - return _unique_inst; - } - Ret execute(Args... args) { _args_value = SignatureImpl(args...); return _args_value.execute(_func); @@ -132,25 +124,16 @@ namespace Inlet { _args_value.loadFrom(0, object); } }; - template CmdsImpl* CmdsImpl::_unique_inst = nullptr; template struct EventsImpl : public IRunbase { private: Callable _func = (Callable)addr; SignatureImpl _args_value; - static EventsImpl* _unique_inst; - public: EventsImpl() : _args_value() { } EventsImpl(Args... args) : _args_value(args...) { } - static EventsImpl* unique() { - if(!_unique_inst) - _unique_inst = new EventsImpl(); - return _unique_inst; - } - void execute(Args... args) { _args_value = SignatureImpl(args...); } @@ -167,5 +150,4 @@ namespace Inlet { _args_value.loadFrom(0, object); } }; - template EventsImpl* EventsImpl::_unique_inst = nullptr; } diff --git a/PenetrateBasic/main.cpp b/PenetrateBasic/main.cpp index 3f56aa4..c0d4f48 100644 --- a/PenetrateBasic/main.cpp +++ b/PenetrateBasic/main.cpp @@ -8,35 +8,35 @@ #include "validate_impl.h" #include "validate_depict.h" -//int vp(int c) { -// qDebug() << c; -// return c; -//} -//verify::T::Validate vp_check; -//auto args0 = vp_check.pos<0>() & new impls::Int32Limit(u8"Hello World", 0, 3); -// -//cmds::T::Cmd entry("hello"); -// -// -//namespace xproc { -// int xmp(int arg) { -// qDebug() << "xmp"; -// return 3; -// } -//} -//cmds::T::Cmd xvv("sfaf"); -// -//template<> void datas::dataSet(IDataObject& object, const QString& key, int value) { } -//template<> int datas::dataGet(IDataObject& object, const QString& key) { -// return 0; -//} +int vp(int c) { + qDebug() << c; + return c; +} +verify::T::Validate vp_check; +auto args0 = vp_check.pos<0>() & new impls::Int32Limit(u8"Hello World", 0, 3); + +cmds::T::Cmd entry("hello"); + + +namespace xproc { + int xmp(int arg) { + qDebug() << "xmp"; + return 3; + } +} +cmds::T::Cmd xvv("sfaf"); + +template<> void datas::dataSet(IDataObject& object, const QString& key, int value) { } +template<> int datas::dataGet(IDataObject& object, const QString& key) { + return 0; +} #include "logs_port.h" using namespace Inlet; int main(int argc, char* argv[]) { QCoreApplication a(argc, argv); - /*SignatureImpl v(3); + SignatureImpl v(3); v.execute(vp); Callable vptr = vp; @@ -52,7 +52,7 @@ int main(int argc, char* argv[]) { depict::ValidateDocObject doc; dispatch::Dispatch::unique()->getValidateDepict(doc); - qDebug().noquote() << doc.toText();*/ + qDebug().noquote() << doc.toText(); return a.exec(); }