/* Class to encapsulate Java Class file constant pool I/O AST 9/97 */ #ifndef __JAVACONSTPOOL_H__ #define __JAVACONSTPOOL_H__ #include "CommonTypes.h" // forward delcarations class JavaClassFile; class JavaConstPool { public: JavaConstPool(JavaClassFile *pClassFile); virtual ~JavaConstPool(); private: JavaClassFile *m_pClassFile; friend class JavaClassFile; WORD GetCount() const; wstring GetEntry( WORD wIndex ) const; enum { CONSTANT_Utf8 = 1, CONSTANT_Integer = 3, CONSTANT_Float= 4, CONSTANT_Long = 5, CONSTANT_Double = 6, CONSTANT_String = 7, CONSTANT_Class = 8, CONSTANT_Fieldref = 9, CONSTANT_Methodref = 10, CONSTANT_InterfaceMethodref = 11, CONSTANT_NameAndType = 12, }; void LoadConstantPool(); struct ConstPoolEntry { BYTE chType; // wstring can't be in a union // because of copy constructor wstring wstrData; union { struct Indexes { WORD wIndex1; WORD wIndex2; } index; int intData; INT64 longData; float floatData; double doubleData; }; }; ConstPoolEntry *m_pConstPool; WORD ReadUtf8Entry( WORD wStartIndex, WORD wEntryIndex); WORD ReadIntegerEntry( WORD wStartIndex, WORD wEntryIndex); WORD ReadFloatEntry( WORD wStartIndex, WORD wEntryIndex); WORD ReadLongEntry( WORD wStartIndex, WORD wEntryIndex); WORD ReadDoubleEntry( WORD wStartIndex, WORD wEntryIndex); WORD ReadOneRefEntry( WORD wStartIndex, WORD wEntryIndex); WORD ReadTwoRefEntry( WORD wStartIndex, WORD wEntryIndex); DWORD m_dwSize; DWORD GetSize(); }; #endif /* End of File */