diff options
Diffstat (limited to 'MultiSource/Applications/hbd/cp.h')
-rw-r--r-- | MultiSource/Applications/hbd/cp.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/MultiSource/Applications/hbd/cp.h b/MultiSource/Applications/hbd/cp.h new file mode 100644 index 00000000..548ea3d2 --- /dev/null +++ b/MultiSource/Applications/hbd/cp.h @@ -0,0 +1,68 @@ +/* cp.h */ +/* + Java Decompiler + Copyright (c) 1994-2003, Pete Ryland. + Distributed under the GNU GPL Version 2. + This package is available from http://pdr.cx/hbd/ +*/ + +#ifndef CP_H +#define CP_H + +#include "general.h" + +/* These are structures that the constant pool's table + can contain. */ + +typedef struct { + u16 class_index; + u16 name_and_type; +} Ref; + +typedef struct { + u16 name_index; + u16 signature_index; +} NameAndType; + +/* The generic structure of constants that will appear + in the table of constants in the constant pool */ +struct cp_info { + unsigned char tag; + union { + long i; + void *p; + double d; + float f; + char *chp; + }; +}; + +/* Forward declaration of the Classfile struct */ +struct Classfile; + +/* The ConstPool struct, which contains the Constant + Pool. */ +struct ConstPool { + /* The number of entries in this Constant Pool */ + u16 constant_pool_count; + + /* The table of constants */ + cp_info *constant_pool; + + /* This will parse the input file for a constant pool */ + void read(Classfile *c, u16 *imports_count); + + /* These methods provide easy access to commonly + used parts of constant pool entries */ + cp_info *operator [](u16 i) { + return &(constant_pool[i]); + } + cp_info *operator ()(u16 i) { + return &(constant_pool[constant_pool[i].i]); + } + u16 count() { + return constant_pool_count; + } +}; + +#endif |