diff options
author | Calvin Morrison <calvin@pobox.com> | 2023-04-05 14:13:39 -0400 |
---|---|---|
committer | Calvin Morrison <calvin@pobox.com> | 2023-04-05 14:13:39 -0400 |
commit | 835e373b3eeaabcd0621ed6798ab500f37982fae (patch) | |
tree | dfa16b0e2e1b4956b38f693220eac4e607802133 /xpdf/Array.h |
Diffstat (limited to 'xpdf/Array.h')
-rw-r--r-- | xpdf/Array.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/xpdf/Array.h b/xpdf/Array.h new file mode 100644 index 0000000..8d10ead --- /dev/null +++ b/xpdf/Array.h @@ -0,0 +1,70 @@ +//======================================================================== +// +// Array.h +// +// Copyright 1996-2003 Glyph & Cog, LLC +// +//======================================================================== + +#ifndef ARRAY_H +#define ARRAY_H + +#include <aconf.h> + +#ifdef USE_GCC_PRAGMAS +#pragma interface +#endif + +#if MULTITHREADED +#include "GMutex.h" +#endif +#include "Object.h" + +class XRef; + +//------------------------------------------------------------------------ +// Array +//------------------------------------------------------------------------ + +class Array { +public: + + // Constructor. + Array(XRef *xrefA); + + // Destructor. + ~Array(); + + // Reference counting. +#if MULTITHREADED + long incRef() { return gAtomicIncrement(&ref); } + long decRef() { return gAtomicDecrement(&ref); } +#else + long incRef() { return ++ref; } + long decRef() { return --ref; } +#endif + + // Get number of elements. + int getLength() { return length; } + + // Add an element. + void add(Object *elem); + + // Accessors. + Object *get(int i, Object *obj, int recursion = 0); + Object *getNF(int i, Object *obj); + +private: + + XRef *xref; // the xref table for this PDF file + Object *elems; // array of elements + int size; // size of <elems> array + int length; // number of elements in array +#if MULTITHREADED + GAtomicCounter ref; // reference count +#else + long ref; // reference count +#endif +}; + +#endif |