#ifndef DPTUPLE4_HEADER #define DPTUPLE4_HEADER 1 ///////////////////////////////////////////////// //! docentry="Containers.Misc" //! userlevel=Normal //! rcsid="$Id: Tuple4.hh,v 1.5 2000/02/16 14:08:31 ees1cg Exp $" //! file="amma/Contain/Tuple/Tuple4.hh" //! lib=Mtuple //! author="Charles Galambos" //! date="09/06/98" class istream; class ostream; class BinIStreamC; class BinOStreamC; //: Class containing 4 other classes. template class Tuple4C { public: Tuple4C() {} //: Default constructor. Tuple4C(istream &in) { in >> d1 >> d2 >> d3 >> d4; } //: Stream constructor. Tuple4C(BinIStreamC &in) { in >> d1 >> d2 >> d3 >> d4; } //: Binary Stream constructor. Tuple4C(const T1 &nd1,const T2 &nd2,const T3 &nd3,const T3 &nd4) : d1(nd1), d2(nd2), d3(nd3), d4(nd4) {} //: Constructor. Tuple4C(const Tuple4C &oth) : d1(oth.d1), d2(oth.d2), d3(oth.d3), d4(oth.d4) {} //: Copy constructor. T1 &Data1() { return d1; } //: Data access. const T1 &Data1() const { return d1; } //: Data access. T2 &Data2() { return d2; } //: Data access. const T2 &Data2() const { return d2; } //: Data access. T3 &Data3() { return d3; } //: Data access. const T3 &Data3() const { return d3; } //: Data access. T4 &Data4() { return d4; } //: Data access. const T4 &Data4() const { return d4; } //: Data access. protected: T1 d1; T2 d2; T3 d3; T4 d4; }; template ostream &operator<<(ostream &out,const Tuple4C &obj) { out << obj.Data1() << ' ' << obj.Data2() << ' '; out << obj.Data3() << ' ' << obj.Data4() << ' '; return out; } template istream &operator>>(istream &in,Tuple4C &obj) { obj = Tuple4C(in); return in; } template BinOStreamC &operator<<(BinOStreamC &out,const Tuple4C &obj) { out << obj.Data1() << obj.Data2(); out << obj.Data3() << obj.Data4(); return out; } template BinIStreamC &operator>>(BinIStreamC &in,Tuple4C &obj) { obj = Tuple4C(in); return in; } #endif