source: branches/r9/lang/java/jRpUnits.cc @ 4852

Last change on this file since 4852 was 3177, checked in by mmc, 12 years ago

Updated all of the copyright notices to reference the transfer to
the new HUBzero Foundation, LLC.

File size: 1.6 KB
Line 
1/*
2 * ======================================================================
3 *  AUTHOR:  Ben Rafferty, Purdue University
4 *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
5 *
6 *  See the file "license.terms" for information on usage and
7 *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
8 * ======================================================================
9 */
10
11/*
12 * This file defines the native functions which are called by the java Units
13 * class methods, and in turn call the corresponding rappture RpUnits methods.
14 */
15
16#include "jRpUnits.h"
17#include "rappture.h"
18
19// convertString
20JNIEXPORT jstring JNICALL Java_rappture_Units_jRpUnitsConvert
21  (JNIEnv *env, jclass cls, jstring javaFromVal, jstring javaTo, jboolean units){
22  const char* nativeFromVal = env->GetStringUTFChars(javaFromVal, 0);
23  const char* nativeTo = env->GetStringUTFChars(javaTo, 0);
24  int err;
25  jclass ex;
26  std::string errorMsg;
27
28  // perform conversion
29  std::string retStr = RpUnits::convert(nativeFromVal, nativeTo,
30                                       (int)units, &err);
31
32  // raise a runtime exception on error
33  if (err){
34    ex = env->FindClass("java/lang/RuntimeException");
35    if (ex){
36      errorMsg = "Cannot convert ";
37      errorMsg += nativeFromVal;
38      errorMsg += " to ";
39      errorMsg += nativeTo;
40      env->ThrowNew(ex, errorMsg.c_str());
41    }
42    env->DeleteLocalRef(ex);
43  }
44
45  env->ReleaseStringUTFChars(javaFromVal, nativeFromVal);
46  env->ReleaseStringUTFChars(javaTo, nativeTo);
47
48  // create new java string and return
49  return (env->NewStringUTF(retStr.c_str()));
50}
51
Note: See TracBrowser for help on using the repository browser.