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