blob: a6c4f7f1a759f1fefd5b5b1747593132a4a4f4f4 [file] [log] [blame]
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
/* -*-C++-*-
*****************************************************************************
*
* File: JavaSplitter.cpp
* Description: Splitter functions to support different code path for
* NSJ 3.0 IEEE float and NSJ2.0 Tandem float
*
*
* Created: 8/15/02
* Language: C++
*
*
*
*
*****************************************************************************
*/
#include <jni.h>
#include "JavaSplitter.h"
#include "Platform.h"
#include <iostream>
#include <string.h>
#include "ComDiags.h"
#include "LmError.h"
static JavaNormal normalJava;
static JavaVirtual *splitter = &normalJava;
// class JavaSplitter function definitions
Lng32 JavaSplitter::setupVersion(JNIEnv *jni, ComDiagsArea *diags)
{
return 0;
}
jfloat JavaSplitter::CallStaticFloatMethod(JNIEnv *env, jclass clazz,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallStaticFloatMethodV(env, clazz, methodID, args);
}
jdouble JavaSplitter::CallStaticDoubleMethod(JNIEnv *env, jclass clazz,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallStaticDoubleMethodV(env, clazz, methodID, args);
}
jfloat JavaSplitter::CallStaticFloatMethodA(JNIEnv *env, jclass clazz,
jmethodID methodID, jvalue *args)
{
return splitter->CallStaticFloatMethodA(env, clazz, methodID, args);
}
jdouble JavaSplitter::CallStaticDoubleMethodA(JNIEnv *env, jclass clazz,
jmethodID methodID, jvalue *args)
{
return splitter->CallStaticDoubleMethodA(env, clazz, methodID, args);
}
jfloat JavaSplitter::CallStaticFloatMethodV(JNIEnv *env, jclass clazz,
jmethodID methodID, va_list args)
{
return splitter->CallStaticFloatMethodV(env, clazz, methodID, args);
}
jdouble JavaSplitter::CallStaticDoubleMethodV(JNIEnv *env, jclass clazz,
jmethodID methodID, va_list args)
{
return splitter->CallStaticDoubleMethodV(env, clazz, methodID, args);
}
jfloat JavaSplitter::CallFloatMethod(JNIEnv *env, jobject obj,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallFloatMethodV(env, obj, methodID, args);
}
jdouble JavaSplitter::CallDoubleMethod(JNIEnv *env, jobject obj,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallDoubleMethodV(env, obj, methodID, args);
}
jfloat JavaSplitter::CallFloatMethodA(JNIEnv *env, jobject obj,
jmethodID methodID, jvalue *args)
{
return splitter->CallFloatMethodA(env, obj, methodID, args);
}
jdouble JavaSplitter::CallDoubleMethodA(JNIEnv *env, jobject obj,
jmethodID methodID, jvalue *args)
{
return splitter->CallDoubleMethodA(env, obj, methodID, args);
}
jfloat JavaSplitter::CallFloatMethodV(JNIEnv *env, jobject obj,
jmethodID methodID, va_list args)
{
return splitter->CallFloatMethodV(env, obj, methodID, args);
}
jdouble JavaSplitter::CallDoubleMethodV(JNIEnv *env, jobject obj,
jmethodID methodID, va_list args)
{
return splitter->CallDoubleMethodV(env, obj, methodID, args);
}
jfloat JavaSplitter::CallNonvirtualFloatMethod(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallNonvirtualFloatMethodV(env, obj, clazz, methodID, args);
}
jdouble JavaSplitter::CallNonvirtualDoubleMethod(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID, ...)
{
va_list args;
va_start(args, methodID);
return splitter->CallNonvirtualDoubleMethodV(env, obj, clazz, methodID,
args);
}
jfloat JavaSplitter::CallNonvirtualFloatMethodA(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args)
{
return splitter->CallNonvirtualFloatMethodA(env, obj, clazz, methodID,
args);
}
jdouble JavaSplitter::CallNonvirtualDoubleMethodA(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args)
{
return splitter->CallNonvirtualDoubleMethodA(env, obj, clazz, methodID,
args);
}
jfloat JavaSplitter::CallNonvirtualFloatMethodV(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
va_list args)
{
return splitter->CallNonvirtualFloatMethodV(env, obj, clazz, methodID,
args);
}
jdouble JavaSplitter::CallNonvirtualDoubleMethodV(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
va_list args)
{
return splitter->CallNonvirtualDoubleMethodV(env, obj, clazz, methodID,
args);
}
// class JavaNormal function definitions
jfloat JavaNormal::CallStaticFloatMethodA(JNIEnv *env, jclass clazz,
jmethodID methodID, jvalue *args)
{
return env->CallStaticFloatMethodA(clazz, methodID, args);
}
jdouble JavaNormal::CallStaticDoubleMethodA(JNIEnv *env, jclass clazz,
jmethodID methodID, jvalue *args)
{
return env->CallStaticDoubleMethodA(clazz, methodID, args);
}
jfloat JavaNormal::CallStaticFloatMethodV(JNIEnv *env, jclass clazz,
jmethodID methodID, va_list args)
{
return env->CallStaticFloatMethodV(clazz, methodID, args);
}
jdouble JavaNormal::CallStaticDoubleMethodV(JNIEnv *env, jclass clazz,
jmethodID methodID, va_list args)
{
return env->CallStaticDoubleMethodV(clazz, methodID, args);
}
jfloat JavaNormal::CallFloatMethodA(JNIEnv *env, jobject obj,
jmethodID methodID, jvalue *args)
{
return env->CallFloatMethodA(obj, methodID, args);
}
jdouble JavaNormal::CallDoubleMethodA(JNIEnv *env, jobject obj,
jmethodID methodID, jvalue *args)
{
return env->CallDoubleMethodA(obj, methodID, args);
}
jfloat JavaNormal::CallFloatMethodV(JNIEnv *env, jobject obj,
jmethodID methodID, va_list args)
{
return env->CallFloatMethodV(obj, methodID, args);
}
jdouble JavaNormal::CallDoubleMethodV(JNIEnv *env, jobject obj,
jmethodID methodID, va_list args)
{
return env->CallDoubleMethodV(obj, methodID, args);
}
jfloat JavaNormal::CallNonvirtualFloatMethodA(JNIEnv *env, jobject obj,
jclass clazz, jmethodID methodID,
jvalue *args)
{
return env->CallNonvirtualFloatMethodA(obj, clazz, methodID, args);
}
jdouble JavaNormal::CallNonvirtualDoubleMethodA(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args)
{
return env->CallNonvirtualDoubleMethodA(obj, clazz, methodID, args);
}
jfloat JavaNormal::CallNonvirtualFloatMethodV(JNIEnv *env, jobject obj,
jclass clazz, jmethodID methodID,
va_list args)
{
return env->CallNonvirtualFloatMethodV(obj, clazz, methodID, args);
}
jdouble JavaNormal::CallNonvirtualDoubleMethodV(JNIEnv *env, jobject obj,
jclass clazz,
jmethodID methodID,
va_list args)
{
return env->CallNonvirtualDoubleMethodV(obj, clazz, methodID, args);
}
// class JavaI3EAdaptor function definitions