diff options
Diffstat (limited to 'libjava/gcj/field.h')
-rw-r--r-- | libjava/gcj/field.h | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/libjava/gcj/field.h b/libjava/gcj/field.h deleted file mode 100644 index 2f483eb..0000000 --- a/libjava/gcj/field.h +++ /dev/null @@ -1,192 +0,0 @@ -// field.h - Header file for fieldID instances. -*- c++ -*- - -/* Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation - - This file is part of libgcj. - -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ - -#ifndef __GCJ_FIELD_H__ -#define __GCJ_FIELD_H__ - -#include <java/lang/Class.h> -#include <java/lang/reflect/Field.h> -#include <java/lang/reflect/Modifier.h> -#include <gnu/gcj/RawData.h> - -#define _Jv_FIELD_UNRESOLVED_FLAG 0x8000 - -struct _Jv_Field -{ - struct _Jv_Utf8Const* name; - - /* The type of the field, if isResolved(). - If !isResolved(): The fields's signature as a (Utf8Const*). */ - jclass type; - - _Jv_ushort flags; - - _Jv_ushort bsize; /* not really needed ... */ - - union { - jint boffset; /* offset in bytes for instance field */ - char* addr; /* address of static field */ - - jobject* object_addr; /* address of static object field... etc */ - jbyte* byte_addr; - jshort* short_addr; - jchar* char_addr; - jint* int_addr; - jlong* long_addr; - jfloat* float_addr; - jdouble* double_addr; - } u; - -#ifdef __cplusplus - jboolean isResolved () - { return ! (flags & _Jv_FIELD_UNRESOLVED_FLAG); } - - public: - - int getOffset () { return u.boffset; } - - jobject getObjectField (jobject obj) - { return *(jobject *)((char *)obj + getOffset ()); } - - jfieldID getNextField () { return this + 1; } - - jboolean isRef () - { - if (!isResolved ()) - { - char first = ((_Jv_Utf8Const*)type)->first(); - return first == '[' || first == 'L'; - } - else - { - return ! type->isPrimitive (); - } - } - - jclass getClass () - { - // We can't use JvAssert here because it is not in a public - // header. - // JvAssert (isResolved ()); - return type; - } - - // Need to mask off all unknown/internal flags before returning. - int getModifiers() - { - return flags & java::lang::reflect::Modifier::ALL_FLAGS; - } - - _Jv_Utf8Const * getNameUtf8Const (jclass) { return name; } -#endif -}; - -#ifdef __cplusplus - -inline jbyte -_Jv_GetStaticByteField (jclass, _Jv_Field* field) -{ - return * (jbyte *) field->u.addr; -} - -inline jshort -_Jv_GetStaticShortField (jclass, _Jv_Field* field) -{ - return * (jshort *) field->u.addr; -} - -inline jint -_Jv_GetStaticIntField (jclass, _Jv_Field* field) -{ - return * (jint *) field->u.addr; -} - -inline jlong -_Jv_GetStaticLongField (jclass, _Jv_Field* field) -{ - return * (jlong *) field->u.addr; -} - -inline jobject -_Jv_GetObjectField (jobject obj, _Jv_Field* field) -{ - return field->getObjectField (obj); -} - -inline jbyte -_Jv_GetByteField (jobject obj, _Jv_Field* field) -{ - return * (jbyte *) ((char*) obj + field->getOffset ()); -} - -inline jshort -_Jv_GetShortField (jobject obj, _Jv_Field* field) -{ - return * (jshort *) ((char*) obj + field->getOffset ()); -} -inline jint -_Jv_GetIntField (jobject obj, _Jv_Field* field) -{ - return * (jint *) ((char*) obj + field->getOffset ()); -} -inline jlong -_Jv_GetLongField (jobject obj, _Jv_Field* field) -{ - return * (jlong *) ((char*) obj + field->getOffset ()); -} - -extern inline jfieldID -_Jv_FromReflectedField (java::lang::reflect::Field *field) -{ - return (jfieldID) ((char *) field->declaringClass->fields + field->offset); -} - - -#ifdef __GCJ_CNI_H__ -extern inline jfieldID -JvGetFirstInstanceField (jclass klass) -{ - return &(klass->fields[klass->static_field_count]); -} - -extern inline jint -JvNumInstanceFields (jclass klass) -{ - return klass->field_count - klass->static_field_count; -} - -extern inline jfieldID -JvGetFirstStaticField (jclass klass) -{ - return &(klass->fields[0]); -} - -extern inline jint -JvNumStaticFields (jclass klass) -{ - return klass->static_field_count; -} - -extern inline jboolean -JvFieldIsRef (jfieldID field) -{ - return field->isRef () && field->type != &gnu::gcj::RawData::class$; -} - -extern inline jobject -JvGetObjectField (jobject obj, _Jv_Field* field) -{ - return _Jv_GetObjectField (obj, field); -} -#endif /* defined (__GCJ_CNI_H__) */ - -#endif /* __cplusplus */ - -#endif /* __GCJ_FIELD_H */ |