00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00034 #ifndef LIBEBML_DATE_H
00035 #define LIBEBML_DATE_H
00036
00037 #include "EbmlTypes.h"
00038 #include "EbmlElement.h"
00039
00040 START_LIBEBML_NAMESPACE
00041
00046 class EBML_DLL_API EbmlDate : public EbmlElement {
00047 public:
00048 EbmlDate() :EbmlElement(8, false), myDate(0) {}
00049 EbmlDate(const EbmlDate & ElementToClone);
00050
00055 void SetEpochDate(int32 NewDate) {myDate = int64(NewDate - UnixEpochDelay) * 1000000000; SetValueIsSet();}
00056
00061 int32 GetEpochDate() const {return int32(myDate/1000000000 + UnixEpochDelay);}
00062
00063 virtual bool ValidateSize() const {return IsFiniteSize() && ((GetSize() == 8) || (GetSize() == 0));}
00064
00068 filepos_t UpdateSize(bool bWithDefault = false, bool bForceRender = false) {
00069 if(!ValueIsSet())
00070 SetSize_(0);
00071 else
00072 SetSize_(8);
00073 return GetSize();
00074 }
00075
00076 virtual bool IsSmallerThan(const EbmlElement *Cmp) const;
00077
00078 filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
00079
00080 bool IsDefaultValue() const {
00081 return false;
00082 }
00083
00084 #if defined(EBML_STRICT_API)
00085 private:
00086 #else
00087 protected:
00088 #endif
00089 filepos_t RenderData(IOCallback & output, bool bForceRender, bool bWithDefault = false);
00090
00091 int64 myDate;
00092
00093 static const uint64 UnixEpochDelay;
00094 };
00095
00096 END_LIBEBML_NAMESPACE
00097
00098 #endif // LIBEBML_DATE_H