1 /* 2 * $Id: ebmlbinary.c 1319 2008-09-19 16:08:57Z robux4 $ 3 * Copyright (c) 2010, Matroska (non-profit organisation) 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * * Neither the name of the Matroska assocation nor the 14 * names of its contributors may be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY the Matroska association ``AS IS'' AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL The Matroska Foundation BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef _EBML2_EBML_STRING_H 30 #define _EBML2_EBML_STRING_H 31 32 #include <string> 33 34 #include "ebml/EbmlElement.h" 35 36 namespace LIBEBML_NAMESPACE { 37 38 class EbmlString : public EbmlElement { 39 public: 40 EbmlString(const ebml_context &,const char *, ebml_element *WithNode = NULL); 41 EbmlString(const ebml_context &, ebml_element *WithNode = NULL); 42 EbmlString & operator=(const std::string &); 43 EbmlString & operator=(const char *); 44 operator const std::string () const; 45 46 virtual EbmlElement * Clone() const; 47 48 // virtual methods needed for the Core-C counterpart 49 virtual filepos_t ReadData(IOCallback & input, ScopeMode ReadFully = SCOPE_ALL_DATA); 50 virtual filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault = false); 51 virtual filepos_t UpdateSize(bool bWithDefault = false, bool bForceRender = false); 52 }; 53 54 }; 55 56 #endif // _EBML2_EBML_STRING_H 57