ActiveLib
Loading...
Searching...
No Matches
XMLDateTime.h
1
6#ifndef ACTIVE_SERIALISE_XML_XML_DATE_TIME
7#define ACTIVE_SERIALISE_XML_XML_DATE_TIME
8
9#include "Active/Serialise/Item/Item.h"
10#include "Active/Utility/Time.h"
11
13
15 class XMLDateTime : public Item {
16 public:
17
18 // MARK: - Types
19
21 enum class Format {
22 iso8601,
24 };
25
27 enum class Content {
28 dateTime,
29 dateOnly,
30 timeOnly,
31 dateTimeWithOffset,
32 timeOnlyWithOffset,
33 };
34
35 // MARK: - Constructors
36
43 XMLDateTime(utility::Time& time, Content content = Content::dateTimeWithOffset, double prec = 1e-6);
44
45 // MARK: - Functions (const)
46
51 virtual const utility::Time& getTime() const { return m_time; }
56 double getSecondsPrecision() const { return m_secsPrecision; }
61 virtual Format getFormat() const { return m_format; }
66 virtual Content getContent() const { return m_content; }
71 virtual bool isRead() const { return m_read; }
77 virtual bool write(utility::String& dest) const override;
78
79 // MARK: - Functions (mutating)
80
85 void setSecondsPrecision(double prec) { m_secsPrecision = prec; }
90 virtual void setFormat(Format format) { m_format = format; }
95 virtual void setContent(Content content) { m_content = content; }
99 virtual void setDefault() override;
104 virtual bool validate() override { return m_valid; }
110 virtual bool read(const utility::String& source) override;
111
112 private:
113 utility::Time& m_time;
114 utility::Time m_buffer;
115 double m_secsPrecision = 1e-6;
116 Format m_format = Format::iso8601;
117 Content m_content = Content::dateTime;
118 bool m_read;
119 bool m_valid;
120 };
121
122}
123
124#endif //ACTIVE_SERIALISE_XML_XML_DATE_TIME
Definition Item.h:23
Class for transporting a data/time via XML.
Definition XMLDateTime.h:15
virtual void setContent(Content content)
Definition XMLDateTime.h:95
virtual bool validate() override
Definition XMLDateTime.h:104
void setSecondsPrecision(double prec)
Definition XMLDateTime.h:85
virtual void setFormat(Format format)
Definition XMLDateTime.h:90
virtual bool write(utility::String &dest) const override
Definition XMLDateTime.cpp:52
virtual bool read(const utility::String &source) override
Definition XMLDateTime.cpp:124
Content
The date/time content, i.e. just a date, just a time, date & time etc. Ignored for secondsSince1970 f...
Definition XMLDateTime.h:27
virtual Format getFormat() const
Definition XMLDateTime.h:61
Format
Preferred JSON date/time format.
Definition XMLDateTime.h:21
virtual bool isRead() const
Definition XMLDateTime.h:71
virtual const utility::Time & getTime() const
Definition XMLDateTime.h:51
double getSecondsPrecision() const
Definition XMLDateTime.h:56
XMLDateTime(utility::Time &time, Content content=Content::dateTimeWithOffset, double prec=1e-6)
Definition XMLDateTime.cpp:37
virtual void setDefault() override
Definition XMLDateTime.cpp:106
virtual Content getContent() const
Definition XMLDateTime.h:66
A Unicode-aware string class.
Definition String.h:51
A class to represent a date/time.
Definition Time.h:19
Definition XMLDateTime.h:12