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
00029
00030
00036 #ifndef LIBEBML_STRING_H
00037 #define LIBEBML_STRING_H
00038
00039 #include <string>
00040
00041 #include "EbmlTypes.h"
00042 #include "EbmlElement.h"
00043
00044 START_LIBEBML_NAMESPACE
00045
00050 class EBML_DLL_API EbmlString : public EbmlElement {
00051 public:
00052 EbmlString();
00053 EbmlString(const std::string & aDefaultValue);
00054 EbmlString(const EbmlString & ElementToClone);
00055
00056 virtual ~EbmlString() {}
00057
00058 virtual bool ValidateSize() const {return IsFiniteSize();}
00059 filepos_t RenderData(IOCallback & output, bool bForceRender, bool bWithDefault = false);
00060 filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
00061 filepos_t UpdateSize(bool bWithDefault = false, bool bForceRender = false);
00062
00063 EbmlString & operator=(const std::string &);
00064 operator const std::string &() const {return Value;}
00065
00066 void SetDefaultValue(std::string &);
00067
00068 const std::string & DefaultVal() const;
00069
00070 bool IsDefaultValue() const {
00071 return (DefaultISset() && Value == DefaultValue);
00072 }
00073
00074 #if defined(EBML_STRICT_API)
00075 private:
00076 #else
00077 protected:
00078 #endif
00079 std::string Value;
00080 std::string DefaultValue;
00081 };
00082
00083 END_LIBEBML_NAMESPACE
00084
00085 #endif // LIBEBML_STRING_H