aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/vect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetLib/src/vect.cc')
-rw-r--r--Carpet/CarpetLib/src/vect.cc59
1 files changed, 59 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/vect.cc b/Carpet/CarpetLib/src/vect.cc
new file mode 100644
index 000000000..9af8bca1a
--- /dev/null
+++ b/Carpet/CarpetLib/src/vect.cc
@@ -0,0 +1,59 @@
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/vect.cc,v 1.14 2004/02/18 15:10:17 schnetter Exp $
+
+#include <assert.h>
+
+#include <iostream>
+
+#include "defs.hh"
+
+#include "vect.hh"
+
+using namespace std;
+
+
+
+// Input
+template<class T,int D>
+void vect<T,D>::input (istream& is) {
+ skipws (is);
+ consume (is, '[');
+ for (int d=0; d<D; ++d) {
+ is >> (*this)[d];
+ if (d<D-1) {
+ skipws (is);
+ consume (is, ',');
+ }
+ }
+ skipws (is);
+ consume (is, ']');
+}
+
+
+
+// Output
+template<class T,int D>
+void vect<T,D>::output (ostream& os) const {
+ os << "[";
+ for (int d=0; d<D; ++d) {
+ os << (*this)[d];
+ if (d<D-1) os << ",";
+ }
+ os << "]";
+}
+
+
+
+// Note: We need all dimensions all the time.
+template class vect<int,0>;
+template class vect<int,1>;
+template class vect<int,2>;
+template class vect<int,3>;
+
+template void vect<double,3>::input (istream& is);
+template void vect<vect<bool,2>,3>::input (istream& is);
+
+template void vect<bool,2>::output (ostream& os) const;
+template void vect<bool,3>::output (ostream& os) const;
+template void vect<double,3>::output (ostream& os) const;
+template void vect<vect<bool,2>,3>::output (ostream& os) const;
+template void vect<vect<int,2>,3>::output (ostream& os) const;