//======================================================================== // // Dict.h // // Copyright 1996-2003 Glyph & Cog, LLC // //======================================================================== #ifndef DICT_H #define DICT_H #include #ifdef USE_GCC_PRAGMAS #pragma interface #endif #include "Object.h" //------------------------------------------------------------------------ // Dict //------------------------------------------------------------------------ struct DictEntry { char *key; Object val; }; class Dict { public: // Constructor. Dict(XRef *xrefA); // Destructor. ~Dict(); // Reference counting. int incRef() { return ++ref; } int decRef() { return --ref; } // Get number of entries. int getLength() { return length; } // Add an entry. NB: does not copy key. void add(char *key, Object *val); // Check if dictionary is of specified type. GBool is(char *type); // Look up an entry and return the value. Returns a null object // if is not in the dictionary. Object *lookup(char *key, Object *obj); Object *lookupNF(char *key, Object *obj); // Iterative accessors. char *getKey(int i); Object *getVal(int i, Object *obj); Object *getValNF(int i, Object *obj); // Set the xref pointer. This is only used in one special case: the // trailer dictionary, which is read before the xref table is // parsed. void setXRef(XRef *xrefA) { xref = xrefA; } private: XRef *xref; // the xref table for this PDF file DictEntry *entries; // array of entries int size; // size of array int length; // number of entries in dictionary int ref; // reference count DictEntry *find(char *key); }; #endif