| /* ---------------------------------------------------------------------------- | 
 |  * This file was automatically generated by SWIG (http://www.swig.org). | 
 |  * Version 2.0.4 | 
 |  * | 
 |  * This file is not intended to be easily readable and contains a number of | 
 |  * coding conventions designed to improve portability and efficiency. Do not make | 
 |  * changes to this file unless you know what you are doing--modify the SWIG | 
 |  * interface file instead. | 
 |  * ----------------------------------------------------------------------------- */ | 
 |  | 
 | #define SWIGJAVA | 
 |  | 
 | /* ----------------------------------------------------------------------------- | 
 |  *  This section contains generic SWIG labels for method/variable | 
 |  *  declarations/attributes, and other compiler dependent labels. | 
 |  * ----------------------------------------------------------------------------- */ | 
 |  | 
 | /* template workaround for compilers that cannot correctly implement the C++ standard */ | 
 | #ifndef SWIGTEMPLATEDISAMBIGUATOR | 
 | # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) | 
 | #  define SWIGTEMPLATEDISAMBIGUATOR template | 
 | # elif defined(__HP_aCC) | 
 | /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ | 
 | /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ | 
 | #  define SWIGTEMPLATEDISAMBIGUATOR template | 
 | # else | 
 | #  define SWIGTEMPLATEDISAMBIGUATOR | 
 | # endif | 
 | #endif | 
 |  | 
 | /* inline attribute */ | 
 | #ifndef SWIGINLINE | 
 | # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) | 
 | #   define SWIGINLINE inline | 
 | # else | 
 | #   define SWIGINLINE | 
 | # endif | 
 | #endif | 
 |  | 
 | /* attribute recognised by some compilers to avoid 'unused' warnings */ | 
 | #ifndef SWIGUNUSED | 
 | # if defined(__GNUC__) | 
 | #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) | 
 | #     define SWIGUNUSED __attribute__ ((__unused__)) | 
 | #   else | 
 | #     define SWIGUNUSED | 
 | #   endif | 
 | # elif defined(__ICC) | 
 | #   define SWIGUNUSED __attribute__ ((__unused__)) | 
 | # else | 
 | #   define SWIGUNUSED | 
 | # endif | 
 | #endif | 
 |  | 
 | #ifndef SWIG_MSC_UNSUPPRESS_4505 | 
 | # if defined(_MSC_VER) | 
 | #   pragma warning(disable : 4505) /* unreferenced local function has been removed */ | 
 | # endif | 
 | #endif | 
 |  | 
 | #ifndef SWIGUNUSEDPARM | 
 | # ifdef __cplusplus | 
 | #   define SWIGUNUSEDPARM(p) | 
 | # else | 
 | #   define SWIGUNUSEDPARM(p) p SWIGUNUSED | 
 | # endif | 
 | #endif | 
 |  | 
 | /* internal SWIG method */ | 
 | #ifndef SWIGINTERN | 
 | # define SWIGINTERN static SWIGUNUSED | 
 | #endif | 
 |  | 
 | /* internal inline SWIG method */ | 
 | #ifndef SWIGINTERNINLINE | 
 | # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE | 
 | #endif | 
 |  | 
 | /* exporting methods */ | 
 | #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) | 
 | #  ifndef GCC_HASCLASSVISIBILITY | 
 | #    define GCC_HASCLASSVISIBILITY | 
 | #  endif | 
 | #endif | 
 |  | 
 | #ifndef SWIGEXPORT | 
 | # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | 
 | #   if defined(STATIC_LINKED) | 
 | #     define SWIGEXPORT | 
 | #   else | 
 | #     define SWIGEXPORT __declspec(dllexport) | 
 | #   endif | 
 | # else | 
 | #   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) | 
 | #     define SWIGEXPORT __attribute__ ((visibility("default"))) | 
 | #   else | 
 | #     define SWIGEXPORT | 
 | #   endif | 
 | # endif | 
 | #endif | 
 |  | 
 | /* calling conventions for Windows */ | 
 | #ifndef SWIGSTDCALL | 
 | # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | 
 | #   define SWIGSTDCALL __stdcall | 
 | # else | 
 | #   define SWIGSTDCALL | 
 | # endif | 
 | #endif | 
 |  | 
 | /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ | 
 | #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) | 
 | # define _CRT_SECURE_NO_DEPRECATE | 
 | #endif | 
 |  | 
 | /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ | 
 | #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) | 
 | # define _SCL_SECURE_NO_DEPRECATE | 
 | #endif | 
 |  | 
 |  | 
 |  | 
 | /* Fix for jlong on some versions of gcc on Windows */ | 
 | #if defined(__GNUC__) && !defined(__INTEL_COMPILER) | 
 |   typedef long long __int64; | 
 | #endif | 
 |  | 
 | /* Fix for jlong on 64-bit x86 Solaris */ | 
 | #if defined(__x86_64) | 
 | # ifdef _LP64 | 
 | #   undef _LP64 | 
 | # endif | 
 | #endif | 
 |  | 
 | #include <jni.h> | 
 | #include <stdlib.h> | 
 | #include <string.h> | 
 |  | 
 |  | 
 | /* Support for throwing Java exceptions */ | 
 | typedef enum { | 
 |   SWIG_JavaOutOfMemoryError = 1, | 
 |   SWIG_JavaIOException, | 
 |   SWIG_JavaRuntimeException, | 
 |   SWIG_JavaIndexOutOfBoundsException, | 
 |   SWIG_JavaArithmeticException, | 
 |   SWIG_JavaIllegalArgumentException, | 
 |   SWIG_JavaNullPointerException, | 
 |   SWIG_JavaDirectorPureVirtual, | 
 |   SWIG_JavaUnknownError | 
 | } SWIG_JavaExceptionCodes; | 
 |  | 
 | typedef struct { | 
 |   SWIG_JavaExceptionCodes code; | 
 |   const char *java_exception; | 
 | } SWIG_JavaExceptions_t; | 
 |  | 
 |  | 
 | static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) { | 
 |   jclass excep; | 
 |   static const SWIG_JavaExceptions_t java_exceptions[] = { | 
 |     { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" }, | 
 |     { SWIG_JavaIOException, "java/io/IOException" }, | 
 |     { SWIG_JavaRuntimeException, "java/lang/RuntimeException" }, | 
 |     { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" }, | 
 |     { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" }, | 
 |     { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" }, | 
 |     { SWIG_JavaNullPointerException, "java/lang/NullPointerException" }, | 
 |     { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" }, | 
 |     { SWIG_JavaUnknownError,  "java/lang/UnknownError" }, | 
 |     { (SWIG_JavaExceptionCodes)0,  "java/lang/UnknownError" } | 
 |   }; | 
 |   const SWIG_JavaExceptions_t *except_ptr = java_exceptions; | 
 |  | 
 |   while (except_ptr->code != code && except_ptr->code) | 
 |     except_ptr++; | 
 |  | 
 |   (*jenv)->ExceptionClear(jenv); | 
 |   excep = (*jenv)->FindClass(jenv, except_ptr->java_exception); | 
 |   if (excep) | 
 |     (*jenv)->ThrowNew(jenv, excep, msg); | 
 | } | 
 |  | 
 |  | 
 | /* Contract support */ | 
 |  | 
 | #define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else | 
 |  | 
 | /*  Errors in SWIG */ | 
 | #define  SWIG_UnknownError         -1 | 
 | #define  SWIG_IOError              -2 | 
 | #define  SWIG_RuntimeError         -3 | 
 | #define  SWIG_IndexError           -4 | 
 | #define  SWIG_TypeError            -5 | 
 | #define  SWIG_DivisionByZero       -6 | 
 | #define  SWIG_OverflowError        -7 | 
 | #define  SWIG_SyntaxError          -8 | 
 | #define  SWIG_ValueError           -9 | 
 | #define  SWIG_SystemError          -10 | 
 | #define  SWIG_AttributeError       -11 | 
 | #define  SWIG_MemoryError          -12 | 
 | #define  SWIG_NullReferenceError   -13 | 
 |  | 
 |  | 
 |  | 
 |  | 
 | SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) { | 
 |   SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError; | 
 |   switch(code) { | 
 |   case SWIG_MemoryError: | 
 |     exception_code = SWIG_JavaOutOfMemoryError; | 
 |     break; | 
 |   case SWIG_IOError: | 
 |     exception_code = SWIG_JavaIOException; | 
 |     break; | 
 |   case SWIG_SystemError: | 
 |   case SWIG_RuntimeError: | 
 |     exception_code = SWIG_JavaRuntimeException; | 
 |     break; | 
 |   case SWIG_OverflowError: | 
 |   case SWIG_IndexError: | 
 |     exception_code = SWIG_JavaIndexOutOfBoundsException; | 
 |     break; | 
 |   case SWIG_DivisionByZero: | 
 |     exception_code = SWIG_JavaArithmeticException; | 
 |     break; | 
 |   case SWIG_SyntaxError: | 
 |   case SWIG_ValueError: | 
 |   case SWIG_TypeError: | 
 |     exception_code = SWIG_JavaIllegalArgumentException; | 
 |     break; | 
 |   case SWIG_UnknownError: | 
 |   default: | 
 |     exception_code = SWIG_JavaUnknownError; | 
 |     break; | 
 |   } | 
 |   SWIG_JavaThrowException(jenv, exception_code, msg); | 
 | } | 
 |  | 
 |  | 
 | #if defined(SWIG_NOINCLUDE) || defined(SWIG_NOARRAYS) | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input); | 
 | void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input); | 
 | jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input); | 
 | void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input); | 
 | jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input); | 
 | void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input); | 
 | jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input); | 
 | void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input); | 
 | jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input); | 
 | void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input); | 
 | jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input); | 
 | void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input); | 
 | jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input); | 
 | void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input); | 
 | jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input); | 
 | void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input); | 
 | jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input); | 
 | void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input); | 
 | jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input); | 
 | void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input); | 
 | jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz); | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input); | 
 | void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input); | 
 | jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz); | 
 |  | 
 |  | 
 | #else | 
 |  | 
 |  | 
 | /* signed char[] support */ | 
 | int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetByteArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (signed char*) calloc(sz, sizeof(signed char)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (signed char)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jbyte)carr[i]; | 
 |   (*jenv)->ReleaseByteArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz) { | 
 |   jbyte *arr; | 
 |   int i; | 
 |   jbyteArray jresult = (*jenv)->NewByteArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetByteArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jbyte)result[i]; | 
 |   (*jenv)->ReleaseByteArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* unsigned char[] support */ | 
 | int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (unsigned char*) calloc(sz, sizeof(unsigned char)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (unsigned char)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jshort)carr[i]; | 
 |   (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz) { | 
 |   jshort *arr; | 
 |   int i; | 
 |   jshortArray jresult = (*jenv)->NewShortArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jshort)result[i]; | 
 |   (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* short[] support */ | 
 | int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (short*) calloc(sz, sizeof(short)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (short)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jshort)carr[i]; | 
 |   (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz) { | 
 |   jshort *arr; | 
 |   int i; | 
 |   jshortArray jresult = (*jenv)->NewShortArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jshort)result[i]; | 
 |   (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* unsigned short[] support */ | 
 | int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (unsigned short*) calloc(sz, sizeof(unsigned short)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (unsigned short)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jint)carr[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz) { | 
 |   jint *arr; | 
 |   int i; | 
 |   jintArray jresult = (*jenv)->NewIntArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jint)result[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* int[] support */ | 
 | int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (int*) calloc(sz, sizeof(int)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (int)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jint)carr[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz) { | 
 |   jint *arr; | 
 |   int i; | 
 |   jintArray jresult = (*jenv)->NewIntArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jint)result[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* unsigned int[] support */ | 
 | int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (unsigned int*) calloc(sz, sizeof(unsigned int)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (unsigned int)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jlong)carr[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz) { | 
 |   jlong *arr; | 
 |   int i; | 
 |   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jlong)result[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* long[] support */ | 
 | int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (long*) calloc(sz, sizeof(long)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (long)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jint)carr[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz) { | 
 |   jint *arr; | 
 |   int i; | 
 |   jintArray jresult = (*jenv)->NewIntArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jint)result[i]; | 
 |   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* unsigned long[] support */ | 
 | int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (unsigned long*) calloc(sz, sizeof(unsigned long)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (unsigned long)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jlong)carr[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz) { | 
 |   jlong *arr; | 
 |   int i; | 
 |   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jlong)result[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* jlong[] support */ | 
 | int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (jlong*) calloc(sz, sizeof(jlong)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (jlong)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jlong)carr[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz) { | 
 |   jlong *arr; | 
 |   int i; | 
 |   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jlong)result[i]; | 
 |   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* float[] support */ | 
 | int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetFloatArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (float*) calloc(sz, sizeof(float)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (float)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jfloat)carr[i]; | 
 |   (*jenv)->ReleaseFloatArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz) { | 
 |   jfloat *arr; | 
 |   int i; | 
 |   jfloatArray jresult = (*jenv)->NewFloatArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetFloatArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jfloat)result[i]; | 
 |   (*jenv)->ReleaseFloatArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | /* double[] support */ | 
 | int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetDoubleArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (double*) calloc(sz, sizeof(double)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (double)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jdouble)carr[i]; | 
 |   (*jenv)->ReleaseDoubleArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz) { | 
 |   jdouble *arr; | 
 |   int i; | 
 |   jdoubleArray jresult = (*jenv)->NewDoubleArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetDoubleArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jdouble)result[i]; | 
 |   (*jenv)->ReleaseDoubleArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | #endif | 
 |  | 
 |  | 
 | #include "webp/types.h" | 
 |  | 
 |  | 
 | int SWIG_JavaArrayInUint8 (JNIEnv *jenv, jbyte **jarr, uint8_t **carr, jbyteArray input); | 
 | void SWIG_JavaArrayArgoutUint8 (JNIEnv *jenv, jbyte *jarr, uint8_t *carr, jbyteArray input); | 
 | jbyteArray SWIG_JavaArrayOutUint8 (JNIEnv *jenv, uint8_t *result, jsize sz); | 
 |  | 
 |  | 
 | /* uint8_t[] support */ | 
 | int SWIG_JavaArrayInUint8 (JNIEnv *jenv, jbyte **jarr, uint8_t **carr, jbyteArray input) { | 
 |   int i; | 
 |   jsize sz; | 
 |   if (!input) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); | 
 |     return 0; | 
 |   } | 
 |   sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   *jarr = (*jenv)->GetByteArrayElements(jenv, input, 0); | 
 |   if (!*jarr) | 
 |     return 0; | 
 |   *carr = (uint8_t*) calloc(sz, sizeof(uint8_t)); | 
 |   if (!*carr) { | 
 |     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed"); | 
 |     return 0; | 
 |   } | 
 |   for (i=0; i<sz; i++) | 
 |     (*carr)[i] = (uint8_t)(*jarr)[i]; | 
 |   return 1; | 
 | } | 
 |  | 
 | void SWIG_JavaArrayArgoutUint8 (JNIEnv *jenv, jbyte *jarr, uint8_t *carr, jbyteArray input) { | 
 |   int i; | 
 |   jsize sz = (*jenv)->GetArrayLength(jenv, input); | 
 |   for (i=0; i<sz; i++) | 
 |     jarr[i] = (jbyte)carr[i]; | 
 |   (*jenv)->ReleaseByteArrayElements(jenv, input, jarr, 0); | 
 | } | 
 |  | 
 | jbyteArray SWIG_JavaArrayOutUint8 (JNIEnv *jenv, uint8_t *result, jsize sz) { | 
 |   jbyte *arr; | 
 |   int i; | 
 |   jbyteArray jresult = (*jenv)->NewByteArray(jenv, sz); | 
 |   if (!jresult) | 
 |     return NULL; | 
 |   arr = (*jenv)->GetByteArrayElements(jenv, jresult, 0); | 
 |   if (!arr) | 
 |     return NULL; | 
 |   for (i=0; i<sz; i++) | 
 |     arr[i] = (jbyte)result[i]; | 
 |   (*jenv)->ReleaseByteArrayElements(jenv, jresult, arr, 0); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | #include "webp/decode.h" | 
 | #include "webp/encode.h" | 
 |  | 
 |  | 
 | #define FillMeInAsSizeCannotBeDeterminedAutomatically \ | 
 |     (result ? (jint)ReturnedBufferSize(__FUNCTION__, arg3, arg4) : 0) | 
 |  | 
 |  | 
 | static size_t ReturnedBufferSize( | 
 |     const char* function, int* width, int* height) { | 
 |   static const struct sizemap { | 
 |     const char* function; | 
 |     int size_multiplier; | 
 |   } size_map[] = { | 
 | #ifdef SWIGJAVA | 
 |     { "Java_com_google_webp_libwebpJNI_WebPDecodeRGB",  3 }, | 
 |     { "Java_com_google_webp_libwebpJNI_WebPDecodeRGBA", 4 }, | 
 |     { "Java_com_google_webp_libwebpJNI_WebPDecodeARGB", 4 }, | 
 |     { "Java_com_google_webp_libwebpJNI_WebPDecodeBGR",  3 }, | 
 |     { "Java_com_google_webp_libwebpJNI_WebPDecodeBGRA", 4 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGB",  1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGR",  1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGBA", 1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGRA", 1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGB",  1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGR",  1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGBA", 1 }, | 
 |     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGRA", 1 }, | 
 | #endif | 
 | #ifdef SWIGPYTHON | 
 |     { "WebPDecodeRGB",  3 }, | 
 |     { "WebPDecodeRGBA", 4 }, | 
 |     { "WebPDecodeARGB", 4 }, | 
 |     { "WebPDecodeBGR",  3 }, | 
 |     { "WebPDecodeBGRA", 4 }, | 
 |     { "wrap_WebPEncodeRGB",  1 }, | 
 |     { "wrap_WebPEncodeBGR",  1 }, | 
 |     { "wrap_WebPEncodeRGBA", 1 }, | 
 |     { "wrap_WebPEncodeBGRA", 1 }, | 
 |     { "wrap_WebPEncodeLosslessRGB",  1 }, | 
 |     { "wrap_WebPEncodeLosslessBGR",  1 }, | 
 |     { "wrap_WebPEncodeLosslessRGBA", 1 }, | 
 |     { "wrap_WebPEncodeLosslessBGRA", 1 }, | 
 | #endif | 
 |     { NULL, 0 } | 
 |   }; | 
 |   const struct sizemap* p; | 
 |   size_t size = 0; | 
 |  | 
 |   for (p = size_map; p->function; ++p) { | 
 |     if (!strcmp(function, p->function)) { | 
 |       size = *width * *height * p->size_multiplier; | 
 |       break; | 
 |     } | 
 |   } | 
 |  | 
 |   return size; | 
 | } | 
 |  | 
 |  | 
 | typedef size_t (*WebPEncodeFunction)(const uint8_t* rgb, | 
 |                                      int width, int height, int stride, | 
 |                                      float quality_factor, uint8_t** output); | 
 | typedef size_t (*WebPEncodeLosslessFunction)(const uint8_t* rgb, | 
 |                                              int width, int height, int stride, | 
 |                                              uint8_t** output); | 
 |  | 
 | static uint8_t* EncodeLossy(const uint8_t* rgb, | 
 |                             int width, int height, int stride, | 
 |                             float quality_factor, | 
 |                             WebPEncodeFunction encfn, | 
 |                             int* output_size, int* unused) { | 
 |   uint8_t* output = NULL; | 
 |   const size_t image_size = | 
 |       encfn(rgb, width, height, stride, quality_factor, &output); | 
 |   // the values of following two will be interpreted by ReturnedBufferSize() | 
 |   // as 'width' and 'height' in the size calculation. | 
 |   *output_size = image_size; | 
 |   *unused = 1; | 
 |   return image_size ? output : NULL; | 
 | } | 
 |  | 
 | static uint8_t* EncodeLossless(const uint8_t* rgb, | 
 |                                int width, int height, int stride, | 
 |                                WebPEncodeLosslessFunction encfn, | 
 |                                int* output_size, int* unused) { | 
 |   uint8_t* output = NULL; | 
 |   const size_t image_size = encfn(rgb, width, height, stride, &output); | 
 |   // the values of the following two will be interpreted by | 
 |   // ReturnedBufferSize() as 'width' and 'height' in the size calculation. | 
 |   *output_size = image_size; | 
 |   *unused = 1; | 
 |   return image_size ? output : NULL; | 
 | } | 
 |  | 
 |  | 
 | // Changes the return type of WebPEncode* to more closely match Decode*. | 
 | // This also makes it easier to wrap the output buffer in a native type rather | 
 | // than dealing with the return pointer. | 
 | // The additional parameters are to allow reuse of ReturnedBufferSize(), | 
 | // unused2 and output_size will be used in this case. | 
 | #define LOSSY_WRAPPER(FUNC)                                             \ | 
 |   static uint8_t* wrap_##FUNC(                                          \ | 
 |       const uint8_t* rgb, int* unused1, int* unused2, int* output_size, \ | 
 |       int width, int height, int stride, float quality_factor) {        \ | 
 |     return EncodeLossy(rgb, width, height, stride, quality_factor,      \ | 
 |                        FUNC, output_size, unused2);                     \ | 
 |   }                                                                     \ | 
 |  | 
 | LOSSY_WRAPPER(WebPEncodeRGB) | 
 | LOSSY_WRAPPER(WebPEncodeBGR) | 
 | LOSSY_WRAPPER(WebPEncodeRGBA) | 
 | LOSSY_WRAPPER(WebPEncodeBGRA) | 
 |  | 
 | #undef LOSSY_WRAPPER | 
 |  | 
 | #define LOSSLESS_WRAPPER(FUNC)                                          \ | 
 |   static uint8_t* wrap_##FUNC(                                          \ | 
 |       const uint8_t* rgb, int* unused1, int* unused2, int* output_size, \ | 
 |       int width, int height, int stride) {                              \ | 
 |     return EncodeLossless(rgb, width, height, stride,                   \ | 
 |                           FUNC, output_size, unused2);                  \ | 
 |   }                                                                     \ | 
 |  | 
 | LOSSLESS_WRAPPER(WebPEncodeLosslessRGB) | 
 | LOSSLESS_WRAPPER(WebPEncodeLosslessBGR) | 
 | LOSSLESS_WRAPPER(WebPEncodeLosslessRGBA) | 
 | LOSSLESS_WRAPPER(WebPEncodeLosslessBGRA) | 
 |  | 
 | #undef LOSSLESS_WRAPPER | 
 |  | 
 |  | 
 |  | 
 | /* Work around broken gcj jni.h */ | 
 | #ifdef __GCJ_JNI_H__ | 
 | # undef JNIEXPORT | 
 | # define JNIEXPORT | 
 | # undef JNICALL | 
 | # define JNICALL | 
 | #endif | 
 |  | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetDecoderVersion(JNIEnv *jenv, jclass jcls) { | 
 |   jint jresult = 0 ; | 
 |   int result; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   result = (int)WebPGetDecoderVersion(); | 
 |   jresult = (jint)result; | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetInfo(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jint jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   int result; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (int)WebPGetInfo((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = (jint)result; | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (uint8_t *)WebPDecodeRGB((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (uint8_t *)WebPDecodeRGBA((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeARGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (uint8_t *)WebPDecodeARGB((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (uint8_t *)WebPDecodeBGR((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   size_t arg2 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp3 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (size_t)jarg2; | 
 |   { | 
 |     if (!jarg3) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg3 = &temp3; | 
 |   } | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   result = (uint8_t *)WebPDecodeBGRA((uint8_t const *)arg1,arg2,arg3,arg4); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp3; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue); | 
 |   } | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetEncoderVersion(JNIEnv *jenv, jclass jcls) { | 
 |   jint jresult = 0 ; | 
 |   int result; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   result = (int)WebPGetEncoderVersion(); | 
 |   jresult = (jint)result; | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   float arg8 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   arg8 = (float)jarg8; | 
 |   result = (uint8_t *)wrap_WebPEncodeRGB((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   float arg8 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   arg8 = (float)jarg8; | 
 |   result = (uint8_t *)wrap_WebPEncodeBGR((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   float arg8 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   arg8 = (float)jarg8; | 
 |   result = (uint8_t *)wrap_WebPEncodeRGBA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   float arg8 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   arg8 = (float)jarg8; | 
 |   result = (uint8_t *)wrap_WebPEncodeBGRA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   result = (uint8_t *)wrap_WebPEncodeLosslessRGB((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   result = (uint8_t *)wrap_WebPEncodeLosslessBGR((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   result = (uint8_t *)wrap_WebPEncodeLosslessRGBA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) { | 
 |   jbyteArray jresult = 0 ; | 
 |   uint8_t *arg1 = (uint8_t *) 0 ; | 
 |   int *arg2 = (int *) 0 ; | 
 |   int *arg3 = (int *) 0 ; | 
 |   int *arg4 = (int *) 0 ; | 
 |   int arg5 ; | 
 |   int arg6 ; | 
 |   int arg7 ; | 
 |   jbyte *jarr1 ; | 
 |   int temp4 ; | 
 |   uint8_t *result = 0 ; | 
 |  | 
 |   (void)jenv; | 
 |   (void)jcls; | 
 |   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0; | 
 |   arg2 = (int *)&jarg2; | 
 |   arg3 = (int *)&jarg3; | 
 |   { | 
 |     if (!jarg4) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null"); | 
 |       return 0; | 
 |     } | 
 |     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) { | 
 |       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element"); | 
 |       return 0; | 
 |     } | 
 |     arg4 = &temp4; | 
 |   } | 
 |   arg5 = (int)jarg5; | 
 |   arg6 = (int)jarg6; | 
 |   arg7 = (int)jarg7; | 
 |   result = (uint8_t *)wrap_WebPEncodeLosslessBGRA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7); | 
 |   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically); | 
 |   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1); | 
 |   { | 
 |     jint jvalue = (jint)temp4; | 
 |     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue); | 
 |   } | 
 |   free(arg1); | 
 |  | 
 |  | 
 |  | 
 |   free(result); | 
 |   return jresult; | 
 | } | 
 |  | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  |