/* * CENA C++ Utilities * * by Stephane Chatty * * Copyright 1990, 1991, 1992 * Laboratoire de Recherche en Informatique (LRI) * Centre d'Etudes de la Navigation Aerienne (CENA) * * plain and generic arrays (orginal C version by Michel Beaudouin-Lafon) * * $Id$ * $CurLog$ */ #ifndef Array_H_ #define Array_H_ #include "cplus_bugs.h" typedef void IvlArrayItem; class IvlArray { protected: static IvlArrayItem* InvalidCell; int Length; IvlArrayItem** Data; void Clean (); public: IvlArray (int size, IvlArrayItem* = 0); IvlArray (const IvlArray&); ~IvlArray (); void Reset (IvlArrayItem* = 0); IvlArrayItem*& operator [] (int i) const; IvlArrayItem** operator + (int) const; IvlArray& operator = (const IvlArray&); inline int Check (int i) const { return (i >= 0 && i < Length); } inline int GetSize () const { return Length; } void Resize (int, IvlArrayItem* = 0); }; #ifndef CPLUS_BUG19 template class IvlArrayOf : public IvlArray { public: inline IvlArrayOf (int size, ITEM* value = 0) : IvlArray (size, value) {} inline IvlArrayOf (const IvlArrayOf& a) : IvlArray (a) {} inline ~IvlArrayOf () {} inline void Reset (ITEM* value = 0) { IvlArray::Reset (value); } inline void Resize (int size, ITEM* value = 0) { IvlArray::Resize (size, value); } inline ITEM*& operator [] (int i) const { return (ITEM*&) ((* (IvlArray*) this)[i]); } inline ITEM** operator + (int i) const { return (ITEM**) ((*(IvlArray*) this) + i); } }; #endif #endif /* Array_H_ */