root/ompi/mpi/java/c/mpi_Info.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. Java_mpi_Info_create
  2. Java_mpi_Info_getEnv
  3. Java_mpi_Info_getNull
  4. Java_mpi_Info_set
  5. Java_mpi_Info_get
  6. Java_mpi_Info_delete
  7. Java_mpi_Info_size
  8. Java_mpi_Info_getKey
  9. Java_mpi_Info_dup
  10. Java_mpi_Info_free
  11. Java_mpi_Info_isNull

   1 /*
   2  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   3  *                         University Research and Technology
   4  *                         Corporation.  All rights reserved.
   5  * Copyright (c) 2004-2005 The University of Tennessee and The University
   6  *                         of Tennessee Research Foundation.  All rights
   7  *                         reserved.
   8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
   9  *                         University of Stuttgart.  All rights reserved.
  10  * Copyright (c) 2004-2005 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * $COPYRIGHT$
  13  *
  14  * Additional copyrights may follow
  15  *
  16  * $HEADER$
  17  */
  18 
  19 #include "ompi_config.h"
  20 
  21 #include <stdlib.h>
  22 #ifdef HAVE_TARGETCONDITIONALS_H
  23 #include <TargetConditionals.h>
  24 #endif
  25 
  26 #include "mpi.h"
  27 #include "mpi_Info.h"
  28 #include "mpiJava.h"
  29 
  30 JNIEXPORT jlong JNICALL Java_mpi_Info_create(JNIEnv *env, jobject jthis)
  31 {
  32     MPI_Info info;
  33     int rc = MPI_Info_create(&info);
  34     ompi_java_exceptionCheck(env, rc);
  35     return (jlong)info;
  36 }
  37 
  38 JNIEXPORT jlong JNICALL Java_mpi_Info_getEnv(JNIEnv *env, jclass clazz)
  39 {
  40     return (jlong)MPI_INFO_ENV;
  41 }
  42 
  43 JNIEXPORT jlong JNICALL Java_mpi_Info_getNull(JNIEnv *env, jclass clazz)
  44 {
  45     return (jlong)MPI_INFO_NULL;
  46 }
  47 
  48 JNIEXPORT void JNICALL Java_mpi_Info_set(
  49         JNIEnv *env, jobject jthis, jlong handle, jstring jkey, jstring jvalue)
  50 {
  51     const char *key   = (*env)->GetStringUTFChars(env, jkey,   NULL),
  52                *value = (*env)->GetStringUTFChars(env, jvalue, NULL);
  53 
  54     int rc = MPI_Info_set((MPI_Info)handle, (char*)key, (char*)value);
  55     ompi_java_exceptionCheck(env, rc);
  56 
  57     (*env)->ReleaseStringUTFChars(env, jkey,   key);
  58     (*env)->ReleaseStringUTFChars(env, jvalue, value);
  59 }
  60 
  61 JNIEXPORT jstring JNICALL Java_mpi_Info_get(
  62         JNIEnv *env, jobject jthis, jlong handle, jstring jkey)
  63 {
  64     MPI_Info info = (MPI_Info)handle;
  65     const char *key = (*env)->GetStringUTFChars(env, jkey, NULL);
  66 
  67     int rc, valueLen, flag;
  68     rc = MPI_Info_get_valuelen(info, (char*)key, &valueLen, &flag);
  69 
  70     if(ompi_java_exceptionCheck(env, rc) || !flag)
  71     {
  72         (*env)->ReleaseStringUTFChars(env, jkey, key);
  73         return NULL;
  74     }
  75 
  76     char *value = (char*)calloc(valueLen + 1, sizeof(char));
  77     rc = MPI_Info_get((MPI_Info)info, (char*)key, valueLen, value, &flag);
  78     (*env)->ReleaseStringUTFChars(env, jkey, key);
  79 
  80     if(ompi_java_exceptionCheck(env, rc) || !flag)
  81     {
  82         free(value);
  83         return NULL;
  84     }
  85 
  86     jstring jvalue = (*env)->NewStringUTF(env, value);
  87     free(value);
  88     return jvalue;
  89 }
  90 
  91 JNIEXPORT void JNICALL Java_mpi_Info_delete(
  92         JNIEnv *env, jobject jthis, jlong handle, jstring jkey)
  93 {
  94     const char *key = (*env)->GetStringUTFChars(env, jkey, NULL);
  95     int rc = MPI_Info_delete((MPI_Info)handle, (char*)key);
  96     ompi_java_exceptionCheck(env, rc);
  97     (*env)->ReleaseStringUTFChars(env, jkey, key);
  98 }
  99 
 100 JNIEXPORT jint JNICALL Java_mpi_Info_size(
 101         JNIEnv *env, jobject jthis, jlong handle)
 102 {
 103     int rc, nkeys;
 104     rc = MPI_Info_get_nkeys((MPI_Info)handle, &nkeys);
 105     ompi_java_exceptionCheck(env, rc);
 106     return (jint)nkeys;
 107 }
 108 
 109 JNIEXPORT jstring JNICALL Java_mpi_Info_getKey(
 110         JNIEnv *env, jobject jthis, jlong handle, jint i)
 111 {
 112     char key[MPI_MAX_INFO_KEY + 1];
 113     int rc = MPI_Info_get_nthkey((MPI_Info)handle, i, key);
 114 
 115     return ompi_java_exceptionCheck(env, rc)
 116            ? NULL : (*env)->NewStringUTF(env, key);
 117 }
 118 
 119 JNIEXPORT jlong JNICALL Java_mpi_Info_dup(
 120         JNIEnv *env, jobject jthis, jlong handle)
 121 {
 122     MPI_Info newInfo;
 123     int rc = MPI_Info_dup((MPI_Info)handle, &newInfo);
 124     ompi_java_exceptionCheck(env, rc);
 125     return (jlong)newInfo;
 126 }
 127 
 128 JNIEXPORT jlong JNICALL Java_mpi_Info_free(
 129         JNIEnv *env, jobject jthis, jlong handle)
 130 {
 131     MPI_Info info = (MPI_Info)handle;
 132     int rc = MPI_Info_free(&info);
 133     ompi_java_exceptionCheck(env, rc);
 134     return (jlong)info;
 135 }
 136 
 137 JNIEXPORT jboolean JNICALL Java_mpi_Info_isNull(
 138         JNIEnv *env, jobject jthis, jlong handle)
 139 {
 140     return (MPI_Info)handle == MPI_INFO_NULL ? JNI_TRUE : JNI_FALSE;
 141 }

/* [<][>][^][v][top][bottom][index][help] */