blob: 0a2db08adb2c607d912abf45f2efa0b7c066b6ec [file] [log] [blame]
Dharmaray Kundargicd196d32011-01-16 15:47:16 -08001/*
2 * Copyright (C) 2011 The Android Open Source Project
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#ifndef VIDEO_EDiTOR_JAVA_H
18#define VIDEO_EDiTOR_JAVA_H
19
20#include <jni.h>
21#include <JNIHelp.h>
22
23/**
24 ************************************************************************
25 * @file VideoEditorJava.h
26 * @brief Interface for JNI methods that have specific access to
27 * class, objects and method Ids defined in Java layer
28 ************************************************************************
29*/
30
31extern "C" {
32#include <M4OSA_Types.h>
33#include <M4OSA_Error.h>
34}
35
36#define VIDEOEDIT_JAVA_CONSTANT_INIT(m_name, m_c) \
37 { m_name, \
38 0, \
39 m_c, \
40 #m_c }
41
42#define VIDEOEDIT_JAVA_DEFINE_CONSTANTS(m_class) \
43static \
44VideoEditJava_Constant g##m_class##Constants [] =
45
46#define VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS( \
47 m_class, \
48 m_name, \
49 m_unknownName, \
50 m_unknownString) \
51 \
52static VideoEditJava_ConstantsClass g##m_class##ConstantsClass = \
53{ m_name, \
54 &g##m_class##Constants[0], \
55 (sizeof(g##m_class##Constants) / sizeof(VideoEditJava_Constant)), \
56 false \
57}; \
58 \
59 \
60void videoEditJava_init##m_class##Constants( \
61 bool* pResult, \
62 JNIEnv* pEnv) \
63{ \
64 videoEditJava_initConstantClass( \
65 pResult, \
66 pEnv, \
67 &g##m_class##ConstantsClass); \
68} \
69 \
70const char* videoEditJava_get##m_class##Name( \
71 int value) \
72{ \
73 return(videoEditJava_getConstantClassName( \
74 &g##m_class##ConstantsClass, \
75 value, \
76 m_unknownName)); \
77} \
78 \
79const char* videoEditJava_get##m_class##String( \
80 int value) \
81{ \
82 return(videoEditJava_getConstantClassString( \
83 &g##m_class##ConstantsClass, \
84 value, \
85 m_unknownString)); \
86} \
87 \
88int \
89videoEditJava_get##m_class##JavaToC( \
90 bool* pResult, \
91 int value) \
92{ \
93 return(videoEditJava_getConstantClassJavaToC( \
94 pResult, \
95 &g##m_class##ConstantsClass, \
96 value)); \
97} \
98 \
99int \
100videoEditJava_get##m_class##JavaToC( \
101 bool* pResult, \
102 int value, \
103 int unknown) \
104{ \
105 return(videoEditJava_getConstantClassJavaToC( \
106 pResult, \
107 &g##m_class##ConstantsClass, \
108 value, \
109 unknown)); \
110} \
111 \
112int \
113videoEditJava_get##m_class##CToJava( \
114 int value) \
115{ \
116 return(videoEditJava_getConstantClassCToJava( \
117 &g##m_class##ConstantsClass, \
118 value)); \
119} \
120 \
121int \
122videoEditJava_get##m_class##CToJava( \
123 int value, \
124 int unknown) \
125{ \
126 return(videoEditJava_getConstantClassCToJava( \
127 &g##m_class##ConstantsClass, \
128 value, \
129 unknown)); \
130}
131
132
133#define VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(m_class) \
134void \
135videoEditJava_init##m_class##Constants( \
136 bool* pResult, \
137 JNIEnv* pEnv); \
138 \
139const char* \
140videoEditJava_get##m_class##Name( \
141 int value); \
142 \
143const char* \
144videoEditJava_get##m_class##String( \
145 int value); \
146 \
147int \
148videoEditJava_get##m_class##JavaToC( \
149 bool* pResult, \
150 int value, \
151 int unknown); \
152 \
153int \
154videoEditJava_get##m_class##JavaToC( \
155 bool* pResult, \
156 int value); \
157 \
158int \
159videoEditJava_get##m_class##CToJava( \
160 int value); \
161 \
162int \
163videoEditJava_get##m_class##CToJava( \
164 int value, \
165 int unknown);
166
167#define VIDEOEDIT_JAVA_FIELD_INIT(m_name, m_type) \
168 { m_name, \
169 m_type, \
170 NULL }
171
172#define VIDEOEDIT_JAVA_DEFINE_FIELDS(m_class) \
173static \
174VideoEditJava_Field g##m_class##Fields [] =
175
176#define VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(m_class, m_name) \
177static VideoEditJava_FieldsClass g##m_class##FieldsClass = \
178 { m_name, \
179 &g##m_class##Fields[0], \
180 (sizeof(g##m_class##Fields) / sizeof(VideoEditJava_Field)), \
181 false }; \
182 \
183void \
184videoEditJava_init##m_class##Fields( \
185 bool* pResult, \
186 JNIEnv* pEnv) \
187{ \
188 videoEditJava_initFieldClass( \
189 pResult, \
190 pEnv, \
191 &g##m_class##FieldsClass); \
192} \
193 \
194void \
195videoEditJava_get##m_class##Class( \
196 bool* pResult, \
197 JNIEnv* pEnv, \
198 jclass* pClazz) \
199{ \
200 videoEditJava_fieldClassClass( \
201 pResult, \
202 pEnv, \
203 &g##m_class##FieldsClass, \
204 pClazz); \
205} \
206 \
207void \
208videoEditJava_get##m_class##FieldIds( \
209 bool* pResult, \
210 JNIEnv* pEnv, \
211 VideoEditJava_##m_class##FieldIds* pIds) \
212{ \
213 videoEditJava_fieldClassFieldIds( \
214 pResult, \
215 pEnv, \
216 &g##m_class##FieldsClass, \
217 (sizeof(VideoEditJava_##m_class##FieldIds) / \
218 sizeof(jfieldID)), \
219 (VideoEditJava_FieldIds*)pIds); \
220}
221
222#define VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(m_class) \
223void \
224videoEditJava_init##m_class##Fields( \
225 bool* pResult, \
226 JNIEnv* pEnv); \
227 \
228void \
229videoEditJava_get##m_class##Class( \
230 bool* pResult, \
231 JNIEnv* pEnv, \
232 jclass* pClazz); \
233 \
234void \
235videoEditJava_get##m_class##FieldIds( \
236 bool* pResult, \
237 JNIEnv* pEnv, \
238 VideoEditJava_##m_class##FieldIds* pIds);
239
240
241#define VIDEOEDIT_JAVA_METHOD_INIT(m_name, m_type) \
242 { m_name, \
243 m_type, \
244 NULL }
245
246#define VIDEOEDIT_JAVA_DEFINE_METHODS(m_class) \
247static \
248VideoEditJava_Method g##m_class##Methods [] =
249
250#define VIDEOEDIT_JAVA_DEFINE_METHOD_CLASS(m_class, m_name) \
251static VideoEditJava_MethodsClass g##m_class##MethodsClass = \
252 { m_name, \
253 &g##m_class##Methods[0], \
254 (sizeof(g##m_class##Methods) / sizeof(VideoEditJava_Method)), \
255 false }; \
256 \
257void \
258videoEditJava_init##m_class##Methods( \
259 bool* pResult, \
260 JNIEnv* pEnv) \
261{ \
262 videoEditJava_initMethodClass( \
263 pResult, \
264 pEnv, \
265 &g##m_class##MethodsClass); \
266} \
267 \
268void \
269videoEditJava_get##m_class##MethodIds( \
270 bool* pResult, \
271 JNIEnv* pEnv, \
272 VideoEditJava_##m_class##MethodIds* pIds) \
273{ \
274 videoEditJava_methodClassMethodIds( \
275 pResult, \
276 pEnv, \
277 &g##m_class##MethodsClass, \
278 (sizeof(VideoEditJava_##m_class##MethodIds) / \
279 sizeof(jmethodID)), \
280 (VideoEditJava_MethodIds*)pIds); \
281}
282
283#define VIDEOEDIT_JAVA_DECLARE_METHOD_CLASS(m_class) \
284void \
285videoEditJava_init##m_class##Methods( \
286 bool* pResult, \
287 JNIEnv* pEnv); \
288 \
289void \
290videoEditJava_get##m_class##MethodIds( \
291 bool* pResult, \
292 JNIEnv* pEnv, \
293 VideoEditJava_##m_class##MethodIds* pIds);
294
295
296typedef struct
297{
298 const char* pName;
299 int java;
300 int c;
301 const char* pDescription;
302} VideoEditJava_Constant;
303
304typedef struct
305{
306 const char* pName;
307 VideoEditJava_Constant* pConstants;
308 int count;
309 bool initialized;
310} VideoEditJava_ConstantsClass;
311
312typedef const char* (*VideoEditJava_UnknownConstant)(int constant);
313
314typedef struct
315{
316 const char* pName;
317 const char* pType;
318 jfieldID fieldId;
319} VideoEditJava_Field;
320
321typedef struct
322{
323 const char* pName;
324 VideoEditJava_Field* pFields;
325 int count;
326 bool initialized;
327} VideoEditJava_FieldsClass;
328
329typedef struct
330{
331 jfieldID fieldIds[];
332} VideoEditJava_FieldIds;
333
334typedef struct
335{
336 const char* pName;
337 const char* pType;
338 jmethodID methodId;
339} VideoEditJava_Method;
340
341typedef struct
342{
343 const char* pName;
344 VideoEditJava_Method* pMethods;
345 int count;
346 bool initialized;
347} VideoEditJava_MethodsClass;
348
349typedef struct
350{
351 jmethodID methodIds[];
352} VideoEditJava_MethodIds;
353
Chih-Chung Chang25ba294d2011-07-22 05:07:45 +0800354#define videoEditJava_checkAndThrowIllegalArgumentException(\
355 a, b, c, d) videoEditJava_checkAndThrowIllegalArgumentExceptionFunc(\
356 a, b, c, d, __FILE__, __LINE__)
357
358#define videoEditJava_checkAndThrowRuntimeException(\
359 a, b, c, d) videoEditJava_checkAndThrowRuntimeExceptionFunc(\
360 a, b, c, d, __FILE__, __LINE__)
361
362#define videoEditJava_checkAndThrowIllegalStateException(\
363 a, b, c, d) videoEditJava_checkAndThrowIllegalStateExceptionFunc(\
364 a, b, c, d, __FILE__, __LINE__)
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800365
366void
Chih-Chung Chang25ba294d2011-07-22 05:07:45 +0800367videoEditJava_checkAndThrowIllegalArgumentExceptionFunc(
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800368 bool* pResult,
369 JNIEnv* pEnv,
370 bool condition,
Chih-Chung Chang25ba294d2011-07-22 05:07:45 +0800371 const char* pMessage,
372 const char* pFile,
373 int lineNo
374 );
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800375
376void
Chih-Chung Chang25ba294d2011-07-22 05:07:45 +0800377videoEditJava_checkAndThrowRuntimeExceptionFunc(
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800378 bool* pResult,
379 JNIEnv* pEnv,
380 bool condition,
Chih-Chung Chang25ba294d2011-07-22 05:07:45 +0800381 M4OSA_ERR result,
382 const char* pFile,
383 int lineNo
384 );
385
386void
387videoEditJava_checkAndThrowIllegalStateExceptionFunc(
388 bool* pResult,
389 JNIEnv* pEnv,
390 bool condition,
391 const char* pMessage,
392 const char* pFile,
393 int lineNo
394 );
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800395
396void
397videoEditJava_getClass(
398 bool* pResult,
399 JNIEnv* pEnv,
400 const char* pName,
401 jclass* pClazz);
402
403void
404videoEditJava_getMethodId(
405 bool* pResult,
406 JNIEnv* pEnv,
407 jclass clazz,
408 const char* pName,
409 const char* pType,
410 jmethodID* pMethodId);
411
412void videoEditJava_getFieldId(
413 bool* pResult,
414 JNIEnv* pEnv,
415 jclass clazz,
416 const char* pName,
417 const char* pType,
418 jfieldID* pFieldId);
419
420void videoEditJava_getObject(
421 bool* pResult,
422 JNIEnv* pEnv,
423 jobject object,
424 jfieldID objectFieldId,
425 jobject* pObject);
426
427void videoEditJava_getArray(
428 bool* pResult,
429 JNIEnv* pEnv,
430 jobject object,
431 jfieldID arrayFieldId,
432 jobjectArray* pArray,
433 jsize* pArraySize);
434
435void* videoEditJava_getString(
436 bool* pResult,
437 JNIEnv* pEnv,
438 jobject object,
439 jfieldID stringFieldId,
440 M4OSA_UInt32* pLength);
441
442void videoEditJava_getStaticIntField(
443 bool* pResult,
444 JNIEnv* env,
445 jclass clazz,
446 const char* pName,
447 int* pValue);
448
449void
450videoEditJava_initConstantClass(
451 bool* pResult,
452 JNIEnv* pEnv,
453 VideoEditJava_ConstantsClass* pClass);
454
455const char*
456videoEditJava_getConstantClassName(
457 const VideoEditJava_ConstantsClass* pClass,
458 int value,
459 VideoEditJava_UnknownConstant unknown);
460
461const char*
462videoEditJava_getConstantClassString(
463 const VideoEditJava_ConstantsClass* pClass,
464 int value,
465 VideoEditJava_UnknownConstant unknown);
466
467int
468videoEditJava_getConstantClassJavaToC(
469 bool* pResult,
470 const VideoEditJava_ConstantsClass* pClass,
471 int value);
472
473int
474videoEditJava_getConstantClassJavaToC(
475 bool* pResult,
476 const VideoEditJava_ConstantsClass* pClass,
477 int value,
478 int unknown);
479
480int
481videoEditJava_getConstantClassCToJava(
482 const VideoEditJava_ConstantsClass* pClass,
483 int value);
484
485int
486videoEditJava_getConstantClassCToJava(
487 const VideoEditJava_ConstantsClass* pClass,
488 int value,
489 int unknown);
490
491void
492videoEditJava_initFieldClass(
493 bool* pResult,
494 JNIEnv* pEnv,
495 VideoEditJava_FieldsClass* pClass);
496
497void
498videoEditJava_fieldClassClass(
499 bool* pResult,
500 JNIEnv* pEnv,
501 const VideoEditJava_FieldsClass* pClass,
502 jclass* pClazz);
503
504void
505videoEditJava_fieldClassFieldIds(
506 bool* pResult,
507 JNIEnv* pEnv,
508 const VideoEditJava_FieldsClass* pClass,
509 int count,
510 VideoEditJava_FieldIds* pIds);
511
512void
513videoEditJava_initMethodClass(
514 bool* pResult,
515 JNIEnv* pEnv,
516 VideoEditJava_MethodsClass* pClass);
517
518void
519videoEditJava_methodClassMethodIds(
520 bool* pResult,
521 JNIEnv* pEnv,
522 const VideoEditJava_MethodsClass* pClass,
523 int count,
524 VideoEditJava_MethodIds* pIds);
525
526#endif // VIDEO_EDiTOR_JAVA_H
527