You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.7 KiB
77 lines
1.7 KiB
//======================================================================== |
|
// |
|
// Dict.h |
|
// |
|
// Copyright 1996-2003 Glyph & Cog, LLC |
|
// |
|
//======================================================================== |
|
|
|
#ifndef DICT_H |
|
#define DICT_H |
|
|
|
#include <aconf.h> |
|
|
|
#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 <key> 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 <entries> array |
|
int length; // number of entries in dictionary |
|
int ref; // reference count |
|
|
|
DictEntry *find(char *key); |
|
}; |
|
|
|
#endif
|
|
|