diff --git a/src/value.hpp b/src/value.hpp index 68670966..70edea73 100644 --- a/src/value.hpp +++ b/src/value.hpp @@ -1230,10 +1230,12 @@ namespace Exiv2 { //! @name Creators //@{ - //! Default constructor. - ValueType(); + //! Default Constructor. + explicit ValueType(TypeId typeId =getType()); + //! Constructor. + ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId =getType()); //! Constructor. - explicit ValueType(TypeId typeId); + explicit ValueType(const T& val, TypeId typeId =getType()); //! Copy constructor ValueType(const ValueType& rhs); //! Virtual destructor. @@ -1480,15 +1482,23 @@ namespace Exiv2 { } template - ValueType::ValueType() - : Value(getType()), pDataArea_(0), sizeDataArea_(0) + ValueType::ValueType(TypeId typeId) + : Value(typeId), pDataArea_(0), sizeDataArea_(0) { } template - ValueType::ValueType(TypeId typeId) + ValueType::ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId) + : Value(typeId), pDataArea_(0), sizeDataArea_(0) + { + read(buf, len, byteOrder); + } + + template + ValueType::ValueType(const T& val, TypeId typeId) : Value(typeId), pDataArea_(0), sizeDataArea_(0) { + value_.push_back(val); } template