// Filename: string // Created by: drose (12May00) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) Carnegie Mellon University. All rights reserved. // // All use of this software is subject to the terms of the revised BSD // license. You should have received a copy of this license along // with this source code in a file named "LICENSE." // //////////////////////////////////////////////////////////////////// // This file, and all the other files in this directory, aren't // intended to be compiled--they're just parsed by CPPParser (and // interrogate) in lieu of the actual system headers, to generate the // interrogate database. #ifndef STRING_H #define STRING_H #include #include #include namespace std { template struct char_traits; template<> struct char_traits { using char_type = char; using int_type = int; using state_type = mbstate_t; }; template<> struct char_traits { using char_type = char16_t; using int_type = uint_least16_t; using state_type = mbstate_t; }; template<> struct char_traits { using char_type = char32_t; using int_type = uint_least32_t; using state_type = mbstate_t; }; template<> struct char_traits { using char_type = wchar_t; using int_type = wint_t; using state_type = mbstate_t; }; template class basic_string { public: struct iterator; struct const_iterator; struct reverse_iterator; struct const_reverse_iterator; typedef typename size_t size_type; static const size_t npos = -1; basic_string(); basic_string(const basic_string ©); void operator = (const basic_string ©); basic_string(const ctype *string); ~basic_string(); const ctype *c_str() const; size_t length() const; ctype at(size_t pos) const; ctype operator[](size_t pos) const; ctype &operator[](size_t pos); }; typedef basic_string string; typedef basic_string wstring; typedef basic_string u16string; typedef basic_string u32string; template struct hash; template<> struct hash; template<> struct hash; template<> struct hash; template<> struct hash; inline namespace literals { inline namespace string_literals { string operator "" s(const char *str, size_t len); wstring operator "" s(const wchar_t *str, size_t len); u16string operator "" s(const char16_t *str, size_t len); u32string operator "" s(const char32_t *str, size_t len); } } } #endif