// Copyright 2014 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code by Matt McCutchen, see the LICENSE file. #ifndef NUMBERLIKEARRAY_H #define NUMBERLIKEARRAY_H #include <stdlib.h> // abort() // Make sure we have NULL. #ifndef NULL #define NULL … #endif /* A NumberlikeArray<Blk> object holds a heap-allocated array of Blk with a * length and a capacity and provides basic memory management features. * BigUnsigned and BigUnsignedInABase both subclass it. * * NumberlikeArray provides no information hiding. Subclasses should use * nonpublic inheritance and manually expose members as desired using * declarations like this: * * public: * NumberlikeArray< the-type-argument >::getLength; */ template <class Blk> class NumberlikeArray { … }; /* BEGIN TEMPLATE DEFINITIONS. They are present here so that source files that * include this header file can generate the necessary real definitions. */ template <class Blk> const unsigned int NumberlikeArray<Blk>::N = …; template <class Blk> void NumberlikeArray<Blk>::allocate(Index c) { … } template <class Blk> void NumberlikeArray<Blk>::allocateAndCopy(Index c) { … } template <class Blk> NumberlikeArray<Blk>::NumberlikeArray(const NumberlikeArray<Blk> &x) : … { … } template <class Blk> NumberlikeArray<Blk>& NumberlikeArray<Blk>::operator=(const NumberlikeArray<Blk> &x) { … } template <class Blk> NumberlikeArray<Blk>::NumberlikeArray(const Blk *b, Index blen) : … { … } template <class Blk> bool NumberlikeArray<Blk>::operator ==(const NumberlikeArray<Blk> &x) const { … } #endif