⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 natarray.cc

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 CC
字号:
// natField.cc - Implementation of java.lang.reflect.Field native methods./* Copyright (C) 1999, 2000, 2001  Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  */#include <config.h>#include <stdlib.h>#include <jvm.h>#include <gcj/cni.h>#include <java/lang/reflect/Array.h>#include <java/lang/IllegalArgumentException.h>#include <java/lang/Byte.h>#include <java/lang/Short.h>#include <java/lang/Integer.h>#include <java/lang/Long.h>#include <java/lang/Float.h>#include <java/lang/Double.h>#include <java/lang/Boolean.h>#include <java/lang/Character.h>jobjectjava::lang::reflect::Array::newInstance (jclass componentType, jint length){  if (componentType->isPrimitive())    {      // We could check for this in _Jv_NewPrimArray, but that seems      // like needless overhead when the only real route to this      // problem is here.      if (componentType == JvPrimClass (void))	throw new java::lang::IllegalArgumentException ();      return _Jv_NewPrimArray (componentType, length);    }  else    return JvNewObjectArray (length, componentType, NULL);}jobjectjava::lang::reflect::Array::newInstance (jclass componentType,					 jintArray dimensions){  jint ndims = dimensions->length;  if (ndims == 0)    throw new java::lang::IllegalArgumentException ();  jint* dims = elements (dimensions);  if (ndims == 1)    return newInstance (componentType, dims[0]);  jclass arrayType = componentType;  for (int i = 0;  i < ndims;  i++)  // FIXME 2nd arg should                                      // be "current" loader    arrayType = _Jv_GetArrayClass (arrayType, 0);  return _Jv_NewMultiArray (arrayType, ndims, dims);}jintjava::lang::reflect::Array::getLength (jobject array){  jclass arrayType = array->getClass();  if (! arrayType->isArray ())    throw new java::lang::IllegalArgumentException;  return ((__JArray*) array)->length;}jclassjava::lang::reflect::Array::getElementType (jobject array, jint index){  jclass arrayType = array->getClass();  if (! arrayType->isArray ())    throw new java::lang::IllegalArgumentException;  jint length = ((__JArray*) array)->length;  if ((_Jv_uint) index >= (_Jv_uint) length)    _Jv_ThrowBadArrayIndex(index);  return arrayType->getComponentType ();}jbooleanjava::lang::reflect::Array::getBoolean (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (boolean))    return elements ((jbooleanArray) array) [index];  throw new java::lang::IllegalArgumentException;}jcharjava::lang::reflect::Array::getChar (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (char))    return elements ((jcharArray) array) [index];  throw new java::lang::IllegalArgumentException;}jbytejava::lang::reflect::Array::getByte (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  throw new java::lang::IllegalArgumentException;}jshortjava::lang::reflect::Array::getShort (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (short))    return elements ((jshortArray) array) [index];  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  throw new java::lang::IllegalArgumentException;}jintjava::lang::reflect::Array::getInt (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (int))    return elements ((jintArray) array) [index];  if (elementType == JvPrimClass (short))    return elements ((jshortArray) array) [index];  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  if (elementType == JvPrimClass (char))    return elements ((jcharArray) array) [index];  throw new java::lang::IllegalArgumentException;}jlongjava::lang::reflect::Array::getLong (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (long))    return elements ((jlongArray) array) [index];  if (elementType == JvPrimClass (int))    return elements ((jintArray) array) [index];  if (elementType == JvPrimClass (short))    return elements ((jshortArray) array) [index];  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  if (elementType == JvPrimClass (char))    return elements ((jcharArray) array) [index];  throw new java::lang::IllegalArgumentException;}jfloatjava::lang::reflect::Array::getFloat (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (float))    return elements ((jfloatArray) array) [index];  if (elementType == JvPrimClass (long))    return elements ((jlongArray) array) [index];  if (elementType == JvPrimClass (int))    return elements ((jintArray) array) [index];  if (elementType == JvPrimClass (short))    return elements ((jshortArray) array) [index];  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  if (elementType == JvPrimClass (char))    return elements ((jcharArray) array) [index];  throw new java::lang::IllegalArgumentException;}jdoublejava::lang::reflect::Array::getDouble (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (double))    return elements ((jdoubleArray) array) [index];  if (elementType == JvPrimClass (float))    return elements ((jfloatArray) array) [index];  if (elementType == JvPrimClass (long))    return elements ((jlongArray) array) [index];  if (elementType == JvPrimClass (int))    return elements ((jintArray) array) [index];  if (elementType == JvPrimClass (short))    return elements ((jshortArray) array) [index];  if (elementType == JvPrimClass (byte))    return elements ((jbyteArray) array) [index];  if (elementType == JvPrimClass (char))    return elements ((jcharArray) array) [index];  throw new java::lang::IllegalArgumentException;}jobjectjava::lang::reflect::Array::get (jobject array, jint index){  jclass elementType = getElementType (array, index);  if (! elementType->isPrimitive ())    return elements ((jobjectArray) array) [index];  if (elementType == JvPrimClass (double))    return new java::lang::Double (elements ((jdoubleArray) array) [index]);  if (elementType == JvPrimClass (float))    return new java::lang::Float (elements ((jfloatArray) array) [index]);  if (elementType == JvPrimClass (long))    return new java::lang::Long (elements ((jlongArray) array) [index]);  if (elementType == JvPrimClass (int))    return new java::lang::Integer (elements ((jintArray) array) [index]);  if (elementType == JvPrimClass (short))    return new java::lang::Short (elements ((jshortArray) array) [index]);  if (elementType == JvPrimClass (byte))    return new java::lang::Byte (elements ((jbyteArray) array) [index]);  if (elementType == JvPrimClass (char))    return new java::lang::Character (elements ((jcharArray) array) [index]);  if (elementType == JvPrimClass (boolean))    {      _Jv_InitClass (&java::lang::Boolean::class$);      if (elements ((jbooleanArray) array) [index])	return java::lang::Boolean::TRUE;      else	return java::lang::Boolean::FALSE;    }  throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setChar (jobject array, jint index, jchar value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (char))    elements ((jcharArray) array) [index] = value;  else if (elementType == JvPrimClass (int))    elements ((jintArray) array) [index] = value;  else if (elementType == JvPrimClass (long))    elements ((jlongArray) array) [index] = value;  else if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setByte (jobject array, jint index, jbyte value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (byte))    elements ((jbyteArray) array) [index] = value;  else if (elementType == JvPrimClass (short))    elements ((jshortArray) array) [index] = value;  else if (elementType == JvPrimClass (int))    elements ((jintArray) array) [index] = value;  else if (elementType == JvPrimClass (long))    elements ((jlongArray) array) [index] = value;  else if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setShort (jobject array, jint index, jshort value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (short))    elements ((jshortArray) array) [index] = value;  else if (elementType == JvPrimClass (int))    elements ((jintArray) array) [index] = value;  else if (elementType == JvPrimClass (long))    elements ((jlongArray) array) [index] = value;  else if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setInt (jobject array, jint index, jint value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (int))    elements ((jintArray) array) [index] = value;  else if (elementType == JvPrimClass (long))    elements ((jlongArray) array) [index] = value;  else if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setLong (jobject array, jint index, jlong value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (long))    elements ((jlongArray) array) [index] = value;  else if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setFloat (jobject array, jint index, jfloat value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (float))    elements ((jfloatArray) array) [index] = value;  else if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setDouble (jobject array, jint index, jdouble value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (double))    elements ((jdoubleArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::setBoolean (jobject array,					jint index, jboolean value){  jclass elementType = getElementType (array, index);  if (elementType == JvPrimClass (boolean))    elements ((jbooleanArray) array) [index] = value;  else    throw new java::lang::IllegalArgumentException;}voidjava::lang::reflect::Array::set (jobject array, jint index,				       jobject value, jclass elType){  if (! _Jv_IsInstanceOf (value, elType))    throw new java::lang::IllegalArgumentException;  elements ((jobjectArray) array) [index] = value;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -