summaryrefslogtreecommitdiffstats
path: root/luni/src/main/native/NativeDecimalFormat.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2010-06-15 17:58:00 -0700
committerElliott Hughes <enh@google.com>2010-06-15 17:58:00 -0700
commit94782d07dd2d65b1a37fddca68eb9a9ac81ada4a (patch)
tree83d6365ffe0272c4053349ab7a8fc17496d22d22 /luni/src/main/native/NativeDecimalFormat.cpp
parentcb8d09e94846d073ee7b50bef89c0b33113697fb (diff)
downloadlibcore-94782d07dd2d65b1a37fddca68eb9a9ac81ada4a.zip
libcore-94782d07dd2d65b1a37fddca68eb9a9ac81ada4a.tar.gz
libcore-94782d07dd2d65b1a37fddca68eb9a9ac81ada4a.tar.bz2
Use Integer.valueOf rather than "new Integer" (et cetera) from JNI.
Also factor it out rather than keep duplicating it. Change-Id: I6349668f4676f1e0a7dd6fdc101dd1784c5465fb
Diffstat (limited to 'luni/src/main/native/NativeDecimalFormat.cpp')
-rw-r--r--luni/src/main/native/NativeDecimalFormat.cpp36
1 files changed, 13 insertions, 23 deletions
diff --git a/luni/src/main/native/NativeDecimalFormat.cpp b/luni/src/main/native/NativeDecimalFormat.cpp
index 2f1d344..759a271 100644
--- a/luni/src/main/native/NativeDecimalFormat.cpp
+++ b/luni/src/main/native/NativeDecimalFormat.cpp
@@ -15,18 +15,20 @@
*/
#define LOG_TAG "NativeDecimalFormat"
+
+#include "ErrorCode.h"
#include "JNIHelp.h"
+#include "ScopedJavaUnicodeString.h"
+#include "ScopedPrimitiveArray.h"
+#include "ScopedUtfChars.h"
#include "cutils/log.h"
-#include "unicode/unum.h"
-#include "unicode/numfmt.h"
+#include "digitlst.h"
#include "unicode/decimfmt.h"
#include "unicode/fmtable.h"
+#include "unicode/numfmt.h"
+#include "unicode/unum.h"
#include "unicode/ustring.h"
-#include "digitlst.h"
-#include "ErrorCode.h"
-#include "ScopedJavaUnicodeString.h"
-#include "ScopedPrimitiveArray.h"
-#include "ScopedUtfChars.h"
+#include "valueOf.h"
#include <stdlib.h>
#include <string.h>
@@ -276,18 +278,6 @@ static jstring formatDigitList(JNIEnv* env, jclass, jint addr, jstring value, jo
return format(env, addr, fpIter, sp);
}
-static jobject newLong(JNIEnv* env, jlong value) {
- static jclass gLongClass = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Long"));
- static jmethodID gLong_init = env->GetMethodID(gLongClass, "<init>", "(J)V");
- return env->NewObject(gLongClass, gLong_init, value);
-}
-
-static jobject newDouble(JNIEnv* env, jdouble value) {
- static jclass gDoubleClass = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Double"));
- static jmethodID gDouble_init = env->GetMethodID(gDoubleClass, "<init>", "(D)V");
- return env->NewObject(gDoubleClass, gDouble_init, value);
-}
-
static jobject newBigDecimal(JNIEnv* env, const char* value, jsize len) {
static jclass gBigDecimalClass = (jclass) env->NewGlobalRef(env->FindClass("java/math/BigDecimal"));
static jmethodID gBigDecimal_init = env->GetMethodID(gBigDecimalClass, "<init>", "(Ljava/lang/String;)V");
@@ -347,7 +337,7 @@ static jobject parse(JNIEnv* env, jclass, jint addr, jstring text,
strncmp(data, "Inf", 3) == 0 ||
strncmp(data, "-Inf", 4) == 0) {
double resultDouble = res.getDouble(status);
- return newDouble(env, (jdouble) resultDouble);
+ return doubleValueOf(env, (jdouble) resultDouble);
}
return newBigDecimal(env, data, len);
}
@@ -358,15 +348,15 @@ static jobject parse(JNIEnv* env, jclass, jint addr, jstring text,
switch(numType) {
case Formattable::kDouble: {
double resultDouble = res.getDouble();
- return newDouble(env, (jdouble) resultDouble);
+ return doubleValueOf(env, (jdouble) resultDouble);
}
case Formattable::kLong: {
long resultLong = res.getLong();
- return newLong(env, (jlong) resultLong);
+ return longValueOf(env, (jlong) resultLong);
}
case Formattable::kInt64: {
int64_t resultInt64 = res.getInt64();
- return newLong(env, (jlong) resultInt64);
+ return longValueOf(env, (jlong) resultInt64);
}
default: {
return NULL;