4 #ifndef TDE_H_27699F347D16DF25781577481B852F4D
5 #define TDE_H_27699F347D16DF25781577481B852F4D
25 typedef uint32_t id_t
;
26 typedef const string
& rctext_t
;
27 typedef const CTodoEntry
& rcself_t
;
29 inline time_t MakeTimeT (uint32_t v
) const { return (sizeof(time_t) > 4 ? ((time_t(m_Epoch
) << 32) | v
) : v
); }
30 const char* TimeTText (uint32_t v
) const;
32 CTodoEntry (id_t id
= 0);
33 void read (istream
& is
);
34 void write (ostream
& os
) const;
35 size_t stream_size (void) const;
36 void MarkComplete (uint8_t progress
= 100);
37 inline uint32_t Progress (void) const { return (m_Progress
); }
38 inline bool Complete (void) const { return (Progress() == 100); }
39 inline time_t Created (void) const { return (MakeTimeT (m_Created
)); }
40 inline time_t Done (void) const { return (MakeTimeT (m_Done
)); }
41 inline const char* CreatedDateText (void) const { return (TimeTText (m_Created
)); }
42 inline const char* DoneDateText (void) const { return (TimeTText (m_Done
)); }
43 inline id_t
Id (void) const { return (m_Id
); }
44 inline bool HasSublist (void) const { return (m_bHasSublist
); }
45 inline void SetHasSublist (bool v
) { m_bHasSublist
= v
; }
46 inline rctext_t
Text (void) const { return (m_Text
); }
47 inline rctext_t
Comment (void) const { return (m_Comment
); }
48 inline void SetText (rctext_t v
) { m_Text
= v
; }
49 inline void SetComment (rctext_t v
) { m_Comment
= v
; }
50 inline uint8_t Refs (void) const { return (m_Refs
); }
51 inline bool AddRef (void) { return (m_Refs
< UINT8_MAX
? ++m_Refs
: false); }
52 inline bool DelRef (void) { return (m_Refs
> 0 ? --m_Refs
: false); }
53 inline bool operator< (rcself_t v
) const { return (Id() < v
.Id()); }
54 inline bool operator== (rcself_t v
) const { return (Id() == v
.Id()); }
56 string m_Text
; ///< Description of what to do.
57 string m_Comment
; ///< Completion comment.
58 uint32_t m_Epoch
; ///< Upper half of time_t for dates.
59 uint32_t m_Created
; ///< When it was created.
60 uint32_t m_Done
; ///< When it was completed.
61 id_t m_Id
; ///< Unique id of the entry.
62 uint8_t m_Priority
; ///< Priority value. See #EPriority.
63 uint8_t m_Progress
; ///< Percent complete.
64 uint8_t m_bHasSublist
; ///< true if there are dependencies.
65 uint8_t m_Refs
; ///< Number of dependent items.
68 typedef vector
<CTodoEntry
> todolist_t
;
70 STD_STREAMABLE (CTodoEntry
)