2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 %ignore *::Application(Internal::Adaptor::Application*);
19 %ignore *::DragAndDropDetector(Internal::Adaptor::DragAndDropDetector*);
20 %ignore *::Timer(Internal::Adaptor::Timer*);
21 %ignore *::Window(Internal::Adaptor::Window*);
23 %rename(StyleChangeType) Dali::StyleChange::Type;
25 %include <dali/public-api/adaptor-framework/style-change.h>
26 %include <dali/public-api/adaptor-framework/timer.h>
27 %include <dali/devel-api/adaptor-framework/drag-and-drop-detector.h>
28 %include <dali/public-api/adaptor-framework/window.h>
30 #if defined(SWIGCSHARP)
32 // %include <arrays_csharp.i>
33 // CSHARP_ARRAYS(char **, string)
34 // %typemap(imtype, inattributes="[global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.LPArray, SizeParamIndex=0, ArraySubType=global::System.Runtime.InteropServices.UnmanagedType.LPStr)]") char **INPUT[] "string[]"
35 // %apply int *INPUT { int *argc };
36 // %apply char **INPUT[] { char **argv[] };
39 // keep argcs and argv so they're always available to DALi
44 // Temporary hack to generate argv. Todo... support conversions from the C# strings[] in the argv that is generated below
46 %typemap(in) ( int* argc, char **argv[] ) {
48 // Todo generate argv data from the C# args
49 char **array; // two dimensional array
50 int numStrings = 1; // number of strings
51 int stringLength = 30; // max string length.
52 array = (char **)malloc( (numStrings + 1 )* sizeof(char *) );
55 // allocate the string data
56 for( int i=0; i < numStrings; i++)
58 array[i]=(char *)malloc( stringLength * sizeof(char *) );
60 array[ numStrings ] = NULL; // we allocated +1 for hold the NULL part
62 strcpy( array[0], "dali-csharp-app");
68 // add interop services to the file
69 //%typemap(csimports) Dali::Application "using System.Runtime.InteropServices;"
71 %csmethodmodifiers Dali::Application::New() "
73 * Outer::outer_method(int)
77 %typemap(cscode) Dali::Application %{
79 private static Application instance; // singleton
81 public delegate void InitDelegate();
83 public delegate void TerminateDelegate();
85 public delegate void PauseDelegate();
87 public delegate void ResumeDelegate();
89 public delegate void ResizeDelegate();
91 public delegate void AppControlDelegate();
93 public delegate void LanguageChangedDelegate();
95 public delegate void RegionChangedDelegate();
97 public delegate void BatteryLowDelegate();
99 public delegate void MemoryLowDelegate();
101 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
102 internal delegate void InitDelegateInternal();
104 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
105 internal delegate void TerminateDelegateInternal();
107 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
108 internal delegate void PauseDelegateInternal();
110 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
111 internal delegate void ResumeDelegateInternal();
113 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
114 internal delegate void ResizeDelegateInternal();
116 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
117 internal delegate void AppControlDelegateInternal();
119 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
120 internal delegate void LanguageChangedDelegateInternal();
122 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
123 internal delegate void RegionChangedDelegateInternal();
125 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
126 internal delegate void BatteryLowDelegateInternal();
128 [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)]
129 internal delegate void MemoryLowDelegateInternal();
131 static void Initialize()
133 // instance.InitDelegate();
136 public static Application ApplicationFromPtr(global::System.IntPtr cPtr) {
137 Application ret = new Application(cPtr, false);
138 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
142 internal void SetupDelegates() {
143 InitDelegateInternal initializeCallback = new InitDelegateInternal( Initialize );
144 System.Console.WriteLine( "InitSignal connection count");
146 this.InitSignal().Connect( initializeCallback );
147 //Console.WriteLine( "InitSignal connection count = " + app.InitSignal().GetConnectionCount() );
150 public static Application NewApplication() {
151 Application ret = New(1);
152 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
154 // we've got an application now connect the signals
155 ret.SetupDelegates();
163 %typemap(in) ( int* argc, char **argv[] ) {
165 // Todo generate argv data from the C# args
166 char **array; // two dimensional array
167 int numStrings = 1; // number of strings
168 int stringLength = 30; // max string length.
169 array = (char **)malloc( (numStrings + 1 )* sizeof(char *) );
172 // allocate the string data
173 for( int i=0; i < numStrings; i++)
175 array[i]=(char *)malloc( stringLength * sizeof(char *) );
177 array[ numStrings ] = NULL; // we allocated +1 for hold the NULL part
179 strcpy( array[0], "dali-csharp-app");
185 %apply int* INPUT { int* argc };
189 %include <dali/public-api/adaptor-framework/application.h>
191 %template(ApplicationSignal) Dali::Signal<void(Dali::Application&)>;
192 %template(ApplicationControlSignal) Dali::Signal<void(Dali::Application&, void*)>;
193 %template(TimerSignalType) Dali::Signal<bool()>;
196 // Application specialisation
197 // Macro to convert from a void * callback to a DALi C# object