summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordongsug song <dongsug.song@samsung.com>2017-10-18 01:04:25 +0000
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>2017-10-18 01:04:26 +0000
commitc82c658dc381bc11cc6fb778640ebae505c890df (patch)
tree7efc2a4fc55a3619cca1d2ef1c5ba76431273ae9
parent8689cd895ee6c87b8f26365f26cb7a14e866ce70 (diff)
parentb2bd060f6342e3fbee533b2a3ecb044318a944d0 (diff)
downloadnui-c82c658dc381bc11cc6fb778640ebae505c890df.tar.gz
nui-c82c658dc381bc11cc6fb778640ebae505c890df.tar.bz2
nui-c82c658dc381bc11cc6fb778640ebae505c890df.zip
Merge "[4.0] Update LanguageChangedSignal and KeyboardResizedSignal for ImfManager" into tizen_4.0
-rwxr-xr-xTizen.NUI/src/internal/KeyboardResizedSignalType.cs186
-rwxr-xr-xTizen.NUI/src/internal/LanguageChangedSignalType.cs185
-rwxr-xr-xTizen.NUI/src/internal/ManualPINVOKE.cs42
-rwxr-xr-xTizen.NUI/src/public/ImfManager.cs64
4 files changed, 463 insertions, 14 deletions
diff --git a/Tizen.NUI/src/internal/KeyboardResizedSignalType.cs b/Tizen.NUI/src/internal/KeyboardResizedSignalType.cs
new file mode 100755
index 0000000..e91a505
--- /dev/null
+++ b/Tizen.NUI/src/internal/KeyboardResizedSignalType.cs
@@ -0,0 +1,186 @@
+/*
+ * Copyright(c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+
+namespace Tizen.NUI
+{
+ /// <summary>
+ /// Please do not use! this will be deprecated
+ /// </summary>
+ [Obsolete("Please do not use! this will be internal")]
+ public class KeyboardResizedSignalType : global::System.IDisposable
+ {
+ private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+ protected bool swigCMemOwn;
+
+ internal KeyboardResizedSignalType(global::System.IntPtr cPtr, bool cMemoryOwn)
+ {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ }
+
+ internal static global::System.Runtime.InteropServices.HandleRef getCPtr(KeyboardResizedSignalType obj)
+ {
+ return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+ }
+
+ //A Flag to check who called Dispose(). (By User or DisposeQueue)
+ private bool isDisposeQueued = false;
+ /// <summary>
+ /// A Flat to check if it is already disposed.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ protected bool disposed = false;
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ ~KeyboardResizedSignalType()
+ {
+ if (!isDisposeQueued)
+ {
+ isDisposeQueued = true;
+ DisposeQueue.Instance.Add(this);
+ }
+ }
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ public void Dispose()
+ {
+ //Throw excpetion if Dispose() is called in separate thread.
+ if (!Window.IsInstalled())
+ {
+ throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
+ }
+
+ if (isDisposeQueued)
+ {
+ Dispose(DisposeTypes.Implicit);
+ }
+ else
+ {
+ Dispose(DisposeTypes.Explicit);
+ System.GC.SuppressFinalize(this);
+ }
+ }
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ protected virtual void Dispose(DisposeTypes type)
+ {
+ if (disposed)
+ {
+ return;
+ }
+
+ if (type == DisposeTypes.Explicit)
+ {
+ //Called by User
+ //Release your own managed resources here.
+ //You should release all of your own disposable objects here.
+
+ }
+
+ //Release your own unmanaged resources here.
+ //You should not access any managed member here except static instance.
+ //because the execution order of Finalizes is non-deterministic.
+
+ if (swigCPtr.Handle != global::System.IntPtr.Zero)
+ {
+ if (swigCMemOwn)
+ {
+ swigCMemOwn = false;
+ NDalicManualPINVOKE.delete_KeyboardResizedSignalType(swigCPtr);
+ }
+ swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+ }
+
+ disposed = true;
+ }
+
+ /// <summary>
+ /// Queries whether there are any connected slots.
+ /// </summary>
+ /// <returns>True if there are any slots connected to the signal</returns>
+ public bool Empty()
+ {
+ bool ret = NDalicManualPINVOKE.KeyboardResizedSignalType_Empty(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Queries the number of slots.
+ /// </summary>
+ /// <returns>The number of slots connected to this signal</returns>
+ public uint GetConnectionCount()
+ {
+ uint ret = NDalicManualPINVOKE.KeyboardResizedSignalType_GetConnectionCount(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Connects a function.
+ /// </summary>
+ /// <param name="func">The function to connect</param>
+ public void Connect(System.Delegate func)
+ {
+ System.IntPtr ip = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(func);
+ {
+ NDalicManualPINVOKE.KeyboardResizedSignalType_Connect(swigCPtr, new System.Runtime.InteropServices.HandleRef(this, ip));
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ /// <summary>
+ /// Disconnects a function.
+ /// </summary>
+ /// <param name="func">The function to disconnect</param>
+ public void Disconnect(System.Delegate func)
+ {
+ System.IntPtr ip = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(func);
+ {
+ NDalicManualPINVOKE.KeyboardResizedSignalType_Disconnect(swigCPtr, new System.Runtime.InteropServices.HandleRef(this, ip));
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ /// <summary>
+ /// Connects a member function.
+ /// </summary>
+ /// <param name="arg">The member function to connect</param>
+ public void Emit(int arg)
+ {
+ NDalicManualPINVOKE.KeyboardResizedSignalType_Emit(swigCPtr, arg);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ /// <summary>
+ /// The contructor.
+ /// </summary>
+ public KeyboardResizedSignalType() : this(NDalicManualPINVOKE.new_KeyboardResizedSignalType(), true)
+ {
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ }
+
+}
diff --git a/Tizen.NUI/src/internal/LanguageChangedSignalType.cs b/Tizen.NUI/src/internal/LanguageChangedSignalType.cs
new file mode 100755
index 0000000..77c0c7e
--- /dev/null
+++ b/Tizen.NUI/src/internal/LanguageChangedSignalType.cs
@@ -0,0 +1,185 @@
+/*
+ * Copyright(c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+
+namespace Tizen.NUI
+{
+ /// <summary>
+ /// Please do not use! this will be deprecated
+ /// </summary>
+ [Obsolete("Please do not use! this will be internal")]
+ public class LanguageChangedSignalType : global::System.IDisposable
+ {
+ private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+ protected bool swigCMemOwn;
+
+ internal LanguageChangedSignalType(global::System.IntPtr cPtr, bool cMemoryOwn)
+ {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ }
+
+ internal static global::System.Runtime.InteropServices.HandleRef getCPtr(LanguageChangedSignalType obj)
+ {
+ return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+ }
+
+ //A Flag to check who called Dispose(). (By User or DisposeQueue)
+ private bool isDisposeQueued = false;
+ /// <summary>
+ /// A Flat to check if it is already disposed.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ protected bool disposed = false;
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ ~LanguageChangedSignalType()
+ {
+ if (!isDisposeQueued)
+ {
+ isDisposeQueued = true;
+ DisposeQueue.Instance.Add(this);
+ }
+ }
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ public void Dispose()
+ {
+ //Throw excpetion if Dispose() is called in separate thread.
+ if (!Window.IsInstalled())
+ {
+ throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
+ }
+
+ if (isDisposeQueued)
+ {
+ Dispose(DisposeTypes.Implicit);
+ }
+ else
+ {
+ Dispose(DisposeTypes.Explicit);
+ System.GC.SuppressFinalize(this);
+ }
+ }
+
+ /// <summary>
+ /// Dispose
+ /// </summary>
+ protected virtual void Dispose(DisposeTypes type)
+ {
+ if (disposed)
+ {
+ return;
+ }
+
+ if (type == DisposeTypes.Explicit)
+ {
+ //Called by User
+ //Release your own managed resources here.
+ //You should release all of your own disposable objects here.
+
+ }
+
+ //Release your own unmanaged resources here.
+ //You should not access any managed member here except static instance.
+ //because the execution order of Finalizes is non-deterministic.
+
+ if (swigCPtr.Handle != global::System.IntPtr.Zero)
+ {
+ if (swigCMemOwn)
+ {
+ swigCMemOwn = false;
+ NDalicManualPINVOKE.delete_LanguageChangedSignalType(swigCPtr);
+ }
+ swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+ }
+
+ disposed = true;
+ }
+
+ /// <summary>
+ /// Queries whether there are any connected slots.
+ /// </summary>
+ /// <returns>True if there are any slots connected to the signal</returns>
+ public bool Empty()
+ {
+ bool ret = NDalicManualPINVOKE.LanguageChangedSignalType_Empty(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Queries the number of slots.
+ /// </summary>
+ /// <returns>The number of slots connected to this signal</returns>
+ public uint GetConnectionCount()
+ {
+ uint ret = NDalicManualPINVOKE.LanguageChangedSignalType_GetConnectionCount(swigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
+ /// Connects a member function.
+ /// </summary>
+ /// <param name="func">The member function to connect</param>
+ public void Connect(System.Delegate func)
+ {
+ System.IntPtr ip = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(func);
+ {
+ NDalicManualPINVOKE.LanguageChangedSignalType_Connect(swigCPtr, new System.Runtime.InteropServices.HandleRef(this, ip));
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ /// <summary>
+ /// Disconnects a function.
+ /// </summary>
+ /// <param name="func">The function to disconnect</param>
+ public void Disconnect(System.Delegate func)
+ {
+ System.IntPtr ip = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(func);
+ {
+ NDalicManualPINVOKE.LanguageChangedSignalType_Disconnect(swigCPtr, new System.Runtime.InteropServices.HandleRef(this, ip));
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+ }
+
+ /// <summary>
+ /// Emits the signal.
+ /// </summary>
+ public void Emit(int arg)
+ {
+ NDalicManualPINVOKE.LanguageChangedSignalType_Emit(swigCPtr, arg);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ /// <summary>
+ /// The contructor.
+ /// </summary>
+ public LanguageChangedSignalType() : this(NDalicManualPINVOKE.new_LanguageChangedSignalType(), true)
+ {
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
+
+ }
+
+}
diff --git a/Tizen.NUI/src/internal/ManualPINVOKE.cs b/Tizen.NUI/src/internal/ManualPINVOKE.cs
index aff59c8..b590137 100755
--- a/Tizen.NUI/src/internal/ManualPINVOKE.cs
+++ b/Tizen.NUI/src/internal/ManualPINVOKE.cs
@@ -577,6 +577,48 @@ namespace Tizen.NUI
[global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_delete_KeyboardTypeSignalType")]
public static extern void delete_KeyboardTypeSignalType(global::System.Runtime.InteropServices.HandleRef jarg1);
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_LanguageChangedSignalType_Empty")]
+ public static extern bool LanguageChangedSignalType_Empty(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_LanguageChangedSignalType_GetConnectionCount")]
+ public static extern uint LanguageChangedSignalType_GetConnectionCount(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_LanguageChangedSignalType_Connect")]
+ public static extern void LanguageChangedSignalType_Connect(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_LanguageChangedSignalType_Disconnect")]
+ public static extern void LanguageChangedSignalType_Disconnect(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_LanguageChangedSignalType_Emit")]
+ public static extern void LanguageChangedSignalType_Emit(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_new_LanguageChangedSignalType")]
+ public static extern global::System.IntPtr new_LanguageChangedSignalType();
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_delete_LanguageChangedSignalType")]
+ public static extern void delete_LanguageChangedSignalType(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_KeyboardResizedSignalType_Empty")]
+ public static extern bool KeyboardResizedSignalType_Empty(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_KeyboardResizedSignalType_GetConnectionCount")]
+ public static extern uint KeyboardResizedSignalType_GetConnectionCount(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_KeyboardResizedSignalType_Connect")]
+ public static extern void KeyboardResizedSignalType_Connect(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_KeyboardResizedSignalType_Disconnect")]
+ public static extern void KeyboardResizedSignalType_Disconnect(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_KeyboardResizedSignalType_Emit")]
+ public static extern void KeyboardResizedSignalType_Emit(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_new_KeyboardResizedSignalType")]
+ public static extern global::System.IntPtr new_KeyboardResizedSignalType();
+
+ [global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_delete_KeyboardResizedSignalType")]
+ public static extern void delete_KeyboardResizedSignalType(global::System.Runtime.InteropServices.HandleRef jarg1);
+
//////////////////////InputMethodOptions
[global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint="CSharp_Dali_new_InputMethodOptions")]
diff --git a/Tizen.NUI/src/public/ImfManager.cs b/Tizen.NUI/src/public/ImfManager.cs
index 2ae0294..7f4eeec 100755
--- a/Tizen.NUI/src/public/ImfManager.cs
+++ b/Tizen.NUI/src/public/ImfManager.cs
@@ -1358,14 +1358,29 @@ namespace Tizen.NUI
}
}
- private delegate void ResizedEventCallbackType();
+ /// <summary>
+ /// ImfManager resized event.
+ /// </summary>
+ public class ResizedEventArgs : EventArgs
+ {
+ /// <summary>
+ /// resized.
+ /// </summary>
+ public int Resized
+ {
+ get;
+ set;
+ }
+ }
+
+ private delegate void ResizedEventCallbackType(int resized);
private ResizedEventCallbackType _resizedEventCallback;
- private event EventHandler _resizedEventHandler;
+ private event EventHandler<ResizedEventArgs> _resizedEventHandler;
/// <summary>
/// ImfManager resized.
/// </summary>
- public event EventHandler Resized
+ public event EventHandler<ResizedEventArgs> Resized
{
add
{
@@ -1388,11 +1403,14 @@ namespace Tizen.NUI
}
}
- private void OnResized()
+ private void OnResized(int resized)
{
+ ResizedEventArgs e = new ResizedEventArgs();
+ e.Resized = resized;
+
if (_resizedEventHandler != null)
{
- _resizedEventHandler(this, null);
+ _resizedEventHandler(this, e);
}
}
@@ -1400,9 +1418,9 @@ namespace Tizen.NUI
/// ImfManager resized signal.
/// </summary>
[Obsolete("Please do not use! this will be internal")]
- public ImfVoidSignalType ResizedSignal()
+ public KeyboardResizedSignalType ResizedSignal()
{
- ImfVoidSignalType ret = new ImfVoidSignalType(NDalicManualPINVOKE.ImfManager_ResizedSignal(swigCPtr), false);
+ KeyboardResizedSignalType ret = new KeyboardResizedSignalType(NDalicManualPINVOKE.ImfManager_ResizedSignal(swigCPtr), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
@@ -1466,14 +1484,29 @@ namespace Tizen.NUI
}
}
- private delegate void LanguageChangedEventCallbackType();
+ /// <summary>
+ /// ImfManager language changed event args.
+ /// </summary>
+ public class LanguageChangedEventArgs : EventArgs
+ {
+ /// <summary>
+ /// language changed.
+ /// </summary>
+ public int LanguageChanged
+ {
+ get;
+ set;
+ }
+ }
+
+ private delegate void LanguageChangedEventCallbackType(int languageChanged);
private LanguageChangedEventCallbackType _languageChangedEventCallback;
- private event EventHandler _languageChangedEventHandler;
+ private event EventHandler<LanguageChangedEventArgs> _languageChangedEventHandler;
/// <summary>
/// ImfManager language changed.
/// </summary>
- public event EventHandler LanguageChanged
+ public event EventHandler<LanguageChangedEventArgs> LanguageChanged
{
add
{
@@ -1496,11 +1529,14 @@ namespace Tizen.NUI
}
}
- private void OnLanguageChanged()
+ private void OnLanguageChanged(int languageChanged)
{
+ LanguageChangedEventArgs e = new LanguageChangedEventArgs();
+ e.LanguageChanged = languageChanged;
+
if (_languageChangedEventHandler != null)
{
- _languageChangedEventHandler(this, null);
+ _languageChangedEventHandler(this, e);
}
}
@@ -1508,9 +1544,9 @@ namespace Tizen.NUI
/// ImfManager language changed signal.
/// </summary>
[Obsolete("Please do not use! this will be internal")]
- public ImfVoidSignalType LanguageChangedSignal()
+ public LanguageChangedSignalType LanguageChangedSignal()
{
- ImfVoidSignalType ret = new ImfVoidSignalType(NDalicManualPINVOKE.ImfManager_LanguageChangedSignal(swigCPtr), false);
+ LanguageChangedSignalType ret = new LanguageChangedSignalType(NDalicManualPINVOKE.ImfManager_LanguageChangedSignal(swigCPtr), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}