#ifndef Already_Included_Dynamic_Array #define Already_Included_Dynamic_Array namespace omega { template class Dynamic_Array2; template class Dynamic_Array3; template class Dynamic_Array4; template class Dynamic_Array { public: Dynamic_Array(Dynamic_Array &D); ~Dynamic_Array(); protected: Dynamic_Array(); bool partial; int *bounds; T *elements; void do_constr(); void do_destruct(); }; template class Dynamic_Array1 : public Dynamic_Array { public: Dynamic_Array1(const char *s0 = 0); Dynamic_Array1(int d0); void resize(int d0); T& operator[](int d); friend class Dynamic_Array2; private: void do_construct(int d0); }; template class Dynamic_Array2 : public Dynamic_Array { public: Dynamic_Array2(const char *s0 = 0, const char *s1 = 0); Dynamic_Array2(int d0, int d1); void resize(int d0, int d1); Dynamic_Array1 operator[](int d); friend class Dynamic_Array3; private: void do_construct(int d0, int d1); }; template class Dynamic_Array3 : public Dynamic_Array { public: Dynamic_Array3(const char *s0 = 0, const char *s1 = 0, const char *s2 = 0); Dynamic_Array3(int d0, int d1, int d2); void resize(int d0, int d1, int d2); Dynamic_Array2 operator[](int d); friend class Dynamic_Array4; private: void do_construct(int d0, int d1, int d2); }; template class Dynamic_Array4 : public Dynamic_Array { public: Dynamic_Array4(const char *s0 = 0, const char *s1 = 0, const char *s2 = 0, const char *s3 = 0); Dynamic_Array4(int d0, int d1, int d2, int d3); void resize(int d0, int d1, int d2, int d3); Dynamic_Array3 operator[](int d); private: void do_construct(int d0, int d1, int d2, int d3); }; } // namespace #if ! defined DONT_INCLUDE_TEMPLATE_CODE #include #endif #define instantiate_Dynamic_Array1(T) template class Dynamic_Array1; \ template class Dynamic_Array; #define instantiate_Dynamic_Array2(T) template class Dynamic_Array2; \ template class Dynamic_Array; \ instantiate_Dynamic_Array1(T); #define instantiate_Dynamic_Array3(T) template class Dynamic_Array3; \ template class Dynamic_Array; \ instantiate_Dynamic_Array2(T); #define instantiate_Dynamic_Array4(T) template class Dynamic_Array4; \ template class Dynamic_Array; \ instantiate_Dynamic_Array3(T); #endif