[Mobies-commit] [commit] r3684 - UDM/trunk/include
ksmyth at redhat1.isis.vanderbilt.edu
ksmyth at redhat1.isis.vanderbilt.edu
Mon Mar 28 14:20:09 CDT 2011
Author: ksmyth
Date: Mon Mar 28 14:20:09 2011
New Revision: 3684
Log:
Simplify wrapping of UdmDiagram; just do it inside SmartDataNetwork
Modified:
UDM/trunk/include/Udm.i
Modified: UDM/trunk/include/Udm.i
==============================================================================
--- UDM/trunk/include/Udm.i Mon Mar 28 14:19:32 2011 (r3683)
+++ UDM/trunk/include/Udm.i Mon Mar 28 14:20:09 2011 (r3684)
@@ -70,6 +70,23 @@
CSHARP_NAMESPACE3(std, Udm.Native, vector<std::string>)
CSHARP_NAMESPACE3(std, Udm.Native, vector<__int64>)
+namespace Udm {
+%typemap(csdestruct_derived, methodname="Dispose", methodmodifiers="public") SmartDataNetwork {
+ lock(global::Udm.Native.UdmObject.GlobalLock) {
+ if (swigCPtr.Handle != IntPtr.Zero) {
+ if (swigCMemOwn) {
+ swigCMemOwn = false;
+ $imcall;
+ }
+ swigCPtr = new HandleRef(null, IntPtr.Zero);
+ }
+ GC.SuppressFinalize(this);
+ base.Dispose();
+ // this serves a dual purpose: Disposing the wrapper, and preventing the wrapper from being GCed before now
+ if (wrapper != null) wrapper.Dispose(); // this is the only modified line
+ }
+ }
+}
// Only part of ErrHand.h in Udm.i:
@@ -250,23 +267,36 @@
ret.init = udmdiagram_dummy;
return ret;
}
-class SDN_Wrapper {
+struct UdmDiagram_Wrapper {
Uml::Diagram uml_diagram;
UDM_NAMESPACE::UdmDiagram diagram;
- public:
- UDM_NAMESPACE::SmartDataNetwork dn;
- SDN_Wrapper(Uml::Diagram d) : uml_diagram(d), diagram(UdmDiagram_Wrap(¨_diagram)), dn(diagram) { }
+ UdmDiagram_Wrapper(Uml::Diagram d) : uml_diagram(d), diagram(UdmDiagram_Wrap(¨_diagram)) { }
};
%}
-class SDN_Wrapper {
+struct UdmDiagram_Wrapper {
Uml::Diagram uml_diagram;
UDM_NAMESPACE::UdmDiagram diagram;
- public:
- UDM_NAMESPACE::SmartDataNetwork dn;
- SDN_Wrapper(Uml::Diagram d) : uml_diagram(d), diagram(UdmDiagram_Wrap(¨_diagram)), dn(diagram) { }
+ UdmDiagram_Wrapper(Uml::Diagram d) : uml_diagram(d), diagram(UdmDiagram_Wrap(¨_diagram)) { }
};
+namespace UDM_NAMESPACE {
+%extend SmartDataNetwork {
+%typemap(cscode) UDM_NAMESPACE::SmartDataNetwork %{
+ UdmDiagram_Wrapper wrapper;
+ public SmartDataNetwork(UdmDiagram_Wrapper wrapper) : this(wrapper.diagram)
+ {
+ this.wrapper = wrapper;
+ }
+ public SmartDataNetwork(global::Udm.Native.SmartDataNetwork meta) : this(new global::Udm.Native.UdmDiagram_Wrapper(global::Udm.Native.Uml.Diagram.Cast(meta.GetRootObject())))
+ {
+ }
+ public SmartDataNetwork(global::Udm.Native.Uml.Diagram meta) : this(new global::Udm.Native.UdmDiagram_Wrapper(meta))
+ {
+ }
+%}
+}
+}
%import "Uml.i"
More information about the Mobies-commit
mailing list