summaryrefslogtreecommitdiffstats
path: root/tksao/vector/vectorstr.C
diff options
context:
space:
mode:
Diffstat (limited to 'tksao/vector/vectorstr.C')
-rw-r--r--tksao/vector/vectorstr.C64
1 files changed, 64 insertions, 0 deletions
diff --git a/tksao/vector/vectorstr.C b/tksao/vector/vectorstr.C
index 145bebc..c77ef16 100644
--- a/tksao/vector/vectorstr.C
+++ b/tksao/vector/vectorstr.C
@@ -62,3 +62,67 @@ istream& operator>>(istream& ss, VectorStr& vv)
ss >> vv.c[0] >> vv.c[1];
return ss;
}
+
+// VectorStr3d
+
+VectorStr3d::~VectorStr3d()
+{
+ if (c[0])
+ delete [] c[0];
+ if (c[1])
+ delete [] c[1];
+ if (c[2])
+ delete [] c[2];
+}
+
+VectorStr3d::VectorStr3d(const char* aa, const char* bb, const char* cc)
+{
+ c[0] = dupstr(aa);
+ c[1] = dupstr(bb);
+ c[2] = dupstr(cc);
+}
+
+VectorStr3d::VectorStr3d(const VectorStr3d& vv)
+{
+ c[0] = dupstr(vv.c[0]);
+ c[1] = dupstr(vv.c[1]);
+ c[2] = dupstr(vv.c[2]);
+}
+
+VectorStr3d& VectorStr3d::operator=(const VectorStr3d& vv)
+{
+ if (c[0])
+ delete [] c[0];
+ c[0]=dupstr(vv.c[0]);
+ if (c[1])
+ delete [] c[1];
+ c[1]=dupstr(vv.c[1]);
+ if (c[2])
+ delete [] c[2];
+ c[2]=dupstr(vv.c[2]);
+ return *this;
+}
+
+ostream& operator<<(ostream& os, const VectorStr3d& vv)
+{
+ unsigned char sep = (unsigned char)os.iword(Vector::separator);
+ if (!sep)
+ sep = ' ';
+
+ unsigned char unit = (unsigned char)os.iword(Vector::unit);
+ if (!unit)
+ os << vv.c[0] << sep << vv.c[1] << sep << vv.c[2];
+ else
+ os << vv.c[0] << unit << sep << vv.c[1] << unit << sep << vv.c[2] << unit;
+
+ // reset unit
+ os.iword(Vector::unit) = '\0';
+
+ return os;
+}
+
+istream& operator>>(istream& ss, VectorStr3d& vv)
+{
+ ss >> vv.c[0] >> vv.c[1] >> vv.c[2];
+ return ss;
+}