mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			60 lines
		
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #ifndef _C4_STD_STRING_FWD_HPP_
 | ||
|  | #define _C4_STD_STRING_FWD_HPP_
 | ||
|  | 
 | ||
|  | /** @file string_fwd.hpp */ | ||
|  | 
 | ||
|  | #ifndef DOXYGEN
 | ||
|  | 
 | ||
|  | #ifndef C4CORE_SINGLE_HEADER
 | ||
|  | #include "c4/substr_fwd.hpp"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include <cstddef>
 | ||
|  | 
 | ||
|  | // forward declarations for std::string
 | ||
|  | #if defined(__GLIBCXX__) || defined(__GLIBCPP__)
 | ||
|  | #include <bits/stringfwd.h>  // use the fwd header in glibcxx
 | ||
|  | #elif defined(_LIBCPP_VERSION) || defined(__APPLE_CC__)
 | ||
|  | #include <iosfwd>  // use the fwd header in stdlibc++
 | ||
|  | #elif defined(_MSC_VER)
 | ||
|  | #include "c4/error.hpp"
 | ||
|  | //! @todo is there a fwd header in msvc?
 | ||
|  | namespace std { | ||
|  | C4_SUPPRESS_WARNING_MSVC_WITH_PUSH(4643) // Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.
 | ||
|  | template<typename> struct char_traits; | ||
|  | template<typename> class allocator; | ||
|  | template<typename _CharT, typename _Traits, typename _Alloc> class basic_string; | ||
|  | using string = basic_string<char, char_traits<char>, allocator<char>>; | ||
|  | C4_SUPPRESS_WARNING_MSVC_POP | ||
|  | } /* namespace std */ | ||
|  | #else
 | ||
|  | #error "unknown standard library"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | namespace c4 { | ||
|  | 
 | ||
|  | C4_ALWAYS_INLINE c4::substr to_substr(std::string &s) noexcept; | ||
|  | C4_ALWAYS_INLINE c4::csubstr to_csubstr(std::string const& s) noexcept; | ||
|  | 
 | ||
|  | bool operator== (c4::csubstr ss, std::string const& s); | ||
|  | bool operator!= (c4::csubstr ss, std::string const& s); | ||
|  | bool operator>= (c4::csubstr ss, std::string const& s); | ||
|  | bool operator>  (c4::csubstr ss, std::string const& s); | ||
|  | bool operator<= (c4::csubstr ss, std::string const& s); | ||
|  | bool operator<  (c4::csubstr ss, std::string const& s); | ||
|  | 
 | ||
|  | bool operator== (std::string const& s, c4::csubstr ss); | ||
|  | bool operator!= (std::string const& s, c4::csubstr ss); | ||
|  | bool operator>= (std::string const& s, c4::csubstr ss); | ||
|  | bool operator>  (std::string const& s, c4::csubstr ss); | ||
|  | bool operator<= (std::string const& s, c4::csubstr ss); | ||
|  | bool operator<  (std::string const& s, c4::csubstr ss); | ||
|  | 
 | ||
|  | size_t to_chars(c4::substr buf, std::string const& s); | ||
|  | bool from_chars(c4::csubstr buf, std::string * s); | ||
|  | 
 | ||
|  | } // namespace c4
 | ||
|  | 
 | ||
|  | #endif // DOXYGEN
 | ||
|  | #endif // _C4_STD_STRING_FWD_HPP_
 |