Fix bad frees if exceptions are thrown by constructors.
[libdcp.git] / src / dcp_time.h
index a611cd89db9b3545de727b2dee32caa7f7941c48..1b73e3e8bc96f72655f721f4ce40cf75058b60b3 100644 (file)
 
 */
 
+/** @file  src/dcp_time.h
+ *  @brief A representation of time within a DCP.
+ */
+
 #ifndef LIBDCP_TIME_H
 #define LIBDCP_TIME_H
 
 namespace libdcp {
 
+/** @class Time
+ *  @brief A representation of time within a DCP.
+ */
+       
 class Time
 {
 public:
        Time () : h (0), m (0), s (0), t (0) {}
+
+       /** Construct a Time from a frame index (starting from 0)
+        *  and a frames per second count.
+        */
        Time (int frame, int frames_per_second);
+
+       /** Construct a Time from hours, minutes, seconds and ticks.
+        *  @param h_ Hours.
+        *  @param m_ Minutes.
+        *  @param s_ Seconds.
+        *  @param t_ Ticks (where 1 tick is 4 milliseconds).
+        */
        Time (int h_, int m_, int s_, int t_)
                : h (h_)
                , m (m_)
@@ -34,15 +53,29 @@ public:
                , t (t_)
        {}
 
-       int h;
-       int m;
-       int s;
-       int t;
+       Time (std::string time);
+
+       int h; ///< hours
+       int m; ///< minutes
+       int s; ///< seconds
+       int t; ///< `ticks', where 1 tick is 4 milliseconds
+
+       std::string to_string () const;
+       int64_t to_ticks () const;
+
+private:
+       void set (double);
 };
 
 extern bool operator== (Time const & a, Time const & b);
+extern bool operator!= (Time const & a, Time const & b);
 extern bool operator<= (Time const & a, Time const & b);
+extern bool operator< (Time const & a, Time const & b);
+extern bool operator> (Time const & a, Time const & b);
 extern std::ostream & operator<< (std::ostream & s, Time const & t);
+extern Time operator+ (Time a, Time const & b);        
+extern Time operator- (Time a, Time const & b);
+extern float operator/ (Time a, Time const & b);
 
 }