pygments.rb 0.5.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/README.md +2 -0
  2. data/lexers +0 -0
  3. data/lib/pygments/version.rb +1 -1
  4. data/test/test_pygments.rb +1 -1
  5. data/vendor/custom_lexers/github.py +15 -9
  6. data/vendor/pygments-main/AUTHORS +12 -2
  7. data/vendor/pygments-main/CHANGES +52 -2
  8. data/vendor/pygments-main/REVISION +1 -1
  9. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
  10. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +67 -44
  11. data/vendor/pygments-main/pygmentize +1 -1
  12. data/vendor/pygments-main/pygments/filters/__init__.py +2 -2
  13. data/vendor/pygments-main/pygments/formatter.py +3 -0
  14. data/vendor/pygments-main/pygments/lexers/__init__.py +11 -0
  15. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +2880 -3124
  16. data/vendor/pygments-main/pygments/lexers/_mapping.py +30 -20
  17. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +1 -1
  18. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +206 -20
  19. data/vendor/pygments-main/pygments/lexers/agile.py +378 -5
  20. data/vendor/pygments-main/pygments/lexers/asm.py +2 -2
  21. data/vendor/pygments-main/pygments/lexers/compiled.py +235 -8
  22. data/vendor/pygments-main/pygments/lexers/dotnet.py +88 -47
  23. data/vendor/pygments-main/pygments/lexers/functional.py +195 -62
  24. data/vendor/pygments-main/pygments/lexers/github.py +15 -9
  25. data/vendor/pygments-main/pygments/lexers/jvm.py +14 -11
  26. data/vendor/pygments-main/pygments/lexers/math.py +284 -18
  27. data/vendor/pygments-main/pygments/lexers/other.py +132 -21
  28. data/vendor/pygments-main/pygments/lexers/shell.py +29 -15
  29. data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
  30. data/vendor/pygments-main/pygments/lexers/templates.py +8 -8
  31. data/vendor/pygments-main/pygments/lexers/text.py +59 -9
  32. data/vendor/pygments-main/pygments/lexers/web.py +832 -210
  33. data/vendor/pygments-main/pygments/modeline.py +40 -0
  34. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  35. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  36. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  37. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  38. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  39. data/vendor/pygments-main/tests/examplefiles/example.ceylon +29 -10
  40. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  41. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  42. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  43. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  44. data/vendor/pygments-main/tests/examplefiles/example.stan +86 -75
  45. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +40 -30
  46. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  47. data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
  48. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  49. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  50. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  51. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  52. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  53. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  54. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  55. data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
  56. data/vendor/pygments-main/tests/test_basic_api.py +3 -3
  57. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  58. metadata +21 -2
@@ -1,9 +1,25 @@
1
- /* This is an example in the Koka Language of the Garcia-Wachs algorithm */
2
- module garcia-wachs
1
+ // Koka language test module
3
2
 
