VideoEditorJava.cpp revision 25ba294d1f7f16d285a98d4a8ec2524ca2f860da
1cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/*
2cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
3cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
4cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
5cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * you may not use this file except in compliance with the License.
6cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * You may obtain a copy of the License at
7cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
8cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
9cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
10cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
11cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
12cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * See the License for the specific language governing permissions and
14cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * limitations under the License.
15cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi */
16cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
17cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorClasses.h>
18cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorJava.h>
19cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorLogging.h>
20cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorOsal.h>
21cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
22cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiextern "C" {
23cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <M4OSA_CharStar.h>
24cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi};
25cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
26cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
27cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
2825ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowIllegalArgumentExceptionFunc(
29cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
30cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
31cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool                                condition,
3225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                const char*                         pMessage,
3325ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                const char*                         pFile,
3425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                int                                 lineNo)
35cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
36cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
37cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
38cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
39cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the condition is true.
40cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (condition)
41cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
42cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the exception.
43cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",\
4425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    "videoEditJava_checkAndThrowIllegalArgumentException, %s (%s:%d)",
4525ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    pMessage, pFile, lineNo);
46cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
47cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
48cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
49cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
50cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
51cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/IllegalArgumentException", pMessage);
52cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
53cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
54cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
55cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
56cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
5725ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowRuntimeExceptionFunc(
58cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
59cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
60cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool                                condition,
6125ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                M4OSA_ERR                           result,
6225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                const char*                         pFile,
6325ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                int                                 lineNo
6425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                )
65cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
66cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    const char* pMessage = NULL;
67cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
68cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
69cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
70cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
71cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the condition is true.
72cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (condition)
73cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
74cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Get the error string.
75cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pMessage = videoEditJava_getErrorName(result);
76cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
77cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the exception.
78cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
7925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    "videoEditJava_checkAndThrowRuntimeException, %s (%s:%d)",
8025ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    pMessage, pFile, lineNo);
81cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
82cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
83cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
84cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
85cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
86cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
87cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
88cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
89cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
90cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
91cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
9225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowIllegalStateExceptionFunc(
93cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
94cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
95cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool                                condition,
9625ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                const char*                         pMessage,
9725ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                const char*                         pFile,
9825ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                int                                 lineNo
9925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                )
100cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
101cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
102cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
103cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
104cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the condition is true.
105cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (condition)
106cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
107cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the exception.
108cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
10925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    "videoEditJava_checkAndThrowIllegalStateException, %s (%s:%d)",
11025ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang                    pMessage, pFile, lineNo);
111cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
112cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
113cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
114cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
115cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
116cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/IllegalStateException", pMessage);
117cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
118cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
119cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
120cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
121cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
122cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getClass(
123cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
124cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
125cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pName,
126cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jclass*                             pClazz)
127cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
128cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only look for the class if locating the previous action succeeded.
129cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
130cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
131cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
132cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
133cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_getClass(%s)", pName);
134cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
135cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Look up the class.
136cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jclass clazz = pEnv->FindClass(pName);
137cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
138cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
139cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
140cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
141cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class could be located.
142cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != clazz)
143cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
144cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Return the class.
145cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pClazz) = clazz;
146cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
147cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
148cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
149cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
150cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
151cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
152cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the error.
153cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
154cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "videoEditJava_getClass, error: unable to locate class %s", pName);
155cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
156cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
157cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/ClassNotFoundException",
158cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "unable to locate class");
159cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
160cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
161cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
162cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
163cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
164cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getMethodId(
165cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
166cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
167cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jclass                              clazz,
168cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pName,
169cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pType,
170cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jmethodID*                          pMethodId)
171cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
172cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only look for the class if locating the previous action succeeded.
173cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
174cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
175cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
176cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
177cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_getMethodId(%s,%s)", pName, pType);
178cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
179cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Look up the method id.
180cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jmethodID methodId = pEnv->GetMethodID(clazz, pName, pType);
181cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
182cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
183cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
184cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
185cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the method could be located.
186cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != methodId)
187cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
188cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Return the method id.
189cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pMethodId) = methodId;
190cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
191cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
192cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
193cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
194cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
195cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
196cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the error.
197cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
198cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "videoEditJava_getMethodId, error: unable to locate method %s with type %s",
199cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    pName, pType);
200cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
201cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
202cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/NoSuchMethodException", "unable to locate method");
203cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
204cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
205cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
206cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
207cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
208cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getFieldId(
209cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
210cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
211cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jclass                              clazz,
212cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pName,
213cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pType,
214cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jfieldID*                           pFieldId)
215cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
216cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only look for the class if locating the previous action succeeded.
217cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
218cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
219cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
220cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
221cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_getFieldId(%s,%s)", pName, pType);
222cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
223cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Look up the field id.
224cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jfieldID fieldId = pEnv->GetFieldID(clazz, pName, pType);
225cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
226cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
227cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
228cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
229cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the field could be located.
230cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != fieldId)
231cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
232cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Return the field id.
233cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pFieldId) = fieldId;
234cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
235cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
236cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
237cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
238cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
239cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
240cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the error.
241cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
242cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "videoEditJava_getFieldId, error: unable to locate field %s with type %s",
243cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    pName, pType);
244cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
245cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
246cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/NoSuchFieldException", "unable to locate field");
247cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
248cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
249cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
250cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
251cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
252cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getObject(
253cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
254cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
255cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jobject                             object,
256cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jfieldID                            objectFieldId,
257cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jobject*                            pObject)
258cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
259cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only retrieve the array object and size if the previous action succeeded.
260cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
261cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
262cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
263cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
264cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            "videoEditJava_getObject()");
265cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
266cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Retrieve the object.
267cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        (*pObject) = pEnv->GetObjectField(object, objectFieldId);
268cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
269cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
270cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
271cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
272cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
273cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
274cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
275cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getArray(
276cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
277cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
278cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jobject                             object,
279cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jfieldID                            arrayFieldId,
280cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jobjectArray*                       pArray,
281cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jsize*                              pArraySize)
282cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
283cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only retrieve the array object and size if the previous action succeeded.
284cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
285cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
286cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
287cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getArray()");
288cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
289cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Retrieve the array object.
290cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jobjectArray array     = (jobjectArray)pEnv->GetObjectField(object, arrayFieldId);
291cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jsize        arraySize = 0;
292cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
293cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
294cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
295cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
296cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the array could be retrieved.
297cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != array)
298cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
299cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Retrieve the array size.
300cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            arraySize = pEnv->GetArrayLength(array);
301cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
302cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
303cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Return the array and its size.
304cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        (*pArray)     = array;
305cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        (*pArraySize) = arraySize;
306cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
307cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
308cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
309cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid*
310cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getString(
311cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
312cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
313cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jobject                             object,
314cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jfieldID                            stringFieldId,
315cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                M4OSA_UInt32*                       pLength)
316cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
317cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    void*        pString = M4OSA_NULL;
318cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    jstring      string  = NULL;
319cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_UInt32 length  = 0;
320cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Char*  pLocal  = M4OSA_NULL;
321cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_ERR    result  = M4NO_ERROR;
322cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
323cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
324cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
325cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
326cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
327cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getString()");
328cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
329cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if an object containing a string was specified.
330cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != stringFieldId)
331cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
332cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Retrieve the string object.
333cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            string = (jstring)pEnv->GetObjectField(object, stringFieldId);
334cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
335cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Clear any resulting exceptions.
336cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pEnv->ExceptionClear();
337cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
338cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
339cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
340cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // The string itself was specified.
341cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            string = (jstring)object;
342cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
343cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
344cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the string could be retrieved.
345cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != string)
346cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
347cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Get a local copy of the string.
348cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pLocal = (M4OSA_Char*)pEnv->GetStringUTFChars(string, M4OSA_NULL);
349cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (M4OSA_NULL != pLocal)
350cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
351cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Determine the length of the path
352cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // (add one extra character for the zero terminator).
3537743fa64b11e9747d3ba8065a08a33ee9d90938fDheeraj Sharma                length = strlen((const char *)pLocal) + 1;
354cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
355cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Allocate memory for the string.
356cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pString = videoEditOsal_alloc(pResult, pEnv, length, "String");
357cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                if (*pResult)
358cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                {
359cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    // Copy the string.
360cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    result = M4OSA_chrNCopy((M4OSA_Char*)pString, pLocal, length);
361cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
362cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    // Check if the copy succeeded.
363cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    videoEditJava_checkAndThrowRuntimeException(pResult, pEnv,
364cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                     (M4NO_ERROR != result), result);
365cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
366cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    // Check if the string could not be copied.
367cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    if (!(*pResult))
368cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    {
369cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        // Free the allocated memory.
370cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        videoEditOsal_free(pString);
371cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pString = M4OSA_NULL;
372cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    }
373cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                }
374cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
375cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Release the local copy of the string.
376cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pEnv->ReleaseStringUTFChars(string, (const char *)pLocal);
377cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
378cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
379cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
380cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the string was empty or could be copied.
381cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (*pResult)
382cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
383cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if the length was requested.
384cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (M4OSA_NULL != pLength)
385cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
386cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Return the length.
387cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                (*pLength) = length;
388cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
389cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
390cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
391cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
392cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the string.
393cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(pString);
394cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
395cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
396cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
397cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getStaticIntField(
398cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
399cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
400cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jclass                              clazz,
401cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const char*                         pName,
402cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int*                                pValue)
403cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
404cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Only look for the class if locating the previous action succeeded.
405cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
406cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
407cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
408cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
409cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_getStaticIntField(%s)", pName);
410cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
411cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Look up the field id.
412cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        jfieldID fieldId = pEnv->GetStaticFieldID(clazz, pName, "I");
413cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
414cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Clear any resulting exceptions.
415cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        pEnv->ExceptionClear();
416cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
417cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the field could be located.
418cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (NULL != fieldId)
419cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
420cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Retrieve the field value.
421cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pValue) = pEnv->GetStaticIntField(clazz, fieldId);
422cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
423cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the value.
4244e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi            VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
425cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "videoEditJava_getStaticIntField, %s = %d", pName, (*pValue));
426cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
427cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
428cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
429cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Reset the result flag.
430cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
431cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
432cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Log the error.
433cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
434cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "videoEditJava_getStaticIntField, error: unable to locate field %s", pName);
435cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
436cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Throw an exception.
437cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            jniThrowException(pEnv, "java/lang/NoSuchFieldException",
438cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "unable to locate static field");
439cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
440cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
441cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
442cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
443cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
444cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initConstantClass(
445cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
446cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
447cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_ConstantsClass*               pClass)
448cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
449cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool   gotten = true;
450cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    jclass clazz  = NULL;
451cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int    index  = 0;
452cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
453cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
454cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
455cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
456cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
457cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
458cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_initConstantClass(%s)", pClass->pName);
459cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
460cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Only initialize the class once.
461cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (!pClass->initialized)
462cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
463cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Look up the class.
464cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
465cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
466cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Loop over the constants.
467cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            for (index = 0; index < pClass->count; index++)
468cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
469cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Look up the constant.
470cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                videoEditJava_getStaticIntField(pResult, pEnv, clazz,
471cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                                        pClass->pConstants[index].pName,
472cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                                        &pClass->pConstants[index].java);
473cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
474cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
475cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if all constants could be located.
476cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (*pResult)
477cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
478cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the initialized flag.
479cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pClass->initialized = true;
480cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
481cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
482cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
483cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
484cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
485cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char*
486cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassName(
487cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
488cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value,
489cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_UnknownConstant               unknown)
490cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
491cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    const char* pName = M4OSA_NULL;
492cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int         index = 0;
493cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
494cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Loop over the list with constants.
495cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    for (index = 0;
496cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi         ((M4OSA_NULL == pName) && (index < pClass->count));
497cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi         index++)
498cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
499cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the specified value matches the c value of the constant.
500cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (value == pClass->pConstants[index].c)
501cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
502cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the name.
503cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pName = pClass->pConstants[index].pName;
504cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
505cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
506cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
507cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if no constant was found.
508cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (M4OSA_NULL == pName)
509cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
510cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if a function was specified to handle this case.
511cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (M4OSA_NULL != unknown)
512cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
513cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Pass the constant to the specified unknown function.
514cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pName = unknown(value);
515cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
516cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
517cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
518cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the description to a default value.
519cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pName = "<unknown>";
520cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
521cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
522cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
523cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the result.
524cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(pName);
525cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
526cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
527cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char*
528cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassString(
529cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
530cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value,
531cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_UnknownConstant               unknown)
532cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
533cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    const char* pString = M4OSA_NULL;
534cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int         index   = 0;
535cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
536cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Loop over the list with constants.
537cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    for (index = 0;
538cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi         ((M4OSA_NULL == pString) && (index < pClass->count));
539cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi         index++)
540cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
541cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the specified value matches the c value of the constant.
542cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (value == pClass->pConstants[index].c)
543cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
544cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the description.
545cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pString = pClass->pConstants[index].pDescription;
546cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
547cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
548cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
549cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if no constant was found.
550cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (M4OSA_NULL == pString)
551cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
552cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if a function was specified to handle this case.
553cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (M4OSA_NULL != unknown)
554cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
555cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Pass the constant to the specified unknown function.
556cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pString = unknown(value);
557cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
558cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        else
559cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
560cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the description to a default value.
561cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            pString = "<unknown>";
562cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
563cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
564cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
565cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the result.
566cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(pString);
567cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
568cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
569cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint
570cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC(
571cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
572cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
573cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value)
574cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
575cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool gotten = false;
576cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int  index  = 0;
577cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
578cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
579cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
580cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
581cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Loop over the list with constants.
582cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        for (index = 0; ((!gotten) && (index < pClass->count)); index++)
583cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
584cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if the specified value matches the java value of the constant.
585cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (value == pClass->pConstants[index].java)
586cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
587cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the value to the c value.
588cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                value = pClass->pConstants[index].c;
589cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
590cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the gotten flag.
591cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                gotten = true;
592cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
593cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
594cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
595cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the value was not found.
596cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (!gotten)
597cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
598cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            (*pResult) = false;
599cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
600cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
601cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
602cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the translated value.
603cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(value);
604cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
605cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
606cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint
607cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC(
608cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
609cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
610cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value,
611cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 unknown)
612cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
613cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool gotten = false;
614cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int  index  = 0;
615cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
616cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
617cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
618cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
619cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Loop over the list with constants.
620cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        for (index = 0; ((!gotten) && (index < pClass->count)); index++)
621cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
622cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if the specified value matches the java value of the constant.
623cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (value == pClass->pConstants[index].java)
624cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
625cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the value to the c value.
626cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                value = pClass->pConstants[index].c;
627cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
628cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the gotten flag.
629cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                gotten = true;
630cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
631cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
632cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
633cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // If the constant was not found, look for the specified unknown.
634cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (!gotten)
635cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
636cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the value to the c value.
637cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            value = unknown;
638cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
639cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
640cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
641cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the translated value.
642cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(value);
643cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
644cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
645cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint
646cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava(
647cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
648cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value)
649cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
650cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool gotten = false;
651cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int  index  = 0;
652cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
653cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Loop over the list with constants.
654cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    for (index = 0; ((!gotten) && (index < pClass->count)); index++)
655cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
656cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the specified value matches the c value of the constant.
657cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (value == pClass->pConstants[index].c)
658cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
659cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the value to the java value.
660cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            value = pClass->pConstants[index].java;
661cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
662cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the gotten flag.
663cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            gotten = true;
664cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
665cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
666cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
667cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the translated value.
668cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(value);
669cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
670cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
671cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint
672cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava(
673cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_ConstantsClass*         pClass,
674cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 value,
675cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 unknown)
676cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
677cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool gotten = false;
678cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int  index  = 0;
679cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
680cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Loop over the list with constants.
681cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    for (index = 0; ((!gotten) && (index < pClass->count)); index++)
682cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
683cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the specified value matches the c value of the constant.
684cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (value == pClass->pConstants[index].c)
685cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
686cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the value to the java value.
687cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            value = pClass->pConstants[index].java;
688cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
689cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Set the gotten flag.
690cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            gotten = true;
691cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
692cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
693cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
694cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // If the constant was not found, look for the specified unknown.
695cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (!gotten)
696cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
697cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Loop over the list with constants.
698cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        for (index = 0; ((!gotten) && (index < pClass->count)); index++)
699cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
700cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if the specified value matches the java value of the constant.
701cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (unknown == pClass->pConstants[index].c)
702cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
703cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the value to the c value.
704cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                value = pClass->pConstants[index].java;
705cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
706cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the gotten flag.
707cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                gotten = true;
708cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
709cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
710cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
711cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
712cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Return the translated value.
713cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    return(value);
714cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
715cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
716cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
717cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initFieldClass(
718cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
719cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
720cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_FieldsClass*                  pClass)
721cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
722cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool   gotten = true;
723cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    jclass clazz  = NULL;
724cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int    index  = 0;
725cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
726cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
727cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
728cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
729cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
730cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
731cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_initFieldClass(%s)", pClass->pName);
732cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
733cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Only initialize the class once.
734cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (!pClass->initialized)
735cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
736cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Look up the class.
737cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
738cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
739cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Loop over the fields.
740cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            for (index = 0; index < pClass->count; index++)
741cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
742cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Look up the field id.
743cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                videoEditJava_getFieldId(
744cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pResult,
745cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pEnv,
746cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        clazz,
747cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pClass->pFields[index].pName,
748cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pClass->pFields[index].pType,
749cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        &pClass->pFields[index].fieldId);
750cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
751cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
752cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if all fields could be located.
753cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (*pResult)
754cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
755cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the initialized flag.
756cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pClass->initialized = true;
757cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
758cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
759cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
760cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
761cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
762cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
763cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassClass(
764cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
765cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
766cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_FieldsClass*            pClass,
767cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                jclass*                             pClazz)
768cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
769cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
770cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
771cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
772cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class is initialized.
773cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
774cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "field class not initialized");
775cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
776cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Get the class.
777cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_getClass(pResult, pEnv, pClass->pName, pClazz);
778cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
779cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
780cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
781cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
782cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassFieldIds(
783cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
784cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
785cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_FieldsClass*            pClass,
786cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 count,
787cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_FieldIds*                     pIds)
788cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
789cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int index = 0;
790cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
791cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
792cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
793cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
794cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class is initialized.
795cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
796cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "field class not initialized");
797cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
798cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the number of fields matches.
799cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
800cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                (pClass->count != count),
801cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "field class type mismatch");
802cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
803cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class and object are valid.
804cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (*pResult)
805cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
806cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Loop over the class fields.
807cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            for (index = 0; index < count; index++)
808cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
809cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Copy the field ids.
810cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pIds->fieldIds[index] = pClass->pFields[index].fieldId;
811cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
812cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
813cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
814cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
815cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
816cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
817cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initMethodClass(
818cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
819cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
820cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_MethodsClass*                 pClass)
821cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
822cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    bool   gotten = true;
823cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    jclass clazz  = NULL;
824cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int    index  = 0;
825cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
826cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
827cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
828cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
829cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Log the function call.
830cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
831cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                "videoEditJava_initMethodClass(%s)", pClass->pName);
832cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
833cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Only initialize the class once.
834cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (!pClass->initialized)
835cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
836cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Look up the class.
837cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
838cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
839cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Loop over the methods.
840cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            for (index = 0; index < pClass->count; index++)
841cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
842cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Look up the method id.
843cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                videoEditJava_getMethodId(
844cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pResult,
845cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pEnv,
846cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        clazz,
847cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pClass->pMethods[index].pName,
848cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        pClass->pMethods[index].pType,
849cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                        &pClass->pMethods[index].methodId);
850cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
851cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
852cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Check if all methods could be located.
853cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            if (*pResult)
854cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
855cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Set the initialized flag.
856cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pClass->initialized = true;
857cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
858cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
859cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
860cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
861cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
862cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid
863cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_methodClassMethodIds(
864cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                bool*                               pResult,
865cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                JNIEnv*                             pEnv,
866cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                const VideoEditJava_MethodsClass*   pClass,
867cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                int                                 count,
868cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                VideoEditJava_MethodIds*            pIds)
869cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
870cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    int index = 0;
871cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
872cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    // Check if the previous action succeeded.
873cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (*pResult)
874cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    {
875cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class is initialized.
876cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
877cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "method class not initialized");
878cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
879cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the number of methods matches.
880cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,\
881cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    (pClass->count != count),
882cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                    "method class type mismatch");
883cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
884cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        // Check if the class and object are valid.
885cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        if (*pResult)
886cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        {
887cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            // Loop over the class methods.
888cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            for (index = 0; index < count; index++)
889cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            {
890cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                // Copy the method ids.
891cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi                pIds->methodIds[index] = pClass->pMethods[index].methodId;
892cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi            }
893cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        }
894cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    }
895cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
896cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
897