diff base/RealTime.cpp @ 350:d7c41483af8f

* Merge from transforms branch -- switch over to using Transform object properly
author Chris Cannam
date Fri, 07 Dec 2007 16:47:31 +0000
parents 21b9b25bff48
children a38cd7823cb2
line wrap: on
line diff
--- a/base/RealTime.cpp	Fri Nov 30 17:31:09 2007 +0000
+++ b/base/RealTime.cpp	Fri Dec 07 16:47:31 2007 +0000
@@ -122,6 +122,51 @@
     return s.substr(0, s.length() - 1);
 }
 
+RealTime
+RealTime::fromString(std::string s)
+{
+    bool negative = false;
+    bool faulty = false;
+    bool section = 0;
+    std::string ssec, snsec;
+
+    for (size_t i = 0; i < s.length(); ++i) {
+
+        char c = s[i];
+        if (isspace(c)) continue;
+
+        if (section == 0) {
+
+            if (c == '-') negative = true;
+            else if (isdigit(c)) { section = 1; ssec += c; }
+            else if (c == '.') section = 2;
+            else break;
+
+        } else if (section == 1) {
+
+            if (c == '.') section = 2;
+            else if (isdigit(c)) ssec += c;
+            else break;
+
+        } else if (section == 2) {
+
+            if (isdigit(c)) snsec += c;
+            else break;
+        }
+    }
+
+    while (snsec.length() < 8) snsec += '0';
+
+    int sec = atoi(ssec.c_str());
+    int nsec = atoi(snsec.c_str());
+    if (negative) sec = -sec;
+
+    std::cerr << "RealTime::fromString: string " << s << " -> "
+              << sec << " sec, " << nsec << " nsec" << std::endl;
+
+    return RealTime(sec, nsec);
+}
+
 std::string
 RealTime::toText(bool fixedDp) const
 {