From fbbba3f63db427c14e342afa6ba6e3db90b28e78 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期三, 26 六月 2024 11:33:12 +0800 Subject: [PATCH] update element and arg ptr --- jrj/xframe/wobject/xaserverarg.hpp | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-) diff --git a/jrj/xframe/wobject/xaserverarg.hpp b/jrj/xframe/wobject/xaserverarg.hpp index 5eb0ce1..30dade5 100644 --- a/jrj/xframe/wobject/xaserverarg.hpp +++ b/jrj/xframe/wobject/xaserverarg.hpp @@ -26,17 +26,45 @@ static int ReleaseInstance(IXAServerArg * pArgs); int SetXml(LPTSTR pStrXml); + public: + unsigned long AddRef_(); + unsigned long Release_(); }; }}; +using kxaserverarg = Hxsoft::XFrame::IXAServerArg; class xaserverarg : public xnative { public: + xaserverarg(kxaserverarg* impl) :xnative(impl) {} xaserverarg():xnative(Hxsoft::XFrame::IXAServerArg::CreateInstance()){} + xaserverarg(xaserverarg & rhs){ + ((kxaserverarg*)rhs.getNativePointer())->AddRef_(); + this->setNativePointer(rhs.GetNativePtr()); + } ~xaserverarg() { - Hxsoft::XFrame::IXAServerArg::ReleaseInstance((Hxsoft::XFrame::IXAServerArg*)getNativePointer()); + ((Hxsoft::XFrame::IXAServerArg*)getNativePointer())->Release_(); + //Hxsoft::XFrame::IXAServerArg::ReleaseInstance((Hxsoft::XFrame::IXAServerArg*)getNativePointer()); } +public: + kxaserverarg* GetKXAServerArg() + { + return (kxaserverarg*)this->GetNativePtr(); + } +public: + xaserverarg& operator =(xaserverarg& rhs) + { + return operator =(rhs.GetKXAServerArg()); + } + xaserverarg& operator =(kxaserverarg* rhs) + { + if (GetKXAServerArg())GetKXAServerArg()->Release_(); + if (rhs)rhs->AddRef_(); + SetNativePtr(rhs); + return *this; + } + public: /*int AddArg(string argname,double val,string typ=NULL)// alias "?AddArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_WNO@Z"; { @@ -133,7 +161,7 @@ xaserverargPtr() :arg(new xaserverarg) {} xaserverargPtr(LPARAM* val) :arg((xaserverarg*)val) {} xaserverargPtr(xaserverarg* val) :arg(val) {} - //xaserverargPtr(xaserverarg val) :arg(new xaserverarg(val)){} + xaserverargPtr(xaserverarg val) :arg(new xaserverarg(val)){} public: xaserverarg* value() { return arg; } public: -- Gitblit v1.9.3