4 #ifndef TDE_H_27699F347D16DF25781577481B852F4D
5 #define TDE_H_27699F347D16DF25781577481B852F4D
9 //----------------------------------------------------------------------
23 typedef uint32_t id_t
;
24 typedef const string
& rctext_t
;
25 typedef const CTodoItem
& rcself_t
;
27 inline time_t MakeTimeT (uint32_t v
) const { return (sizeof(time_t) > 4 ? ((time_t(m_Epoch
) << 32) | v
) : v
); }
28 const char* TimeTText (uint32_t v
) const;
30 CTodoItem (id_t id
= 0);
31 void read (istream
& is
);
32 void write (ostream
& os
) const;
33 size_t stream_size (void) const;
34 void MarkComplete (uint8_t progress
= 100);
35 inline uint32_t Progress (void) const { return (m_Progress
); }
36 inline bool Complete (void) const { return (Progress() == 100); }
37 inline time_t Created (void) const { return (MakeTimeT (m_Created
)); }
38 inline time_t Done (void) const { return (MakeTimeT (m_Done
)); }
39 inline const char* CreatedDateText (void) const { return (TimeTText (m_Created
)); }
40 inline const char* DoneDateText (void) const { return (TimeTText (m_Done
)); }
41 inline id_t
Id (void) const { return (m_Id
); }
42 inline bool HasSublist (void) const { return (m_bHasSublist
); }
43 inline void SetHasSublist (bool v
) { m_bHasSublist
= v
; }
44 inline rctext_t
Text (void) const { return (m_Text
); }
45 inline rctext_t
Comment (void) const { return (m_Comment
); }
46 inline void SetText (rctext_t v
) { m_Text
= v
; }
47 inline void SetComment (rctext_t v
) { m_Comment
= v
; }
48 inline uint8_t Refs (void) const { return (m_Refs
); }
49 inline bool AddRef (void) { return (m_Refs
< UINT8_MAX
? ++m_Refs
: false); }
50 inline bool DelRef (void) { return (m_Refs
> 0 ? --m_Refs
: false); }
51 inline uint8_t Priority (void) const { return (m_Priority
); }
52 inline void SetPriority (EPriority v
) { m_Priority
= v
; }
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 //----------------------------------------------------------------------
70 /// Provides dependency links between todo items.
73 typedef CTodoItem::id_t itemid_t
;
74 typedef const CTodoDep
& rcself_t
;
76 CTodoDep (itemid_t item
= 0, itemid_t dep
= 0) : m_ItemId (item
), m_DepId (dep
) { }
77 inline bool operator< (rcself_t v
) const { return (m_ItemId
< v
.m_ItemId
); }
78 inline bool operator== (rcself_t v
) const { return (m_ItemId
== v
.m_ItemId
); }
79 inline void read (istream
& is
) { is
>> m_ItemId
>> m_DepId
; }
80 inline void write (ostream
& os
) const { os
<< m_ItemId
<< m_DepId
; }
81 inline size_t stream_size (void) const { return (stream_size_of (m_ItemId
) + stream_size_of (m_DepId
)); }
83 itemid_t m_ItemId
; ///< Item id that has ...
84 itemid_t m_DepId
; ///< ... this dependency.
87 //----------------------------------------------------------------------
89 enum { c_RootItemId
};
91 //----------------------------------------------------------------------
93 typedef vector
<CTodoItem
> tdevec_t
;
94 typedef vector
<CTodoDep
> tddepmap_t
;
96 STD_STREAMABLE (CTodoItem
)
97 STD_STREAMABLE (CTodoDep
)