blob: 9d7f096bae775d082dcabf2be93f90d2b80685df [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* 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.
*/
#ifndef VIDEO_EDiTOR_JAVA_H
#define VIDEO_EDiTOR_JAVA_H
#include <jni.h>
#include <JNIHelp.h>
/**
************************************************************************
* @file VideoEditorJava.h
* @brief Interface for JNI methods that have specific access to
* class, objects and method Ids defined in Java layer
************************************************************************
*/
extern "C" {
#include <M4OSA_Types.h>
#include <M4OSA_Error.h>
}
#define VIDEOEDIT_JAVA_CONSTANT_INIT(m_name, m_c) \
{ m_name, \
0, \
m_c, \
#m_c }
#define VIDEOEDIT_JAVA_DEFINE_CONSTANTS(m_class) \
static \
VideoEditJava_Constant g##m_class##Constants [] =
#define VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS( \
m_class, \
m_name, \
m_unknownName, \
m_unknownString) \
\
static VideoEditJava_ConstantsClass g##m_class##ConstantsClass = \
{ m_name, \
&g##m_class##Constants[0], \
(sizeof(g##m_class##Constants) / sizeof(VideoEditJava_Constant)), \
false \
}; \
\
\
void videoEditJava_init##m_class##Constants( \
bool* pResult, \
JNIEnv* pEnv) \
{ \
videoEditJava_initConstantClass( \
pResult, \
pEnv, \
&g##m_class##ConstantsClass); \
} \
\
const char* videoEditJava_get##m_class##Name( \
int value) \
{ \
return(videoEditJava_getConstantClassName( \
&g##m_class##ConstantsClass, \
value, \
m_unknownName)); \
} \
\
const char* videoEditJava_get##m_class##String( \
int value) \
{ \
return(videoEditJava_getConstantClassString( \
&g##m_class##ConstantsClass, \
value, \
m_unknownString)); \
} \
\
int \
videoEditJava_get##m_class##JavaToC( \
bool* pResult, \
int value) \
{ \
return(videoEditJava_getConstantClassJavaToC( \
pResult, \
&g##m_class##ConstantsClass, \
value)); \
} \
\
int \
videoEditJava_get##m_class##JavaToC( \
bool* pResult, \
int value, \
int unknown) \
{ \
return(videoEditJava_getConstantClassJavaToC( \
pResult, \
&g##m_class##ConstantsClass, \
value, \
unknown)); \
} \
\
int \
videoEditJava_get##m_class##CToJava( \
int value) \
{ \
return(videoEditJava_getConstantClassCToJava( \
&g##m_class##ConstantsClass, \
value)); \
} \
\
int \
videoEditJava_get##m_class##CToJava( \
int value, \
int unknown) \
{ \
return(videoEditJava_getConstantClassCToJava( \
&g##m_class##ConstantsClass, \
value, \
unknown)); \
}
#define VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(m_class) \
void \
videoEditJava_init##m_class##Constants( \
bool* pResult, \
JNIEnv* pEnv); \
\
const char* \
videoEditJava_get##m_class##Name( \
int value); \
\
const char* \
videoEditJava_get##m_class##String( \
int value); \
\
int \
videoEditJava_get##m_class##JavaToC( \
bool* pResult, \
int value, \
int unknown); \
\
int \
videoEditJava_get##m_class##JavaToC( \
bool* pResult, \
int value); \
\
int \
videoEditJava_get##m_class##CToJava( \
int value); \
\
int \
videoEditJava_get##m_class##CToJava( \
int value, \
int unknown);
#define VIDEOEDIT_JAVA_FIELD_INIT(m_name, m_type) \
{ m_name, \
m_type, \
NULL }
#define VIDEOEDIT_JAVA_DEFINE_FIELDS(m_class) \
static \
VideoEditJava_Field g##m_class##Fields [] =
#define VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(m_class, m_name) \
static VideoEditJava_FieldsClass g##m_class##FieldsClass = \
{ m_name, \
&g##m_class##Fields[0], \
(sizeof(g##m_class##Fields) / sizeof(VideoEditJava_Field)), \
false }; \
\
void \
videoEditJava_init##m_class##Fields( \
bool* pResult, \
JNIEnv* pEnv) \
{ \
videoEditJava_initFieldClass( \
pResult, \
pEnv, \
&g##m_class##FieldsClass); \
} \
\
void \
videoEditJava_get##m_class##Class( \
bool* pResult, \
JNIEnv* pEnv, \
jclass* pClazz) \
{ \
videoEditJava_fieldClassClass( \
pResult, \
pEnv, \
&g##m_class##FieldsClass, \
pClazz); \
} \
\
void \
videoEditJava_get##m_class##FieldIds( \
bool* pResult, \
JNIEnv* pEnv, \
VideoEditJava_##m_class##FieldIds* pIds) \
{ \
videoEditJava_fieldClassFieldIds( \
pResult, \
pEnv, \
&g##m_class##FieldsClass, \
(sizeof(VideoEditJava_##m_class##FieldIds) / \
sizeof(jfieldID)), \
(VideoEditJava_FieldIds*)pIds); \
}
#define VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(m_class) \
void \
videoEditJava_init##m_class##Fields( \
bool* pResult, \
JNIEnv* pEnv); \
\
void \
videoEditJava_get##m_class##Class( \
bool* pResult, \
JNIEnv* pEnv, \
jclass* pClazz); \
\
void \
videoEditJava_get##m_class##FieldIds( \
bool* pResult, \
JNIEnv* pEnv, \
VideoEditJava_##m_class##FieldIds* pIds);
#define VIDEOEDIT_JAVA_METHOD_INIT(m_name, m_type) \
{ m_name, \
m_type, \
NULL }
#define VIDEOEDIT_JAVA_DEFINE_METHODS(m_class) \
static \
VideoEditJava_Method g##m_class##Methods [] =
#define VIDEOEDIT_JAVA_DEFINE_METHOD_CLASS(m_class, m_name) \
static VideoEditJava_MethodsClass g##m_class##MethodsClass = \
{ m_name, \
&g##m_class##Methods[0], \
(sizeof(g##m_class##Methods) / sizeof(VideoEditJava_Method)), \
false }; \
\
void \
videoEditJava_init##m_class##Methods( \
bool* pResult, \
JNIEnv* pEnv) \
{ \
videoEditJava_initMethodClass( \
pResult, \
pEnv, \
&g##m_class##MethodsClass); \
} \
\
void \
videoEditJava_get##m_class##MethodIds( \
bool* pResult, \
JNIEnv* pEnv, \
VideoEditJava_##m_class##MethodIds* pIds) \
{ \
videoEditJava_methodClassMethodIds( \
pResult, \
pEnv, \
&g##m_class##MethodsClass, \
(sizeof(VideoEditJava_##m_class##MethodIds) / \
sizeof(jmethodID)), \
(VideoEditJava_MethodIds*)pIds); \
}
#define VIDEOEDIT_JAVA_DECLARE_METHOD_CLASS(m_class) \
void \
videoEditJava_init##m_class##Methods( \
bool* pResult, \
JNIEnv* pEnv); \
\
void \
videoEditJava_get##m_class##MethodIds( \
bool* pResult, \
JNIEnv* pEnv, \
VideoEditJava_##m_class##MethodIds* pIds);
typedef struct
{
const char* pName;
int java;
int c;
const char* pDescription;
} VideoEditJava_Constant;
typedef struct
{
const char* pName;
VideoEditJava_Constant* pConstants;
int count;
bool initialized;
} VideoEditJava_ConstantsClass;
typedef const char* (*VideoEditJava_UnknownConstant)(int constant);
typedef struct
{
const char* pName;
const char* pType;
jfieldID fieldId;
} VideoEditJava_Field;
typedef struct
{
const char* pName;
VideoEditJava_Field* pFields;
int count;
bool initialized;
} VideoEditJava_FieldsClass;
typedef struct
{
jfieldID fieldIds[];
} VideoEditJava_FieldIds;
typedef struct
{
const char* pName;
const char* pType;
jmethodID methodId;
} VideoEditJava_Method;
typedef struct
{
const char* pName;
VideoEditJava_Method* pMethods;
int count;
bool initialized;
} VideoEditJava_MethodsClass;
typedef struct
{
jmethodID methodIds[];
} VideoEditJava_MethodIds;
void
videoEditJava_checkAndThrowIllegalArgumentException(
bool* pResult,
JNIEnv* pEnv,
bool condition,
const char* pMessage);
void
videoEditJava_checkAndThrowRuntimeException(
bool* pResult,
JNIEnv* pEnv,
bool condition,
M4OSA_ERR result);
void
videoEditJava_checkAndThrowIllegalStateException(
bool* pResult,
JNIEnv* pEnv,
bool condition,
const char* pMessage);
void
videoEditJava_getClass(
bool* pResult,
JNIEnv* pEnv,
const char* pName,
jclass* pClazz);
void
videoEditJava_getMethodId(
bool* pResult,
JNIEnv* pEnv,
jclass clazz,
const char* pName,
const char* pType,
jmethodID* pMethodId);
void videoEditJava_getFieldId(
bool* pResult,
JNIEnv* pEnv,
jclass clazz,
const char* pName,
const char* pType,
jfieldID* pFieldId);
void videoEditJava_getObject(
bool* pResult,
JNIEnv* pEnv,
jobject object,
jfieldID objectFieldId,
jobject* pObject);
void videoEditJava_getArray(
bool* pResult,
JNIEnv* pEnv,
jobject object,
jfieldID arrayFieldId,
jobjectArray* pArray,
jsize* pArraySize);
void* videoEditJava_getString(
bool* pResult,
JNIEnv* pEnv,
jobject object,
jfieldID stringFieldId,
M4OSA_UInt32* pLength);
void videoEditJava_getStaticIntField(
bool* pResult,
JNIEnv* env,
jclass clazz,
const char* pName,
int* pValue);
void
videoEditJava_initConstantClass(
bool* pResult,
JNIEnv* pEnv,
VideoEditJava_ConstantsClass* pClass);
const char*
videoEditJava_getConstantClassName(
const VideoEditJava_ConstantsClass* pClass,
int value,
VideoEditJava_UnknownConstant unknown);
const char*
videoEditJava_getConstantClassString(
const VideoEditJava_ConstantsClass* pClass,
int value,
VideoEditJava_UnknownConstant unknown);
int
videoEditJava_getConstantClassJavaToC(
bool* pResult,
const VideoEditJava_ConstantsClass* pClass,
int value);
int
videoEditJava_getConstantClassJavaToC(
bool* pResult,
const VideoEditJava_ConstantsClass* pClass,
int value,
int unknown);
int
videoEditJava_getConstantClassCToJava(
const VideoEditJava_ConstantsClass* pClass,
int value);
int
videoEditJava_getConstantClassCToJava(
const VideoEditJava_ConstantsClass* pClass,
int value,
int unknown);
void
videoEditJava_initFieldClass(
bool* pResult,
JNIEnv* pEnv,
VideoEditJava_FieldsClass* pClass);
void
videoEditJava_fieldClassClass(
bool* pResult,
JNIEnv* pEnv,
const VideoEditJava_FieldsClass* pClass,
jclass* pClazz);
void
videoEditJava_fieldClassFieldIds(
bool* pResult,
JNIEnv* pEnv,
const VideoEditJava_FieldsClass* pClass,
int count,
VideoEditJava_FieldIds* pIds);
void
videoEditJava_initMethodClass(
bool* pResult,
JNIEnv* pEnv,
VideoEditJava_MethodsClass* pClass);
void
videoEditJava_methodClassMethodIds(
bool* pResult,
JNIEnv* pEnv,
const VideoEditJava_MethodsClass* pClass,
int count,
VideoEditJava_MethodIds* pIds);
#endif // VIDEO_EDiTOR_JAVA_H