Store weak reference of C# object in the view registry to make the object garbage...
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / manual / csharp / ViewWrapper.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 namespace Dali
19 {
20     public class ViewWrapper : View
21     {
22         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
23         protected ViewWrapperImpl viewWrapperImpl;
24
25         internal ViewWrapper(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicManualPINVOKE.ViewWrapper_SWIGUpcast(cPtr), cMemoryOwn)
26         {
27             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
28         }
29
30         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ViewWrapper obj)
31         {
32             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
33         }
34
35         ~ViewWrapper()
36         {
37             Dispose();
38         }
39
40         public override void Dispose()
41         {
42             lock(this)
43             {
44                 if (swigCPtr.Handle != global::System.IntPtr.Zero)
45                 {
46                     if (swigCMemOwn)
47                     {
48                         swigCMemOwn = false;
49                         NDalicManualPINVOKE.delete_ViewWrapper(swigCPtr);
50                     }
51                     swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
52                 }
53                 global::System.GC.SuppressFinalize(this);
54                 base.Dispose();
55             }
56         }
57
58         public ViewWrapper (string typeName, ViewWrapperImpl implementation) : this (NDalicManualPINVOKE.ViewWrapper_New(typeName, ViewWrapperImpl.getCPtr(implementation)), true)
59         {
60             viewWrapperImpl = implementation;
61             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
62         }
63
64         public ViewWrapper(ViewWrapper handle) : this(NDalicManualPINVOKE.new_ViewWrapper__SWIG_1(ViewWrapper.getCPtr(handle)), true)
65         {
66             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
67         }
68
69         public ViewWrapper Assign(ViewWrapper handle)
70         {
71             ViewWrapper ret = new ViewWrapper(NDalicManualPINVOKE.ViewWrapper_Assign(swigCPtr, ViewWrapper.getCPtr(handle)), false);
72             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
73             return ret;
74         }
75
76         public new static ViewWrapper DownCast(BaseHandle handle)
77         {
78             ViewWrapper ret = new ViewWrapper(NDalicManualPINVOKE.ViewWrapper_DownCast(BaseHandle.getCPtr(handle)), true);
79             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
80             return ret;
81         }
82     }
83 }