4
- public fun main()
5
- {
6
- test().print
3
+ // This module implements the GarsiaWachs algorithm.
4
+ // It is an adaptation of the algorithm in ML as described by JeanChristophe Filli�tre:
5
+ // in ''A functional implementation of the GarsiaWachs algorithm. (functional pearl). ML workshop 2008, pages 91--96''.
6
+ // See: http://www.lri.fr/~filliatr/publis/gwWml08.pdf
7
+ //
8
+ // The algorithm is interesting since it uses mutable references shared between a list and tree but the
9
+ // side effects are not observable from outside. Koka automatically infers that the final algorithm is pure.
10
+ // Note: due to a current limitation in the divergence analysis, koka cannot yet infer that mutually recursive
11
+ // definitions in "insert" and "extract" are terminating and the final algorithm still has a divergence effect.
12
+ // However, koka does infer that no other effect (i.e. an exception due to a partial match) can occur.
13
+ module garcsiaWachs
14
+
15
+ import test = qualified std/flags
16
+
17
+ # pre processor test
18
+
19
+ public function main() {
20
+ wlist = Cons1(('a',3), [('b',2),('c',1),('d',4),('e',5)])
21
+ tree = wlist.garsiaWachs()
22
+ tree.show.println()
7
23
  }
8
24
 
9
25
  //----------------------------------------------------
@@ -14,10 +30,9 @@ public type tree<a> {
14
30
  con Node(left :tree<a>, right :tree<a>)
15
31
  }
16
32
 
17
- fun show( t : tree<char> ) : string
18
- {
33
+ function show( t : tree<char> ) : string {
19
34
  match(t) {
20
- Leaf(c) -> Core.show(c)
35
+ Leaf(c) -> core/show(c)
21
36
  Node(l,r) -> "Node(" + show(l) + "," + show(r) + ")"
22
37
  }
23
38
  }
@@ -30,23 +45,21 @@ public type list1<a> {
30
45
  Cons1( head : a, tail : list<a> )
31
46
  }
32
47
 
33
-
34
- fun map( xs, f ) {
48
+ function map( xs, f ) {
35
49
  val Cons1(y,ys) = xs
36
- return Cons1(f(y), Core.map(ys,f))
50
+ return Cons1(f(y), core/map(ys,f))
37
51
  }
38
52
 
39
- fun zip( xs :list1<a>, ys :list1<b> ) : list1<(a,b)> {
53
+ function zip( xs :list1<a>, ys :list1<b> ) : list1<(a,b)> {
40
54
  Cons1( (xs.head, ys.head), zip(xs.tail, ys.tail))
41
55
  }
42
56
 
43
57
 
44
-
45
58
  //----------------------------------------------------
46
59
  // Phase 1
47
60
  //----------------------------------------------------
48
61
 
49
- fun insert( after : list<(tree<a>,int)>, t : (tree<a>,int), before : list<(tree<a>,int)> ) : div tree<a>
62
+ function insert( after : list<(tree<a>,int)>, t : (tree<a>,int), before : list<(tree<a>,int)> ) : div tree<a>
50
63
  {
51
64
  match(before) {
52
65
  Nil -> extract( [], Cons1(t,after) )
@@ -60,7 +73,7 @@ fun insert( after : list<(tree<a>,int)>, t : (tree<a>,int), before : list<(tree<
60
73
  }
61
74
  }
62
75
 
63
- fun extract( before : list<(tree<a>,int)>, after : list1<(tree<a>,int)> ) : div tree<a>
76
+ function extract( before : list<(tree<a>,int)>, after : list1<(tree<a>,int)> ) : div tree<a>
64
77
  {
65
78
  val Cons1((t1,w1) as x, xs ) = after
66
79
  match(xs) {
@@ -75,25 +88,24 @@ fun extract( before : list<(tree<a>,int)>, after : list1<(tree<a>,int)> ) : div
75
88
  }
76
89
  }
77
90
 
78
-
79
-
80
- fun balance( xs : list1<(tree<a>,int)> ) : div tree<a>
81
- {
91
+ function balance( xs : list1<(tree<a>,int)> ) : div tree<a> {
82
92
  extract( [], xs )
83
93
  }
84
94
 
85
- fun mark( depth :int, t :tree<(a,ref<h,int>)> ) : <write<h>> ()
86
- {
95
+ //----------------------------------------------------
96
+ // Phase 2
97
+ //----------------------------------------------------
98
+
99
+ function mark( depth :int, t :tree<(a,ref<h,int>)> ) : <write<h>> () {
87
100
  match(t) {
88
101
  Leaf((_,d)) -> d := depth
89
102
  Node(l,r) -> { mark(depth+1,l); mark(depth+1,r) }
90
103
  }
91
104
  }
92
105
 
93
-
94
- fun build( depth :int, xs :list1<(a,ref<h,int>)> ) : <read<h>,div> (tree<a>,list<(a,ref<h,int>)>)
106
+ function build( depth :int, xs :list1<(a,ref<h,int>)> ) : <read<h>,div> (tree<a>,list<(a,ref<h,int>)>)
95
107
  {
96
- if (!xs.head.snd == depth) return (Leaf(xs.head.fst), xs.tail)
108
+ if (!(xs.head.snd) == depth) return (Leaf(xs.head.fst), xs.tail)
97
109
 
98
110
  l = build(depth+1, xs)
99
111
  match(l.snd) {
@@ -105,13 +117,11 @@ fun build( depth :int, xs :list1<(a,ref<h,int>)> ) : <read<h>,div> (tree<a>,list
105
117
  }
106
118
  }
107
119
 
108
- public fun test() {
109
- wlist = Cons1(('a',3), [('b',2),('c',1),('d',4),('e',5)])
110
- tree = wlist.garciawachs()
111
- tree.show()
112
- }
120
+ //----------------------------------------------------
121
+ // Main
122
+ //----------------------------------------------------
113
123
 
114
- public fun garciawachs( xs : list1<(a,int)> ) : div tree<a>
124
+ public function garsiaWachs( xs : list1<(a,int)> ) : div tree<a>
115
125
  {
116
126
  refs = xs.map(fst).map( fun(x) { (x, ref(0)) } )
117
127
  wleafs = zip( refs.map(Leaf), xs.map(snd) )
@@ -0,0 +1,22 @@
1
+ token pod_formatting_code {
2
+ $<code>=<[A..Z]>
3
+ '<' { $*POD_IN_FORMATTINGCODE := 1 }
4
+ $<content>=[ <!before '>'> <pod_string_character> ]+
5
+ '>' { $*POD_IN_FORMATTINGCODE := 0 }
6
+ }
7
+
8
+ token pod_string {
9
+ <pod_string_character>+
10
+ }
11
+
12
+ token something:sym«<» {
13
+ <!>
14
+ }
15
+
16
+ token name {
17
+ <!>
18
+ }
19
+
20
+ token comment:sym<#> {
21
+ '#' {} \N*
22
+ }
@@ -23,3 +23,10 @@ for (key in dictionary) {
23
23
  NSLog(@"English: %@, Latin: %@", key, [dictionary valueForKey:key]);
24
24
  }
25
25
 
26
+ // Literals
27
+ NSArray *a = @[ @"1", @"2" ];
28
+
29
+ NSDictionary *d = @{ @"key": @"value" };
30
+
31
+ NSNumber *n1 = @( 1 );
32
+ NSNumber *n2 = @( [a length] );
@@ -0,0 +1,4 @@
1
+ File "<stdin>", line 1
2
+ 1+
3
+ ^
4
+ SyntaxError: invalid syntax
@@ -0,0 +1,1329 @@
1
+ /* -----------------------------------------------------------------------------
2
+ * java.swg
3
+ *
4
+ * Java typemaps
5
+ * ----------------------------------------------------------------------------- */
6
+
7
+ %include <javahead.swg>
8
+
9
+ /* The jni, jtype and jstype typemaps work together and so there should be one of each.
10
+ * The jni typemap contains the JNI type used in the JNI (C/C++) code.
11
+ * The jtype typemap contains the Java type used in the JNI intermediary class.
12
+ * The jstype typemap contains the Java type used in the Java proxy classes, type wrapper classes and module class. */
13
+
14
+ /* Fragments */
15
+ %fragment("SWIG_PackData", "header") {
16
+ /* Pack binary data into a string */
17
+ SWIGINTERN char * SWIG_PackData(char *c, void *ptr, size_t sz) {
18
+ static const char hex[17] = "0123456789abcdef";
19
+ register const unsigned char *u = (unsigned char *) ptr;
20
+ register const unsigned char *eu = u + sz;
21
+ for (; u != eu; ++u) {
22
+ register unsigned char uu = *u;
23
+ *(c++) = hex[(uu & 0xf0) >> 4];
24
+ *(c++) = hex[uu & 0xf];
25
+ }
26
+ return c;
27
+ }
28
+ }
29
+
30
+ %fragment("SWIG_UnPackData", "header") {
31
+ /* Unpack binary data from a string */
32
+ SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
33
+ register unsigned char *u = (unsigned char *) ptr;
34
+ register const unsigned char *eu = u + sz;
35
+ for (; u != eu; ++u) {
36
+ register char d = *(c++);
37
+ register unsigned char uu;
38
+ if ((d >= '0') && (d <= '9'))
39
+ uu = ((d - '0') << 4);
40
+ else if ((d >= 'a') && (d <= 'f'))
41
+ uu = ((d - ('a'-10)) << 4);
42
+ else
43
+ return (char *) 0;
44
+ d = *(c++);
45
+ if ((d >= '0') && (d <= '9'))
46
+ uu |= (d - '0');
47
+ else if ((d >= 'a') && (d <= 'f'))
48
+ uu |= (d - ('a'-10));
49
+ else
50
+ return (char *) 0;
51
+ *u = uu;
52
+ }
53
+ return c;
54
+ }
55
+ }
56
+
57
+ /* Primitive types */
58
+ %typemap(jni) bool, const bool & "jboolean"
59
+ %typemap(jni) char, const char & "jchar"
60
+ %typemap(jni) signed char, const signed char & "jbyte"
61
+ %typemap(jni) unsigned char, const unsigned char & "jshort"
62
+ %typemap(jni) short, const short & "jshort"
63
+ %typemap(jni) unsigned short, const unsigned short & "jint"
64
+ %typemap(jni) int, const int & "jint"
65
+ %typemap(jni) unsigned int, const unsigned int & "jlong"
66
+ %typemap(jni) long, const long & "jint"
67
+ %typemap(jni) unsigned long, const unsigned long & "jlong"
68
+ %typemap(jni) long long, const long long & "jlong"
69
+ %typemap(jni) unsigned long long, const unsigned long long & "jobject"
70
+ %typemap(jni) float, const float & "jfloat"
71
+ %typemap(jni) double, const double & "jdouble"
72
+ %typemap(jni) void "void"
73
+
74
+ %typemap(jtype) bool, const bool & "boolean"
75
+ %typemap(jtype) char, const char & "char"
76
+ %typemap(jtype) signed char, const signed char & "byte"
77
+ %typemap(jtype) unsigned char, const unsigned char & "short"
78
+ %typemap(jtype) short, const short & "short"
79
+ %typemap(jtype) unsigned short, const unsigned short & "int"
80
+ %typemap(jtype) int, const int & "int"
81
+ %typemap(jtype) unsigned int, const unsigned int & "long"
82
+ %typemap(jtype) long, const long & "int"
83
+ %typemap(jtype) unsigned long, const unsigned long & "long"
84
+ %typemap(jtype) long long, const long long & "long"
85
+ %typemap(jtype) unsigned long long, const unsigned long long & "java.math.BigInteger"
86
+ %typemap(jtype) float, const float & "float"
87
+ %typemap(jtype) double, const double & "double"
88
+ %typemap(jtype) void "void"
89
+
90
+ %typemap(jstype) bool, const bool & "boolean"
91
+ %typemap(jstype) char, const char & "char"
92
+ %typemap(jstype) signed char, const signed char & "byte"
93
+ %typemap(jstype) unsigned char, const unsigned char & "short"
94
+ %typemap(jstype) short, const short & "short"
95
+ %typemap(jstype) unsigned short, const unsigned short & "int"
96
+ %typemap(jstype) int, const int & "int"
97
+ %typemap(jstype) unsigned int, const unsigned int & "long"
98
+ %typemap(jstype) long, const long & "int"
99
+ %typemap(jstype) unsigned long, const unsigned long & "long"
100
+ %typemap(jstype) long long, const long long & "long"
101
+ %typemap(jstype) unsigned long long, const unsigned long long & "java.math.BigInteger"
102
+ %typemap(jstype) float, const float & "float"
103
+ %typemap(jstype) double, const double & "double"
104
+ %typemap(jstype) void "void"
105
+
106
+ %typemap(jni) char *, char *&, char[ANY], char[] "jstring"
107
+ %typemap(jtype) char *, char *&, char[ANY], char[] "String"
108
+ %typemap(jstype) char *, char *&, char[ANY], char[] "String"
109
+
110
+ /* JNI types */
111
+ %typemap(jni) jboolean "jboolean"
112
+ %typemap(jni) jchar "jchar"
113
+ %typemap(jni) jbyte "jbyte"
114
+ %typemap(jni) jshort "jshort"
115
+ %typemap(jni) jint "jint"
116
+ %typemap(jni) jlong "jlong"
117
+ %typemap(jni) jfloat "jfloat"
118
+ %typemap(jni) jdouble "jdouble"
119
+ %typemap(jni) jstring "jstring"
120
+ %typemap(jni) jobject "jobject"
121
+ %typemap(jni) jbooleanArray "jbooleanArray"
122
+ %typemap(jni) jcharArray "jcharArray"
123
+ %typemap(jni) jbyteArray "jbyteArray"
124
+ %typemap(jni) jshortArray "jshortArray"
125
+ %typemap(jni) jintArray "jintArray"
126
+ %typemap(jni) jlongArray "jlongArray"
127
+ %typemap(jni) jfloatArray "jfloatArray"
128
+ %typemap(jni) jdoubleArray "jdoubleArray"
129
+ %typemap(jni) jobjectArray "jobjectArray"
130
+
131
+ %typemap(jtype) jboolean "boolean"
132
+ %typemap(jtype) jchar "char"
133
+ %typemap(jtype) jbyte "byte"
134
+ %typemap(jtype) jshort "short"
135
+ %typemap(jtype) jint "int"
136
+ %typemap(jtype) jlong "long"
137
+ %typemap(jtype) jfloat "float"
138
+ %typemap(jtype) jdouble "double"
139
+ %typemap(jtype) jstring "String"
140
+ %typemap(jtype) jobject "Object"
141
+ %typemap(jtype) jbooleanArray "boolean[]"
142
+ %typemap(jtype) jcharArray "char[]"
143
+ %typemap(jtype) jbyteArray "byte[]"
144
+ %typemap(jtype) jshortArray "short[]"
145
+ %typemap(jtype) jintArray "int[]"
146
+ %typemap(jtype) jlongArray "long[]"
147
+ %typemap(jtype) jfloatArray "float[]"
148
+ %typemap(jtype) jdoubleArray "double[]"
149
+ %typemap(jtype) jobjectArray "Object[]"
150
+
151
+ %typemap(jstype) jboolean "boolean"
152
+ %typemap(jstype) jchar "char"
153
+ %typemap(jstype) jbyte "byte"
154
+ %typemap(jstype) jshort "short"
155
+ %typemap(jstype) jint "int"
156
+ %typemap(jstype) jlong "long"
157
+ %typemap(jstype) jfloat "float"
158
+ %typemap(jstype) jdouble "double"
159
+ %typemap(jstype) jstring "String"
160
+ %typemap(jstype) jobject "Object"
161
+ %typemap(jstype) jbooleanArray "boolean[]"
162
+ %typemap(jstype) jcharArray "char[]"
163
+ %typemap(jstype) jbyteArray "byte[]"
164
+ %typemap(jstype) jshortArray "short[]"
165
+ %typemap(jstype) jintArray "int[]"
166
+ %typemap(jstype) jlongArray "long[]"
167
+ %typemap(jstype) jfloatArray "float[]"
168
+ %typemap(jstype) jdoubleArray "double[]"
169
+ %typemap(jstype) jobjectArray "Object[]"
170
+
171
+ /* Non primitive types */
172
+ %typemap(jni) SWIGTYPE "jlong"
173
+ %typemap(jtype) SWIGTYPE "long"
174
+ %typemap(jstype) SWIGTYPE "$&javaclassname"
175
+
176
+ %typemap(jni) SWIGTYPE [] "jlong"
177
+ %typemap(jtype) SWIGTYPE [] "long"
178
+ %typemap(jstype) SWIGTYPE [] "$javaclassname"
179
+
180
+ %typemap(jni) SWIGTYPE * "jlong"
181
+ %typemap(jtype) SWIGTYPE * "long"
182
+ %typemap(jstype) SWIGTYPE * "$javaclassname"
183
+
184
+ %typemap(jni) SWIGTYPE & "jlong"
185
+ %typemap(jtype) SWIGTYPE & "long"
186
+ %typemap(jstype) SWIGTYPE & "$javaclassname"
187
+
188
+ /* pointer to a class member */
189
+ %typemap(jni) SWIGTYPE (CLASS::*) "jstring"
190
+ %typemap(jtype) SWIGTYPE (CLASS::*) "String"
191
+ %typemap(jstype) SWIGTYPE (CLASS::*) "$javaclassname"
192
+
193
+ /* The following are the in, out, freearg, argout typemaps. These are the JNI code generating typemaps for converting from Java to C and visa versa. */
194
+
195
+ /* primitive types */
196
+ %typemap(in) bool
197
+ %{ $1 = $input ? true : false; %}
198
+
199
+ %typemap(directorout) bool
200
+ %{ $result = $input ? true : false; %}
201
+
202
+ %typemap(javadirectorin) bool "$jniinput"
203
+ %typemap(javadirectorout) bool "$javacall"
204
+
205
+ %typemap(in) char,
206
+ signed char,
207
+ unsigned char,
208
+ short,
209
+ unsigned short,
210
+ int,
211
+ unsigned int,
212
+ long,
213
+ unsigned long,
214
+ long long,
215
+ float,
216
+ double
217
+ %{ $1 = ($1_ltype)$input; %}
218
+
219
+ %typemap(directorout) char,
220
+ signed char,
221
+ unsigned char,
222
+ short,
223
+ unsigned short,
224
+ int,
225
+ unsigned int,
226
+ long,
227
+ unsigned long,
228
+ long long,
229
+ float,
230
+ double
231
+ %{ $result = ($1_ltype)$input; %}
232
+
233
+ %typemap(directorin, descriptor="Z") bool "$input = (jboolean) $1;"
234
+ %typemap(directorin, descriptor="C") char "$input = (jint) $1;"
235
+ %typemap(directorin, descriptor="B") signed char "$input = (jbyte) $1;"
236
+ %typemap(directorin, descriptor="S") unsigned char "$input = (jshort) $1;"
237
+ %typemap(directorin, descriptor="S") short "$input = (jshort) $1;"
238
+ %typemap(directorin, descriptor="I") unsigned short "$input = (jint) $1;"
239
+ %typemap(directorin, descriptor="I") int "$input = (jint) $1;"
240
+ %typemap(directorin, descriptor="J") unsigned int "$input = (jlong) $1;"
241
+ %typemap(directorin, descriptor="I") long "$input = (jint) $1;"
242
+ %typemap(directorin, descriptor="J") unsigned long "$input = (jlong) $1;"
243
+ %typemap(directorin, descriptor="J") long long "$input = (jlong) $1;"
244
+ %typemap(directorin, descriptor="F") float "$input = (jfloat) $1;"
245
+ %typemap(directorin, descriptor="D") double "$input = (jdouble) $1;"
246
+
247
+ %typemap(javadirectorin) char,
248
+ signed char,
249
+ unsigned char,
250
+ short,
251
+ unsigned short,
252
+ int,
253
+ unsigned int,
254
+ long,
255
+ unsigned long,
256
+ long long,
257
+ float,
258
+ double
259
+ "$jniinput"
260
+
261
+ %typemap(javadirectorout) char,
262
+ signed char,
263
+ unsigned char,
264
+ short,
265
+ unsigned short,
266
+ int,
267
+ unsigned int,
268
+ long,
269
+ unsigned long,
270
+ long long,
271
+ float,
272
+ double
273
+ "$javacall"
274
+
275
+ %typemap(out) bool %{ $result = (jboolean)$1; %}
276
+ %typemap(out) char %{ $result = (jchar)$1; %}
277
+ %typemap(out) signed char %{ $result = (jbyte)$1; %}
278
+ %typemap(out) unsigned char %{ $result = (jshort)$1; %}
279
+ %typemap(out) short %{ $result = (jshort)$1; %}
280
+ %typemap(out) unsigned short %{ $result = (jint)$1; %}
281
+ %typemap(out) int %{ $result = (jint)$1; %}
282
+ %typemap(out) unsigned int %{ $result = (jlong)$1; %}
283
+ %typemap(out) long %{ $result = (jint)$1; %}
284
+ %typemap(out) unsigned long %{ $result = (jlong)$1; %}
285
+ %typemap(out) long long %{ $result = (jlong)$1; %}
286
+ %typemap(out) float %{ $result = (jfloat)$1; %}
287
+ %typemap(out) double %{ $result = (jdouble)$1; %}
288
+
289
+ /* unsigned long long */
290
+ /* Convert from BigInteger using the toByteArray member function */
291
+ %typemap(in) unsigned long long {
292
+ jclass clazz;
293
+ jmethodID mid;
294
+ jbyteArray ba;
295
+ jbyte* bae;
296
+ jsize sz;
297
+ int i;
298
+
299
+ if (!$input) {
300
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null");
301
+ return $null;
302
+ }
303
+ clazz = JCALL1(GetObjectClass, jenv, $input);
304
+ mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B");
305
+ ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid);
306
+ bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
307
+ sz = JCALL1(GetArrayLength, jenv, ba);
308
+ $1 = 0;
309
+ for(i=0; i<sz; i++) {
310
+ $1 = ($1 << 8) | ($1_type)(unsigned char)bae[i];
311
+ }
312
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
313
+ }
314
+
315
+ %typemap(directorout) unsigned long long {
316
+ jclass clazz;
317
+ jmethodID mid;
318
+ jbyteArray ba;
319
+ jbyte* bae;
320
+ jsize sz;
321
+ int i;
322
+
323
+ if (!$input) {
324
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null");
325
+ return $null;
326
+ }
327
+ clazz = JCALL1(GetObjectClass, jenv, $input);
328
+ mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B");
329
+ ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid);
330
+ bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
331
+ sz = JCALL1(GetArrayLength, jenv, ba);
332
+ $result = 0;
333
+ for(i=0; i<sz; i++) {
334
+ $result = ($result << 8) | ($1_type)(unsigned char)bae[i];
335
+ }
336
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
337
+ }
338
+
339
+
340
+ /* Convert to BigInteger - byte array holds number in 2's complement big endian format */
341
+ %typemap(out) unsigned long long {
342
+ jbyteArray ba = JCALL1(NewByteArray, jenv, 9);
343
+ jbyte* bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
344
+ jclass clazz = JCALL1(FindClass, jenv, "java/math/BigInteger");
345
+ jmethodID mid = JCALL3(GetMethodID, jenv, clazz, "<init>", "([B)V");
346
+ jobject bigint;
347
+ int i;
348
+
349
+ bae[0] = 0;
350
+ for(i=1; i<9; i++ ) {
351
+ bae[i] = (jbyte)($1>>8*(8-i));
352
+ }
353
+
354
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
355
+ bigint = JCALL3(NewObject, jenv, clazz, mid, ba);
356
+ $result = bigint;
357
+ }
358
+
359
+ /* Convert to BigInteger (see out typemap) */
360
+ %typemap(directorin, descriptor="Ljava/math/BigInteger;") unsigned long long, const unsigned long long & {
361
+ jbyteArray ba = JCALL1(NewByteArray, jenv, 9);
362
+ jbyte* bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
363
+ jclass clazz = JCALL1(FindClass, jenv, "java/math/BigInteger");
364
+ jmethodID mid = JCALL3(GetMethodID, jenv, clazz, "<init>", "([B)V");
365
+ jobject bigint;
366
+ int swig_i;
367
+
368
+ bae[0] = 0;
369
+ for(swig_i=1; swig_i<9; swig_i++ ) {
370
+ bae[swig_i] = (jbyte)($1>>8*(8-swig_i));
371
+ }
372
+
373
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
374
+ bigint = JCALL3(NewObject, jenv, clazz, mid, ba);
375
+ $input = bigint;
376
+ }
377
+
378
+ %typemap(javadirectorin) unsigned long long "$jniinput"
379
+ %typemap(javadirectorout) unsigned long long "$javacall"
380
+
381
+ /* char * - treat as String */
382
+ %typemap(in, noblock=1) char * {
383
+ $1 = 0;
384
+ if ($input) {
385
+ $1 = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0);
386
+ if (!$1) return $null;
387
+ }
388
+ }
389
+
390
+ %typemap(directorout, noblock=1, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) char * {
391
+ $1 = 0;
392
+ if ($input) {
393
+ $result = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0);
394
+ if (!$result) return $null;
395
+ }
396
+ }
397
+
398
+ %typemap(directorin, descriptor="Ljava/lang/String;", noblock=1) char * {
399
+ $input = 0;
400
+ if ($1) {
401
+ $input = JCALL1(NewStringUTF, jenv, (const char *)$1);
402
+ if (!$input) return $null;
403
+ }
404
+ }
405
+
406
+ %typemap(freearg, noblock=1) char * { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); }
407
+ %typemap(out, noblock=1) char * { if ($1) $result = JCALL1(NewStringUTF, jenv, (const char *)$1); }
408
+ %typemap(javadirectorin) char * "$jniinput"
409
+ %typemap(javadirectorout) char * "$javacall"
410
+
411
+ /* char *& - treat as String */
412
+ %typemap(in, noblock=1) char *& ($*1_ltype temp = 0) {
413
+ $1 = 0;
414
+ if ($input) {
415
+ temp = ($*1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0);
416
+ if (!temp) return $null;
417
+ }
418
+ $1 = &temp;
419
+ }
420
+ %typemap(freearg, noblock=1) char *& { if ($1 && *$1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)*$1); }
421
+ %typemap(out, noblock=1) char *& { if (*$1) $result = JCALL1(NewStringUTF, jenv, (const char *)*$1); }
422
+
423
+ %typemap(out) void ""
424
+ %typemap(javadirectorin) void "$jniinput"
425
+ %typemap(javadirectorout) void "$javacall"
426
+ %typemap(directorin, descriptor="V") void ""
427
+
428
+ /* primitive types by reference */
429
+ %typemap(in) const bool & ($*1_ltype temp)
430
+ %{ temp = $input ? true : false;
431
+ $1 = &temp; %}
432
+
433
+ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const bool &
434
+ %{ static $*1_ltype temp;
435
+ temp = $input ? true : false;
436
+ $result = &temp; %}
437
+
438
+ %typemap(javadirectorin) const bool & "$jniinput"
439
+ %typemap(javadirectorout) const bool & "$javacall"
440
+
441
+ %typemap(in) const char & ($*1_ltype temp),
442
+ const signed char & ($*1_ltype temp),
443
+ const unsigned char & ($*1_ltype temp),
444
+ const short & ($*1_ltype temp),
445
+ const unsigned short & ($*1_ltype temp),
446
+ const int & ($*1_ltype temp),
447
+ const unsigned int & ($*1_ltype temp),
448
+ const long & ($*1_ltype temp),
449
+ const unsigned long & ($*1_ltype temp),
450
+ const long long & ($*1_ltype temp),
451
+ const float & ($*1_ltype temp),
452
+ const double & ($*1_ltype temp)
453
+ %{ temp = ($*1_ltype)$input;
454
+ $1 = &temp; %}
455
+
456
+ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const char &,
457
+ const signed char &,
458
+ const unsigned char &,
459
+ const short &,
460
+ const unsigned short &,
461
+ const int &,
462
+ const unsigned int &,
463
+ const long &,
464
+ const unsigned long &,
465
+ const long long &,
466
+ const float &,
467
+ const double &
468
+ %{ static $*1_ltype temp;
469
+ temp = ($*1_ltype)$input;
470
+ $result = &temp; %}
471
+
472
+ %typemap(directorin, descriptor="Z") const bool & "$input = (jboolean)$1;"
473
+ %typemap(directorin, descriptor="C") const char & "$input = (jchar)$1;"
474
+ %typemap(directorin, descriptor="B") const signed char & "$input = (jbyte)$1;"
475
+ %typemap(directorin, descriptor="S") const unsigned char & "$input = (jshort)$1;"
476
+ %typemap(directorin, descriptor="S") const short & "$input = (jshort)$1;"
477
+ %typemap(directorin, descriptor="I") const unsigned short & "$input = (jint)$1;"
478
+ %typemap(directorin, descriptor="I") const int & "$input = (jint)$1;"
479
+ %typemap(directorin, descriptor="J") const unsigned int & "$input = (jlong)$1;"
480
+ %typemap(directorin, descriptor="I") const long & "$input = (jint)$1;"
481
+ %typemap(directorin, descriptor="J") const unsigned long & "$input = (jlong)$1;"
482
+ %typemap(directorin, descriptor="J") const long long & "$input = (jlong)$1;"
483
+ %typemap(directorin, descriptor="F") const float & "$input = (jfloat)$1;"
484
+ %typemap(directorin, descriptor="D") const double & "$input = (jdouble)$1;"
485
+
486
+ %typemap(javadirectorin) const char & ($*1_ltype temp),
487
+ const signed char & ($*1_ltype temp),
488
+ const unsigned char & ($*1_ltype temp),
489
+ const short & ($*1_ltype temp),
490
+ const unsigned short & ($*1_ltype temp),
491
+ const int & ($*1_ltype temp),
492
+ const unsigned int & ($*1_ltype temp),
493
+ const long & ($*1_ltype temp),
494
+ const unsigned long & ($*1_ltype temp),
495
+ const long long & ($*1_ltype temp),
496
+ const float & ($*1_ltype temp),
497
+ const double & ($*1_ltype temp)
498
+ "$jniinput"
499
+
500
+ %typemap(javadirectorout) const char & ($*1_ltype temp),
501
+ const signed char & ($*1_ltype temp),
502
+ const unsigned char & ($*1_ltype temp),
503
+ const short & ($*1_ltype temp),
504
+ const unsigned short & ($*1_ltype temp),
505
+ const int & ($*1_ltype temp),
506
+ const unsigned int & ($*1_ltype temp),
507
+ const long & ($*1_ltype temp),
508
+ const unsigned long & ($*1_ltype temp),
509
+ const long long & ($*1_ltype temp),
510
+ const float & ($*1_ltype temp),
511
+ const double & ($*1_ltype temp)
512
+ "$javacall"
513
+
514
+
515
+ %typemap(out) const bool & %{ $result = (jboolean)*$1; %}
516
+ %typemap(out) const char & %{ $result = (jchar)*$1; %}
517
+ %typemap(out) const signed char & %{ $result = (jbyte)*$1; %}
518
+ %typemap(out) const unsigned char & %{ $result = (jshort)*$1; %}
519
+ %typemap(out) const short & %{ $result = (jshort)*$1; %}
520
+ %typemap(out) const unsigned short & %{ $result = (jint)*$1; %}
521
+ %typemap(out) const int & %{ $result = (jint)*$1; %}
522
+ %typemap(out) const unsigned int & %{ $result = (jlong)*$1; %}
523
+ %typemap(out) const long & %{ $result = (jint)*$1; %}
524
+ %typemap(out) const unsigned long & %{ $result = (jlong)*$1; %}
525
+ %typemap(out) const long long & %{ $result = (jlong)*$1; %}
526
+ %typemap(out) const float & %{ $result = (jfloat)*$1; %}
527
+ %typemap(out) const double & %{ $result = (jdouble)*$1; %}
528
+
529
+ /* const unsigned long long & */
530
+ /* Similar to unsigned long long */
531
+ %typemap(in) const unsigned long long & ($*1_ltype temp) {
532
+ jclass clazz;
533
+ jmethodID mid;
534
+ jbyteArray ba;
535
+ jbyte* bae;
536
+ jsize sz;
537
+ int i;
538
+
539
+ if (!$input) {
540
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null");
541
+ return $null;
542
+ }
543
+ clazz = JCALL1(GetObjectClass, jenv, $input);
544
+ mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B");
545
+ ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid);
546
+ bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
547
+ sz = JCALL1(GetArrayLength, jenv, ba);
548
+ $1 = &temp;
549
+ temp = 0;
550
+ for(i=0; i<sz; i++) {
551
+ temp = (temp << 8) | ($*1_ltype)(unsigned char)bae[i];
552
+ }
553
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
554
+ }
555
+
556
+ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const unsigned long long & {
557
+ static $*1_ltype temp;
558
+ jclass clazz;
559
+ jmethodID mid;
560
+ jbyteArray ba;
561
+ jbyte* bae;
562
+ jsize sz;
563
+ int i;
564
+
565
+ if (!$input) {
566
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null");
567
+ return $null;
568
+ }
569
+ clazz = JCALL1(GetObjectClass, jenv, $input);
570
+ mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B");
571
+ ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid);
572
+ bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
573
+ sz = JCALL1(GetArrayLength, jenv, ba);
574
+ $result = &temp;
575
+ temp = 0;
576
+ for(i=0; i<sz; i++) {
577
+ temp = (temp << 8) | ($*1_ltype)(unsigned char)bae[i];
578
+ }
579
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
580
+ }
581
+
582
+ %typemap(out) const unsigned long long & {
583
+ jbyteArray ba = JCALL1(NewByteArray, jenv, 9);
584
+ jbyte* bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
585
+ jclass clazz = JCALL1(FindClass, jenv, "java/math/BigInteger");
586
+ jmethodID mid = JCALL3(GetMethodID, jenv, clazz, "<init>", "([B)V");
587
+ jobject bigint;
588
+ int i;
589
+
590
+ bae[0] = 0;
591
+ for(i=1; i<9; i++ ) {
592
+ bae[i] = (jbyte)(*$1>>8*(8-i));
593
+ }
594
+
595
+ JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
596
+ bigint = JCALL3(NewObject, jenv, clazz, mid, ba);
597
+ $result = bigint;
598
+ }
599
+
600
+ %typemap(javadirectorin) const unsigned long long & "$jniinput"
601
+ %typemap(javadirectorout) const unsigned long long & "$javacall"
602
+
603
+ /* Default handling. Object passed by value. Convert to a pointer */
604
+ %typemap(in) SWIGTYPE ($&1_type argp)
605
+ %{ argp = *($&1_ltype*)&$input;
606
+ if (!argp) {
607
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type");
608
+ return $null;
609
+ }
610
+ $1 = *argp; %}
611
+
612
+ %typemap(directorout) SWIGTYPE ($&1_type argp)
613
+ %{ argp = *($&1_ltype*)&$input;
614
+ if (!argp) {
615
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Unexpected null return for type $1_type");
616
+ return $null;
617
+ }
618
+ $result = *argp; %}
619
+
620
+ %typemap(out) SWIGTYPE
621
+ #ifdef __cplusplus
622
+ %{ *($&1_ltype*)&$result = new $1_ltype((const $1_ltype &)$1); %}
623
+ #else
624
+ {
625
+ $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype));
626
+ memmove($1ptr, &$1, sizeof($1_type));
627
+ *($&1_ltype*)&$result = $1ptr;
628
+ }
629
+ #endif
630
+
631
+ %typemap(directorin,descriptor="L$packagepath/$&javaclassname;") SWIGTYPE
632
+ %{ $input = 0;
633
+ *(($&1_ltype*)&$input) = &$1; %}
634
+ %typemap(javadirectorin) SWIGTYPE "new $&javaclassname($jniinput, false)"
635
+ %typemap(javadirectorout) SWIGTYPE "$&javaclassname.getCPtr($javacall)"
636
+
637
+ /* Generic pointers and references */
638
+ %typemap(in) SWIGTYPE * %{ $1 = *($&1_ltype)&$input; %}
639
+ %typemap(in, fragment="SWIG_UnPackData") SWIGTYPE (CLASS::*) {
640
+ const char *temp = 0;
641
+ if ($input) {
642
+ temp = JCALL2(GetStringUTFChars, jenv, $input, 0);
643
+ if (!temp) return $null;
644
+ }
645
+ SWIG_UnpackData(temp, (void *)&$1, sizeof($1));
646
+ }
647
+ %typemap(in) SWIGTYPE & %{ $1 = *($&1_ltype)&$input;
648
+ if (!$1) {
649
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null");
650
+ return $null;
651
+ } %}
652
+ %typemap(out) SWIGTYPE *
653
+ %{ *($&1_ltype)&$result = $1; %}
654
+ %typemap(out, fragment="SWIG_PackData", noblock=1) SWIGTYPE (CLASS::*) {
655
+ char buf[128];
656
+ char *data = SWIG_PackData(buf, (void *)&$1, sizeof($1));
657
+ *data = '\0';
658
+ $result = JCALL1(NewStringUTF, jenv, buf);
659
+ }
660
+ %typemap(out) SWIGTYPE &
661
+ %{ *($&1_ltype)&$result = $1; %}
662
+
663
+ %typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE *
664
+ %{ $result = *($&1_ltype)&$input; %}
665
+ %typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE (CLASS::*)
666
+ %{ $result = *($&1_ltype)&$input; %}
667
+
668
+ %typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE *
669
+ %{ *(($&1_ltype)&$input) = ($1_ltype) $1; %}
670
+ %typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE (CLASS::*)
671
+ %{ *(($&1_ltype)&$input) = ($1_ltype) $1; %}
672
+
673
+ %typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE &
674
+ %{ if (!$input) {
675
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Unexpected null return for type $1_type");
676
+ return $null;
677
+ }
678
+ $result = *($&1_ltype)&$input; %}
679
+ %typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE &
680
+ %{ *($&1_ltype)&$input = ($1_ltype) &$1; %}
681
+
682
+ %typemap(javadirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*) "($jniinput == 0) ? null : new $javaclassname($jniinput, false)"
683
+ %typemap(javadirectorin) SWIGTYPE & "new $javaclassname($jniinput, false)"
684
+ %typemap(javadirectorout) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE & "$javaclassname.getCPtr($javacall)"
685
+
686
+ /* Default array handling */
687
+ %typemap(in) SWIGTYPE [] %{ $1 = *($&1_ltype)&$input; %}
688
+ %typemap(out) SWIGTYPE [] %{ *($&1_ltype)&$result = $1; %}
689
+ %typemap(freearg) SWIGTYPE [ANY], SWIGTYPE [] ""
690
+
691
+ /* char arrays - treat as String */
692
+ %typemap(in, noblock=1) char[ANY], char[] {
693
+ $1 = 0;
694
+ if ($input) {
695
+ $1 = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0);
696
+ if (!$1) return $null;
697
+ }
698
+ }
699
+
700
+ %typemap(directorout, noblock=1) char[ANY], char[] {
701
+ $1 = 0;
702
+ if ($input) {
703
+ $result = ($1_ltype)JCALL2(GetStringUTFChars, jenv, $input, 0);
704
+ if (!$result) return $null;
705
+ }
706
+ }
707
+
708
+ %typemap(directorin, descriptor="Ljava/lang/String;", noblock=1) char[ANY], char[] {
709
+ $input = 0;
710
+ if ($1) {
711
+ $input = JCALL1(NewStringUTF, jenv, (const char *)$1);
712
+ if (!$input) return $null;
713
+ }
714
+ }
715
+
716
+ %typemap(argout) char[ANY], char[] ""
717
+ %typemap(freearg, noblock=1) char[ANY], char[] { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); }
718
+ %typemap(out, noblock=1) char[ANY], char[] { if ($1) $result = JCALL1(NewStringUTF, jenv, (const char *)$1); }
719
+ %typemap(javadirectorin) char[ANY], char[] "$jniinput"
720
+ %typemap(javadirectorout) char[ANY], char[] "$javacall"
721
+
722
+ /* JNI types */
723
+ %typemap(in) jboolean,
724
+ jchar,
725
+ jbyte,
726
+ jshort,
727
+ jint,
728
+ jlong,
729
+ jfloat,
730
+ jdouble,
731
+ jstring,
732
+ jobject,
733
+ jbooleanArray,
734
+ jcharArray,
735
+ jbyteArray,
736
+ jshortArray,
737
+ jintArray,
738
+ jlongArray,
739
+ jfloatArray,
740
+ jdoubleArray,
741
+ jobjectArray
742
+ %{ $1 = $input; %}
743
+
744
+ %typemap(directorout) jboolean,
745
+ jchar,
746
+ jbyte,
747
+ jshort,
748
+ jint,
749
+ jlong,
750
+ jfloat,
751
+ jdouble,
752
+ jstring,
753
+ jobject,
754
+ jbooleanArray,
755
+ jcharArray,
756
+ jbyteArray,
757
+ jshortArray,
758
+ jintArray,
759
+ jlongArray,
760
+ jfloatArray,
761
+ jdoubleArray,
762
+ jobjectArray
763
+ %{ $result = $input; %}
764
+
765
+ %typemap(out) jboolean,
766
+ jchar,
767
+ jbyte,
768
+ jshort,
769
+ jint,
770
+ jlong,
771
+ jfloat,
772
+ jdouble,
773
+ jstring,
774
+ jobject,
775
+ jbooleanArray,
776
+ jcharArray,
777
+ jbyteArray,
778
+ jshortArray,
779
+ jintArray,
780
+ jlongArray,
781
+ jfloatArray,
782
+ jdoubleArray,
783
+ jobjectArray
784
+ %{ $result = $1; %}
785
+
786
+ %typemap(directorin,descriptor="Z") jboolean "$input = $1;"
787
+ %typemap(directorin,descriptor="C") jchar "$input = $1;"
788
+ %typemap(directorin,descriptor="B") jbyte "$input = $1;"
789
+ %typemap(directorin,descriptor="S") jshort "$input = $1;"
790
+ %typemap(directorin,descriptor="I") jint "$input = $1;"
791
+ %typemap(directorin,descriptor="J") jlong "$input = $1;"
792
+ %typemap(directorin,descriptor="F") jfloat "$input = $1;"
793
+ %typemap(directorin,descriptor="D") jdouble "$input = $1;"
794
+ %typemap(directorin,descriptor="Ljava/lang/String;") jstring "$input = $1;"
795
+ %typemap(directorin,descriptor="Ljava/lang/Object;",nouse="1") jobject "$input = $1;"
796
+ %typemap(directorin,descriptor="[Z") jbooleanArray "$input = $1;"
797
+ %typemap(directorin,descriptor="[C") jcharArray "$input = $1;"
798
+ %typemap(directorin,descriptor="[B") jbyteArray "$input = $1;"
799
+ %typemap(directorin,descriptor="[S") jshortArray "$input = $1;"
800
+ %typemap(directorin,descriptor="[I") jintArray "$input = $1;"
801
+ %typemap(directorin,descriptor="[J") jlongArray "$input = $1;"
802
+ %typemap(directorin,descriptor="[F") jfloatArray "$input = $1;"
803
+ %typemap(directorin,descriptor="[D") jdoubleArray "$input = $1;"
804
+ %typemap(directorin,descriptor="[Ljava/lang/Object;",nouse="1") jobjectArray "$input = $1;"
805
+
806
+ %typemap(javadirectorin) jboolean,
807
+ jchar,
808
+ jbyte,
809
+ jshort,
810
+ jint,
811
+ jlong,
812
+ jfloat,
813
+ jdouble,
814
+ jstring,
815
+ jobject,
816
+ jbooleanArray,
817
+ jcharArray,
818
+ jbyteArray,
819
+ jshortArray,
820
+ jintArray,
821
+ jlongArray,
822
+ jfloatArray,
823
+ jdoubleArray,
824
+ jobjectArray
825
+ "$jniinput"
826
+
827
+ %typemap(javadirectorout) jboolean,
828
+ jchar,
829
+ jbyte,
830
+ jshort,
831
+ jint,
832
+ jlong,
833
+ jfloat,
834
+ jdouble,
835
+ jstring,
836
+ jobject,
837
+ jbooleanArray,
838
+ jcharArray,
839
+ jbyteArray,
840
+ jshortArray,
841
+ jintArray,
842
+ jlongArray,
843
+ jfloatArray,
844
+ jdoubleArray,
845
+ jobjectArray
846
+ "$javacall"
847
+
848
+ /* Typecheck typemaps - The purpose of these is merely to issue a warning for overloaded C++ functions
849
+ * that cannot be overloaded in Java as more than one C++ type maps to a single Java type */
850
+
851
+ %typecheck(SWIG_TYPECHECK_BOOL) /* Java boolean */
852
+ jboolean,
853
+ bool,
854
+ const bool &
855
+ ""
856
+
857
+ %typecheck(SWIG_TYPECHECK_CHAR) /* Java char */
858
+ jchar,
859
+ char,
860
+ const char &
861
+ ""
862
+
863
+ %typecheck(SWIG_TYPECHECK_INT8) /* Java byte */
864
+ jbyte,
865
+ signed char,
866
+ const signed char &
867
+ ""
868
+
869
+ %typecheck(SWIG_TYPECHECK_INT16) /* Java short */
870
+ jshort,
871
+ unsigned char,
872
+ short,
873
+ const unsigned char &,
874
+ const short &
875
+ ""
876
+
877
+ %typecheck(SWIG_TYPECHECK_INT32) /* Java int */
878
+ jint,
879
+ unsigned short,
880
+ int,
881
+ long,
882
+ const unsigned short &,
883
+ const int &,
884
+ const long &
885
+ ""
886
+
887
+ %typecheck(SWIG_TYPECHECK_INT64) /* Java long */
888
+ jlong,
889
+ unsigned int,
890
+ unsigned long,
891
+ long long,
892
+ const unsigned int &,
893
+ const unsigned long &,
894
+ const long long &
895
+ ""
896
+
897
+ %typecheck(SWIG_TYPECHECK_INT128) /* Java BigInteger */
898
+ unsigned long long,
899
+ const unsigned long long &
900
+ ""
901
+
902
+ %typecheck(SWIG_TYPECHECK_FLOAT) /* Java float */
903
+ jfloat,
904
+ float,
905
+ const float &
906
+ ""
907
+
908
+ %typecheck(SWIG_TYPECHECK_DOUBLE) /* Java double */
909
+ jdouble,
910
+ double,
911
+ const double &
912
+ ""
913
+
914
+ %typecheck(SWIG_TYPECHECK_STRING) /* Java String */
915
+ jstring,
916
+ char *,
917
+ char *&,
918
+ char[ANY],
919
+ char []
920
+ ""
921
+
922
+ %typecheck(SWIG_TYPECHECK_BOOL_ARRAY) /* Java boolean[] */
923
+ jbooleanArray
924
+ ""
925
+
926
+ %typecheck(SWIG_TYPECHECK_CHAR_ARRAY) /* Java char[] */
927
+ jcharArray
928
+ ""
929
+
930
+ %typecheck(SWIG_TYPECHECK_INT8_ARRAY) /* Java byte[] */
931
+ jbyteArray
932
+ ""
933
+
934
+ %typecheck(SWIG_TYPECHECK_INT16_ARRAY) /* Java short[] */
935
+ jshortArray
936
+ ""
937
+
938
+ %typecheck(SWIG_TYPECHECK_INT32_ARRAY) /* Java int[] */
939
+ jintArray
940
+ ""
941
+
942
+ %typecheck(SWIG_TYPECHECK_INT64_ARRAY) /* Java long[] */
943
+ jlongArray
944
+ ""
945
+
946
+ %typecheck(SWIG_TYPECHECK_FLOAT_ARRAY) /* Java float[] */
947
+ jfloatArray
948
+ ""
949
+
950
+ %typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY) /* Java double[] */
951
+ jdoubleArray
952
+ ""
953
+
954
+ %typecheck(SWIG_TYPECHECK_OBJECT_ARRAY) /* Java jobject[] */
955
+ jobjectArray
956
+ ""
957
+
958
+ %typecheck(SWIG_TYPECHECK_POINTER) /* Default */
959
+ SWIGTYPE,
960
+ SWIGTYPE *,
961
+ SWIGTYPE &,
962
+ SWIGTYPE *const&,
963
+ SWIGTYPE [],
964
+ SWIGTYPE (CLASS::*)
965
+ ""
966
+
967
+
968
+ /* Exception handling */
969
+
970
+ %typemap(throws) int,
971
+ long,
972
+ short,
973
+ unsigned int,
974
+ unsigned long,
975
+ unsigned short
976
+ %{ char error_msg[256];
977
+ sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1);
978
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, error_msg);
979
+ return $null; %}
980
+
981
+ %typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY]
982
+ %{ (void)$1;
983
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown");
984
+ return $null; %}
985
+
986
+ %typemap(throws) char *
987
+ %{ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1);
988
+ return $null; %}
989
+
990
+
991
+ /* Typemaps for code generation in proxy classes and Java type wrapper classes */
992
+
993
+ /* The javain typemap is used for converting function parameter types from the type
994
+ * used in the proxy, module or type wrapper class to the type used in the JNI class. */
995
+ %typemap(javain) bool, const bool &,
996
+ char, const char &,
997
+ signed char, const signed char &,
998
+ unsigned char, const unsigned char &,
999
+ short, const short &,
1000
+ unsigned short, const unsigned short &,
1001
+ int, const int &,
1002
+ unsigned int, const unsigned int &,
1003
+ long, const long &,
1004
+ unsigned long, const unsigned long &,
1005
+ long long, const long long &,
1006
+ unsigned long long, const unsigned long long &,
1007
+ float, const float &,
1008
+ double, const double &
1009
+ "$javainput"
1010
+ %typemap(javain) char *, char *&, char[ANY], char[] "$javainput"
1011
+ %typemap(javain) jboolean,
1012
+ jchar,
1013
+ jbyte,
1014
+ jshort,
1015
+ jint,
1016
+ jlong,
1017
+ jfloat,
1018
+ jdouble,
1019
+ jstring,
1020
+ jobject,
1021
+ jbooleanArray,
1022
+ jcharArray,
1023
+ jbyteArray,
1024
+ jshortArray,
1025
+ jintArray,
1026
+ jlongArray,
1027
+ jfloatArray,
1028
+ jdoubleArray,
1029
+ jobjectArray
1030
+ "$javainput"
1031
+ %typemap(javain) SWIGTYPE "$&javaclassname.getCPtr($javainput)"
1032
+ %typemap(javain) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] "$javaclassname.getCPtr($javainput)"
1033
+ %typemap(javain) SWIGTYPE (CLASS::*) "$javaclassname.getCMemberPtr($javainput)"
1034
+
1035
+ /* The javaout typemap is used for converting function return types from the return type
1036
+ * used in the JNI class to the type returned by the proxy, module or type wrapper class. */
1037
+ %typemap(javaout) bool, const bool &,
1038
+ char, const char &,
1039
+ signed char, const signed char &,
1040
+ unsigned char, const unsigned char &,
1041
+ short, const short &,
1042
+ unsigned short, const unsigned short &,
1043
+ int, const int &,
1044
+ unsigned int, const unsigned int &,
1045
+ long, const long &,
1046
+ unsigned long, const unsigned long &,
1047
+ long long, const long long &,
1048
+ unsigned long long, const unsigned long long &,
1049
+ float, const float &,
1050
+ double, const double & {
1051
+ return $jnicall;
1052
+ }
1053
+ %typemap(javaout) char *, char *&, char[ANY], char[] {
1054
+ return $jnicall;
1055
+ }
1056
+ %typemap(javaout) jboolean,
1057
+ jchar,
1058
+ jbyte,
1059
+ jshort,
1060
+ jint,
1061
+ jlong,
1062
+ jfloat,
1063
+ jdouble,
1064
+ jstring,
1065
+ jobject,
1066
+ jbooleanArray,
1067
+ jcharArray,
1068
+ jbyteArray,
1069
+ jshortArray,
1070
+ jintArray,
1071
+ jlongArray,
1072
+ jfloatArray,
1073
+ jdoubleArray,
1074
+ jobjectArray {
1075
+ return $jnicall;
1076
+ }
1077
+ %typemap(javaout) void {
1078
+ $jnicall;
1079
+ }
1080
+ %typemap(javaout) SWIGTYPE {
1081
+ return new $&javaclassname($jnicall, true);
1082
+ }
1083
+ %typemap(javaout) SWIGTYPE & {
1084
+ return new $javaclassname($jnicall, $owner);
1085
+ }
1086
+ %typemap(javaout) SWIGTYPE *, SWIGTYPE [] {
1087
+ long cPtr = $jnicall;
1088
+ return (cPtr == 0) ? null : new $javaclassname(cPtr, $owner);
1089
+ }
1090
+ %typemap(javaout) SWIGTYPE (CLASS::*) {
1091
+ String cMemberPtr = $jnicall;
1092
+ return (cMemberPtr == null) ? null : new $javaclassname(cMemberPtr, $owner);
1093
+ }
1094
+
1095
+ /* Pointer reference typemaps */
1096
+ %typemap(jni) SWIGTYPE *const& "jlong"
1097
+ %typemap(jtype) SWIGTYPE *const& "long"
1098
+ %typemap(jstype) SWIGTYPE *const& "$*javaclassname"
1099
+ %typemap(javain) SWIGTYPE *const& "$*javaclassname.getCPtr($javainput)"
1100
+ %typemap(javaout) SWIGTYPE *const& {
1101
+ long cPtr = $jnicall;
1102
+ return (cPtr == 0) ? null : new $*javaclassname(cPtr, $owner);
1103
+ }
1104
+ %typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0)
1105
+ %{ temp = *($1_ltype)&$input;
1106
+ $1 = ($1_ltype)&temp; %}
1107
+ %typemap(out) SWIGTYPE *const&
1108
+ %{ *($1_ltype)&$result = *$1; %}
1109
+
1110
+ /* Typemaps used for the generation of proxy and type wrapper class code */
1111
+ %typemap(javabase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
1112
+ %typemap(javaclassmodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "public class"
1113
+ %typemap(javacode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
1114
+ %typemap(javaimports) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
1115
+ %typemap(javainterfaces) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
1116
+
1117
+ /* javabody typemaps */
1118
+
1119
+ %define SWIG_JAVABODY_METHODS(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...) SWIG_JAVABODY_PROXY(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE) %enddef // legacy name
1120
+
1121
+ %define SWIG_JAVABODY_PROXY(PTRCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...)
1122
+ // Base proxy classes
1123
+ %typemap(javabody) TYPE %{
1124
+ private long swigCPtr;
1125
+ protected boolean swigCMemOwn;
1126
+
1127
+ PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) {
1128
+ swigCMemOwn = cMemoryOwn;
1129
+ swigCPtr = cPtr;
1130
+ }
1131
+
1132
+ CPTR_VISIBILITY static long getCPtr($javaclassname obj) {
1133
+ return (obj == null) ? 0 : obj.swigCPtr;
1134
+ }
1135
+ %}
1136
+
1137
+ // Derived proxy classes
1138
+ %typemap(javabody_derived) TYPE %{
1139
+ private long swigCPtr;
1140
+
1141
+ PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean cMemoryOwn) {
1142
+ super($imclassname.$javaclazznameSWIGUpcast(cPtr), cMemoryOwn);
1143
+ swigCPtr = cPtr;
1144
+ }
1145
+
1146
+ CPTR_VISIBILITY static long getCPtr($javaclassname obj) {
1147
+ return (obj == null) ? 0 : obj.swigCPtr;
1148
+ }
1149
+ %}
1150
+ %enddef
1151
+
1152
+ %define SWIG_JAVABODY_TYPEWRAPPER(PTRCTOR_VISIBILITY, DEFAULTCTOR_VISIBILITY, CPTR_VISIBILITY, TYPE...)
1153
+ // Typewrapper classes
1154
+ %typemap(javabody) TYPE *, TYPE &, TYPE [] %{
1155
+ private long swigCPtr;
1156
+
1157
+ PTRCTOR_VISIBILITY $javaclassname(long cPtr, boolean futureUse) {
1158
+ swigCPtr = cPtr;
1159
+ }
1160
+
1161
+ DEFAULTCTOR_VISIBILITY $javaclassname() {
1162
+ swigCPtr = 0;
1163
+ }
1164
+
1165
+ CPTR_VISIBILITY static long getCPtr($javaclassname obj) {
1166
+ return (obj == null) ? 0 : obj.swigCPtr;
1167
+ }
1168
+ %}
1169
+
1170
+ %typemap(javabody) TYPE (CLASS::*) %{
1171
+ private String swigCMemberPtr;
1172
+
1173
+ PTRCTOR_VISIBILITY $javaclassname(String cMemberPtr, boolean futureUse) {
1174
+ swigCMemberPtr = cMemberPtr;
1175
+ }
1176
+
1177
+ DEFAULTCTOR_VISIBILITY $javaclassname() {
1178
+ swigCMemberPtr = null;
1179
+ }
1180
+
1181
+ CPTR_VISIBILITY static String getCMemberPtr($javaclassname obj) {
1182
+ return obj.swigCMemberPtr;
1183
+ }
1184
+ %}
1185
+ %enddef
1186
+
1187
+ /* Set the default javabody typemaps to use protected visibility.
1188
+ Use the macros to change to public if using multiple modules. */
1189
+ SWIG_JAVABODY_PROXY(protected, protected, SWIGTYPE)
1190
+ SWIG_JAVABODY_TYPEWRAPPER(protected, protected, protected, SWIGTYPE)
1191
+
1192
+ %typemap(javafinalize) SWIGTYPE %{
1193
+ protected void finalize() {
1194
+ delete();
1195
+ }
1196
+ %}
1197
+
1198
+ /*
1199
+ * Java constructor typemaps:
1200
+ *
1201
+ * The javaconstruct typemap is inserted when a proxy class's constructor is generated.
1202
+ * This typemap allows control over what code is executed in the constructor as
1203
+ * well as specifying who owns the underlying C/C++ object. Normally, Java has
1204
+ * ownership and the underlying C/C++ object is deallocated when the Java object
1205
+ * is finalized (swigCMemOwn is true.) If swigCMemOwn is false, C/C++ is
1206
+ * ultimately responsible for deallocating the underlying object's memory.
1207
+ *
1208
+ * The SWIG_PROXY_CONSTRUCTOR macro defines the javaconstruct typemap for a proxy
1209
+ * class for a particular TYPENAME. OWNERSHIP is passed as the value of
1210
+ * swigCMemOwn to the pointer constructor method. WEAKREF determines which kind
1211
+ * of Java object reference will be used by the C++ director class (WeakGlobalRef
1212
+ * vs. GlobalRef.)
1213
+ *
1214
+ * The SWIG_DIRECTOR_OWNED macro sets the ownership of director-based proxy
1215
+ * classes and the weak reference flag to false, meaning that the underlying C++
1216
+ * object will be reclaimed by C++.
1217
+ */
1218
+
1219
+ %define SWIG_PROXY_CONSTRUCTOR(OWNERSHIP, WEAKREF, TYPENAME...)
1220
+ %typemap(javaconstruct,directorconnect="\n $imclassname.$javaclazznamedirector_connect(this, swigCPtr, swigCMemOwn, WEAKREF);") TYPENAME {
1221
+ this($imcall, OWNERSHIP);$directorconnect
1222
+ }
1223
+ %enddef
1224
+
1225
+ %define SWIG_DIRECTOR_OWNED(TYPENAME...)
1226
+ SWIG_PROXY_CONSTRUCTOR(true, false, TYPENAME)
1227
+ %enddef
1228
+
1229
+ // Set the default for SWIGTYPE: Java owns the C/C++ object.
1230
+ SWIG_PROXY_CONSTRUCTOR(true, true, SWIGTYPE)
1231
+
1232
+ %typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") SWIGTYPE {
1233
+ if (swigCPtr != 0) {
1234
+ if (swigCMemOwn) {
1235
+ swigCMemOwn = false;
1236
+ $jnicall;
1237
+ }
1238
+ swigCPtr = 0;
1239
+ }
1240
+ }
1241
+
1242
+ %typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") SWIGTYPE {
1243
+ if (swigCPtr != 0) {
1244
+ if (swigCMemOwn) {
1245
+ swigCMemOwn = false;
1246
+ $jnicall;
1247
+ }
1248
+ swigCPtr = 0;
1249
+ }
1250
+ super.delete();
1251
+ }
1252
+
1253
+ %typemap(directordisconnect, methodname="swigDirectorDisconnect") SWIGTYPE %{
1254
+ protected void $methodname() {
1255
+ swigCMemOwn = false;
1256
+ $jnicall;
1257
+ }
1258
+ %}
1259
+
1260
+ %typemap(directorowner_release, methodname="swigReleaseOwnership") SWIGTYPE %{
1261
+ public void $methodname() {
1262
+ swigCMemOwn = false;
1263
+ $jnicall;
1264
+ }
1265
+ %}
1266
+
1267
+ %typemap(directorowner_take, methodname="swigTakeOwnership") SWIGTYPE %{
1268
+ public void $methodname() {
1269
+ swigCMemOwn = true;
1270
+ $jnicall;
1271
+ }
1272
+ %}
1273
+
1274
+ /* Java specific directives */
1275
+ #define %javaconst(flag) %feature("java:const","flag")
1276
+ #define %javaconstvalue(value) %feature("java:constvalue",value)
1277
+ #define %javaenum(wrapapproach) %feature("java:enum","wrapapproach")
1278
+ #define %javamethodmodifiers %feature("java:methodmodifiers")
1279
+ #define %javaexception(exceptionclasses) %feature("except",throws=exceptionclasses)
1280
+ #define %nojavaexception %feature("except","0",throws="")
1281
+ #define %clearjavaexception %feature("except","",throws="")
1282
+
1283
+ %pragma(java) jniclassclassmodifiers="public class"
1284
+ %pragma(java) moduleclassmodifiers="public class"
1285
+
1286
+ /* Some ANSI C typemaps */
1287
+
1288
+ %apply unsigned long { size_t };
1289
+ %apply const unsigned long & { const size_t & };
1290
+
1291
+ /* Array reference typemaps */
1292
+ %apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) }
1293
+
1294
+ /* const pointers */
1295
+ %apply SWIGTYPE * { SWIGTYPE *const }
1296
+
1297
+ /* String & length */
1298
+ %typemap(jni) (char *STRING, size_t LENGTH) "jbyteArray"
1299
+ %typemap(jtype) (char *STRING, size_t LENGTH) "byte[]"
1300
+ %typemap(jstype) (char *STRING, size_t LENGTH) "byte[]"
1301
+ %typemap(javain) (char *STRING, size_t LENGTH) "$javainput"
1302
+ %typemap(freearg) (char *STRING, size_t LENGTH) ""
1303
+ %typemap(in) (char *STRING, size_t LENGTH) {
1304
+ if ($input) {
1305
+ $1 = (char *) JCALL2(GetByteArrayElements, jenv, $input, 0);
1306
+ $2 = (size_t) JCALL1(GetArrayLength, jenv, $input);
1307
+ } else {
1308
+ $1 = 0;
1309
+ $2 = 0;
1310
+ }
1311
+ }
1312
+ %typemap(argout) (char *STRING, size_t LENGTH) {
1313
+ if ($input) JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, 0);
1314
+ }
1315
+ %typemap(directorin, descriptor="[B") (char *STRING, size_t LENGTH) {
1316
+ jbyteArray jb = (jenv)->NewByteArray($2);
1317
+ (jenv)->SetByteArrayRegion(jb, 0, $2, (jbyte *)$1);
1318
+ $input = jb;
1319
+ }
1320
+ %typemap(directorargout) (char *STRING, size_t LENGTH)
1321
+ %{(jenv)->GetByteArrayRegion($input, 0, $2, (jbyte *)$1); %}
1322
+ %apply (char *STRING, size_t LENGTH) { (char *STRING, int LENGTH) }
1323
+
1324
+ /* java keywords */
1325
+ %include <javakw.swg>
1326
+
1327
+ // Default enum handling
1328
+ %include <enumtypesafe.swg>
1329
+