ustring.hpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * ustring.hpp
  3.  *****************************************************************************
  4.  * Copyright (C) 2003 the VideoLAN team
  5.  * $Id: 36ad95253d5783fa3fa5c623811d10d2d23baea5 $
  6.  *
  7.  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  8.  *          Olivier Teulière <ipkiss@via.ecp.fr>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifndef USTRING_HPP
  25. #define USTRING_HPP
  26. #include "../src/skin_common.hpp"
  27. #include "pointer.hpp"
  28. // Class for UNICODE strings handling
  29. class UString: public SkinObject
  30. {
  31.     public:
  32.         static const uint32_t npos;
  33.         /// Copy constructor
  34.         UString( const UString &rOther );
  35.         /// Create a new unicode string from an UTF8 string
  36.         UString( intf_thread_t *pIntf, const char *pString );
  37.         ~UString();
  38.         /// Get the unicode string
  39.         const uint32_t *u_str() const { return m_pString; }
  40.         /// Get the length of the string
  41.         uint32_t length() const { return m_length; }
  42.         uint32_t size() const { return m_length; }
  43.         /// Comparison
  44.         bool operator ==( const UString &rOther ) const;
  45.         bool operator !=( const UString &rOther ) const;
  46.         bool operator <( const UString &rOther ) const;
  47.         bool operator <=( const UString &rOther ) const;
  48.         bool operator >( const UString &rOther ) const;
  49.         bool operator >=( const UString &rOther ) const;
  50.         /// Assignment
  51.         UString& operator =( const UString &rOther );
  52.         /// Concatenation with assignment
  53.         UString& operator +=( const UString &rOther );
  54.         /// Concatenation
  55.         const UString operator +( const UString &rOther ) const;
  56.         const UString operator +( const char *pString ) const;
  57.         /// Search for the first occurance of the substring specified by str
  58.         /// in this string, starting at position. If found, it returns the
  59.         /// index of the first character of the matching substring. If not
  60.         /// found, it returns npos
  61.         uint32_t find( const UString &str, uint32_t position = 0 ) const;
  62.         uint32_t find( const char *pString, uint32_t position = 0 ) const;
  63.         /// Insert elements of str in place of n1 elements in this string,
  64.         /// starting at position position
  65.         void replace( uint32_t position, uint32_t n1, const UString &str );
  66.         void replace( uint32_t position, uint32_t n1, const char *pString );
  67.         /// Returns a string composed of copies of the lesser of n and size()
  68.         /// characters in this string starting at index position
  69.         UString substr( uint32_t position = 0, uint32_t n = npos) const;
  70.         /// Build a string from an integer
  71.         static UString fromInt(intf_thread_t *pIntf, int number);
  72.     private:
  73.         /// Unicode string
  74.         uint32_t *m_pString;
  75.         /// String length
  76.         uint32_t m_length;
  77. };
  78. typedef CountedPtr<UString> UStringPtr;
  79. #endif