diff --git a/ebml/EbmlSInteger.h b/ebml/EbmlSInteger.h index a513ab9..2fb204f 100644 --- a/ebml/EbmlSInteger.h +++ b/ebml/EbmlSInteger.h @@ -1,96 +1,98 @@ -/**************************************************************************** -** libebml : parse EBML files, see http://embl.sourceforge.net/ -** -** -** -** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. -** -** This file is part of libebml. -** -** This library is free software; you can redistribute it and/or -** modify it under the terms of the GNU Lesser General Public -** License as published by the Free Software Foundation; either -** version 2.1 of the License, or (at your option) any later version. -** -** This library is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public -** License along with this library; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -** -** See http://www.matroska.org/license/lgpl/ for LGPL licensing information. -** -** Contact license@matroska.org if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -/*! - \file - \version \$Id: EbmlSInteger.h 1079 2005-03-03 13:18:14Z robux4 $ - \author Steve Lhomme - \author Julien Coloos - \author Moritz Bunkus -*/ -#ifndef LIBEBML_SINTEGER_H -#define LIBEBML_SINTEGER_H - -#include "EbmlTypes.h" -#include "EbmlElement.h" - -START_LIBEBML_NAMESPACE - -const int DEFAULT_INT_SIZE = 1; ///< optimal size stored - -/*! - \class EbmlSInteger - \brief Handle all operations on a signed integer EBML element -*/ -class EBML_DLL_API EbmlSInteger : public EbmlElement { - public: - EbmlSInteger(); - EbmlSInteger(int64 DefaultValue); - EbmlSInteger(const EbmlSInteger & ElementToClone); - - EbmlSInteger & operator = (int64 NewValue) {Value = NewValue; SetValueIsSet(); return *this;} - - /*! - Set the default size of the integer (usually 1,2,4 or 8) - */ - void SetDefaultSize(int nDefaultSize = DEFAULT_INT_SIZE) {SetSize_(nDefaultSize);} - - bool ValidateSize() const {return (GetSize() <= 8);} - filepos_t RenderData(IOCallback & output, bool bForceRender, bool bKeepIntact = false); - filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); - filepos_t UpdateSize(bool bKeepIntact = false, bool bForceRender = false); - - bool operator<(const EbmlSInteger & EltCmp) const {return Value < EltCmp.Value;} - - operator int8() {return int8(Value);} - operator int16() {return int16(Value);} - operator int32() {return int32(Value);} - operator int64() {return Value;} - - void SetDefaultValue(int64 aValue) {assert(!DefaultISset()); DefaultValue = aValue; SetDefaultIsSet();} - - int64 DefaultVal() const {assert(DefaultISset()); return DefaultValue;} - - bool IsDefaultValue() const { - return (DefaultISset() && Value == DefaultValue); - } - -#if defined(EBML_STRICT_API) - private: -#else - protected: -#endif - int64 Value; /// The actual value of the element - int64 DefaultValue; -}; - -END_LIBEBML_NAMESPACE - -#endif // LIBEBML_SINTEGER_H +/**************************************************************************** +** libebml : parse EBML files, see http://embl.sourceforge.net/ +** +** +** +** Copyright (C) 2002-2010 Steve Lhomme. All rights reserved. +** +** This file is part of libebml. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +** +** See http://www.matroska.org/license/lgpl/ for LGPL licensing information. +** +** Contact license@matroska.org if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +/*! + \file + \version \$Id: EbmlSInteger.h 1079 2005-03-03 13:18:14Z robux4 $ + \author Steve Lhomme + \author Julien Coloos + \author Moritz Bunkus +*/ +#ifndef LIBEBML_SINTEGER_H +#define LIBEBML_SINTEGER_H + +#include + +#include "EbmlTypes.h" +#include "EbmlElement.h" + +START_LIBEBML_NAMESPACE + +const int DEFAULT_INT_SIZE = 1; ///< optimal size stored + +/*! + \class EbmlSInteger + \brief Handle all operations on a signed integer EBML element +*/ +class EBML_DLL_API EbmlSInteger : public EbmlElement { + public: + EbmlSInteger(); + EbmlSInteger(int64 DefaultValue); + EbmlSInteger(const EbmlSInteger & ElementToClone); + + EbmlSInteger & operator = (int64 NewValue) {Value = NewValue; SetValueIsSet(); return *this;} + + /*! + Set the default size of the integer (usually 1,2,4 or 8) + */ + void SetDefaultSize(int nDefaultSize = DEFAULT_INT_SIZE) {SetSize_(nDefaultSize);} + + bool ValidateSize() const {return (GetSize() <= 8);} + filepos_t RenderData(IOCallback & output, bool bForceRender, bool bKeepIntact = false); + filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); + filepos_t UpdateSize(bool bKeepIntact = false, bool bForceRender = false); + + bool operator<(const EbmlSInteger & EltCmp) const {return Value < EltCmp.Value;} + + operator int8() {return int8(Value);} + operator int16() {return int16(Value);} + operator int32() {return int32(Value);} + operator int64() {return Value;} + + void SetDefaultValue(int64 aValue) {assert(!DefaultISset()); DefaultValue = aValue; SetDefaultIsSet();} + + int64 DefaultVal() const {assert(DefaultISset()); return DefaultValue;} + + bool IsDefaultValue() const { + return (DefaultISset() && Value == DefaultValue); + } + +#if defined(EBML_STRICT_API) + private: +#else + protected: +#endif + int64 Value; /// The actual value of the element + int64 DefaultValue; +}; + +END_LIBEBML_NAMESPACE + +#endif // LIBEBML_SINTEGER_H diff --git a/ebml/IOCallback.h b/ebml/IOCallback.h index 50a7421..5a5ecd8 100644 --- a/ebml/IOCallback.h +++ b/ebml/IOCallback.h @@ -9,12 +9,12 @@ ** modify it under the terms of the GNU Lesser General Public ** License as published by the Free Software Foundation; either ** version 2.1 of the License, or (at your option) any later version. -** +** ** This library is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** Lesser General Public License for more details. -** +** ** You should have received a copy of the GNU Lesser General Public ** License along with this library; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -35,6 +35,7 @@ #include "EbmlTypes.h" +#include #include #include // #include