// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/defs.cc,v 1.15 2003/03/18 17:30:25 schnetter Exp $ #include #include #include #include #include #include #include #include "defs.hh" using namespace std; void skipws (istream& is) { while (is.good() && isspace(is.peek())) { is.get(); } } // Vector input template istream& input (istream& is, vector& v) { v.clear(); skipws (is); assert (is.peek() == '['); is.get(); skipws (is); while (is.good() && is.peek() != ']') { T elem; is >> elem; v.push_back (elem); skipws (is); if (is.peek() != ',') break; is.get(); skipws (is); } skipws (is); assert (is.peek() == ']'); is.get(); return is; } // List output template ostream& output (ostream& os, const list& l) { os << "["; for (typename list::const_iterator ti=l.begin(); ti!=l.end(); ++ti) { if (ti!=l.begin()) os << ","; os << *ti; } os << "]"; return os; } // Set output template ostream& output (ostream& os, const set& s) { os << "{"; for (typename set::const_iterator ti=s.begin(); ti!=s.end(); ++ti) { if (ti!=s.begin()) os << ","; os << *ti; } os << "}"; return os; } // Stack output template ostream& output (ostream& os, const stack& s) { stack s2 (s); list l; while (! s2.empty()) { l.insert (l.begin(), s2.top()); s2.pop(); } return output (os, l); } // Vector output template ostream& output (ostream& os, const vector& v) { os << "["; int cnt=0; for (typename vector::const_iterator ti=v.begin(); ti!=v.end(); ++ti) { if (ti!=v.begin()) os << ","; os << cnt++ << ":" << *ti; } os << "]"; return os; } #include "bbox.hh" #include "bboxset.hh" template istream& input (istream& os, vector >& v); template istream& input (istream& os, vector > >& v); template istream& input (istream& os, vector,3> > >& v); template ostream& output (ostream& os, const list >& l); template ostream& output (ostream& os, const set >& s); template ostream& output (ostream& os, const set >& s); template ostream& output (ostream& os, const stack >& s); template ostream& output (ostream& os, const vector& v); template ostream& output (ostream& os, const vector >& v); template ostream& output (ostream& os, const vector > >& v); template ostream& output (ostream& os, const vector >& v); template ostream& output (ostream& os, const vector > >& v); template ostream& output (ostream& os, const vector,3> > >& v); template ostream& output (ostream& os, const vector,3> >& v); template ostream& output (ostream& os, const vector > > >& v);