/usr/include/ebml/EbmlUnicodeString.h is in libebml-dev 1.3.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /****************************************************************************
** libebml : parse EBML files, see http://embl.sourceforge.net/
**
** <file/class description>
**
** 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
**
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.
**
** Contact license@matroska.org if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
/*!
\file
\version \$Id$
\author Steve Lhomme <robux4 @ users.sf.net>
\author Moritz Bunkus <moritz @ bunkus.org>
\author Jory Stone <jcsston @ toughguy.net>
*/
#ifndef LIBEBML_UNICODE_STRING_H
#define LIBEBML_UNICODE_STRING_H
#include <string>
#include "EbmlTypes.h"
#include "EbmlElement.h"
START_LIBEBML_NAMESPACE
/*!
\class UTFstring
A class storing strings in a wchar_t (ie, in UCS-2 or UCS-4)
\note inspired by wstring which is not available everywhere
*/
class EBML_DLL_API UTFstring {
public:
typedef wchar_t value_type;
UTFstring();
UTFstring(const wchar_t *); // should be NULL terminated
UTFstring(const UTFstring &);
UTFstring(std::wstring const &);
virtual ~UTFstring();
bool operator==(const UTFstring&) const;
inline bool operator!=(const UTFstring &cmp) const
{
return !(*this == cmp);
}
UTFstring & operator=(const UTFstring &);
UTFstring & operator=(const wchar_t *);
UTFstring & operator=(wchar_t);
/// Return length of string
size_t length() const {return _Length;}
operator const wchar_t*() const;
const wchar_t* c_str() const {return _Data;}
const std::string & GetUTF8() const {return UTF8string;}
void SetUTF8(const std::string &);
#if defined(EBML_STRICT_API)
private:
#else
protected:
#endif
size_t _Length; ///< length of the UCS string excluding the \0
wchar_t* _Data; ///< internal UCS representation
std::string UTF8string;
static bool wcscmp_internal(const wchar_t *str1, const wchar_t *str2);
void UpdateFromUTF8();
void UpdateFromUCS2();
};
/*!
\class EbmlUnicodeString
\brief Handle all operations on a Unicode string EBML element
\note internally treated as a string made of wide characters (ie UCS-2 or UCS-4 depending on the machine)
*/
class EBML_DLL_API EbmlUnicodeString : public EbmlElement {
public:
EbmlUnicodeString();
EbmlUnicodeString(const UTFstring & DefaultValue);
EbmlUnicodeString(const EbmlUnicodeString & ElementToClone);
virtual ~EbmlUnicodeString() {}
virtual bool ValidateSize() const {return IsFiniteSize();} // any size is possible
filepos_t RenderData(IOCallback & output, bool bForceRender, bool bWithDefault = false);
filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA);
filepos_t UpdateSize(bool bWithDefault = false, bool bForceRender = false);
EbmlUnicodeString & operator=(const UTFstring &); ///< platform dependant code
operator const UTFstring &() const;
EbmlUnicodeString &SetValue(UTFstring const &NewValue);
EbmlUnicodeString &SetValueUTF8(std::string const &NewValue);
UTFstring GetValue() const;
std::string GetValueUTF8() const;
void SetDefaultValue(UTFstring &);
const UTFstring & DefaultVal() const;
bool IsDefaultValue() const {
return (DefaultISset() && Value == DefaultValue);
}
#if defined(EBML_STRICT_API)
private:
#else
protected:
#endif
UTFstring Value; /// The actual value of the element
UTFstring DefaultValue;
};
END_LIBEBML_NAMESPACE
#endif // LIBEBML_UNICODE_STRING_H
|