Main Page | Namespace List | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

sampleJNImain.c

Go to the documentation of this file.
00001 /*!
00002  * @file sampleJNImain.c
00003  *
00004  * @brief Sample program to call JNI functions from a shared object.
00005  *
00006  * This code will generate external references to JNI 'C' function
00007  * entry point versions of Java JNI native methods.  These, in turn,
00008  * are designed to be stored into a shared object.  They reference
00009  * JNI 'C' function entry point versions of Java JNI @e local native
00010  * methods (because of the fact that they are @c @b java.lang.*
00011  * classes).  For anything besides @c @b java.lang.*, these
00012  * references would be to regular JNI 'C' or 'C++' or Fortran or
00013  * assembly or COBOL (gulp) or whatever kind of library code is
00014  * appropriate.
00015  *
00016  * The point with this sample @c @b main() program is to
00017  * create a sample program fragment that shows where the JNI
00018  * shared object fits into the overall scheme of things.  The
00019  * functions they reference demonstrate how to reference JNI
00020  * @e local native methods in the core JVM code.
00021  *
00022  *
00023  * @section Control
00024  *
00025  * \$URL: https://svn.apache.org/path/name/sampleJNImain.c $ \$Id: sampleJNImain.c 0 09/28/2005 dlydick $
00026  *
00027  * Copyright 2005 The Apache Software Foundation
00028  * or its licensors, as applicable.
00029  *
00030  * Licensed under the Apache License, Version 2.0 ("the License");
00031  * you may not use this file except in compliance with the License.
00032  * You may obtain a copy of the License at
00033  *
00034  *     http://www.apache.org/licenses/LICENSE-2.0
00035  *
00036  * Unless required by applicable law or agreed to in writing,
00037  * software distributed under the License is distributed on an
00038  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
00039  * either express or implied.
00040  *
00041  * See the License for the specific language governing permissions
00042  * and limitations under the License.
00043  *
00044  * @version \$LastChangedRevision: 0 $
00045  *
00046  * @date \$LastChangedDate: 09/28/2005 $
00047  *
00048  * @author \$LastChangedBy: dlydick $
00049  *         Original code contributed by Daniel Lydick on 09/28/2005.
00050  *
00051  * @section Reference
00052  *
00053  */
00054 
00055 #include <stdlib.h>
00056 #include <jni.h>
00057 
00058 #include "java_lang_Object.h"
00059 #include "java_lang_Class.h"
00060 #include "java_lang_String.h"
00061 #include "java_lang_Thread.h"
00062 
00063 JNIEnv env;
00064 
00065 jclass  clsidx_null    = 0;
00066 jobject objhash_null   = 0;
00067 jlong   long_int       = 0;
00068 jint    regular_int    = 0;
00069 jboolean boolean_value = JNI_FALSE;
00070 
00071 int main(int argc, char **argv, char **envp)
00072 {
00073     JNIEnv *penv = &env;
00074 
00075     /* Register natives for all appropriate classes */
00076     Java_java_lang_Object_registerNatives(penv, clsidx_null);
00077     Java_java_lang_Class_registerNatives(penv, clsidx_null);
00078     Java_java_lang_String_registerNatives(penv, clsidx_null);
00079     Java_java_lang_Thread_registerNatives(penv, clsidx_null);
00080 
00081     /* Access the various methods */
00082     Java_java_lang_Object_hashCode(penv, objhash_null);
00083     Java_java_lang_Object_wait(penv, objhash_null);
00084     Java_java_lang_Object_wait__J(penv, objhash_null, long_int);
00085 
00086     Java_java_lang_Class_isArray(penv, objhash_null);
00087     Java_java_lang_Class_isPrimitive(penv, objhash_null);
00088 
00089     Java_java_lang_String_intern(penv, objhash_null);
00090 
00091     Java_java_lang_Thread_yield(penv, clsidx_null);
00092     Java_java_lang_Thread_interrupt(penv, objhash_null);
00093     Java_java_lang_Thread_interrupted(penv, clsidx_null);
00094     Java_java_lang_Thread_isInterrupted(penv, objhash_null);
00095     Java_java_lang_Thread_sleep__J(penv, clsidx_null, long_int);
00096     Java_java_lang_Thread_sleep__JI(penv,
00097                                     clsidx_null,
00098                                     long_int,
00099                                     regular_int);
00100     Java_java_lang_Thread_join(penv, objhash_null);
00101     Java_java_lang_Thread_join__J(penv, objhash_null, long_int);
00102     Java_java_lang_Thread_join__JI(penv,
00103                                    objhash_null,
00104                                    long_int,
00105                                    regular_int);
00106     Java_java_lang_Thread_isAlive(penv, objhash_null);
00107     Java_java_lang_Thread_start(penv, objhash_null);
00108     Java_java_lang_Thread_countStackFrames(penv, objhash_null);
00109     Java_java_lang_Thread_holdsLock(penv, clsidx_null, objhash_null);
00110     Java_java_lang_Thread_setPriority(penv, objhash_null, regular_int);
00111     Java_java_lang_Thread_getPriority(penv, objhash_null);
00112     Java_java_lang_Thread_destroy(penv, objhash_null);
00113     Java_java_lang_Thread_checkAccess(penv, objhash_null);
00114     Java_java_lang_Thread_setDaemon(penv, objhash_null, boolean_value);
00115     Java_java_lang_Thread_isDaemon(penv, objhash_null);
00116     Java_java_lang_Thread_stop(penv, objhash_null);
00117     Java_java_lang_Thread_resume(penv, objhash_null);
00118     Java_java_lang_Thread_suspend(penv, objhash_null);
00119     Java_java_lang_Thread_currentThread(penv, clsidx_null);
00120 
00121 
00122     /* Unregister natives for library unload, where implemented */
00123     Java_java_lang_Object_unregisterNatives(penv, clsidx_null);
00124     Java_java_lang_Class_unregisterNatives(penv, clsidx_null);
00125     Java_java_lang_String_unregisterNatives(penv, clsidx_null);
00126     Java_java_lang_Thread_unregisterNatives(penv, clsidx_null);
00127 
00128     exit(0);
00129 
00130 } /* END of main() */
00131 
00132 
00133 /* EOF */
00134 

Generated on Fri Sep 30 18:59:21 2005 by  doxygen 1.4.4