text: // This file is a part of muu and is subject to the the terms of the MIT license.
  // Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
  // See https://github.com/marzer/muu/blob/master/LICENSE for the full license text.
  // SPDX-License-Identifier: MIT
  //-----
  // this file was generated by generate_unicode_functions.py - do not modify it directly
  // clang-format off
  
  #pragma once
  #include "../preprocessor.h"
  #if MUU_WCHAR_BITS == 32
  	#include "unicode_char32_t.h"
  #elif MUU_WCHAR_BITS == 16
  	#include "unicode_char16_t.h"
  #elif MUU_WCHAR_BITS == 8
  	#include "unicode_unsigned char.h"
  #endif
  #include "header_start.h"
  #if !MUU_GCC || MUU_GCC >= 9
  	MUU_FORCE_NDEBUG_OPTIMIZATIONS;
  #else
  	MUU_PRAGMA_GCC(optimize("O1"))
  #endif
  
  namespace muu
  {
  	/// \addtogroup strings
  	/// @{
  
  	/// \addtogroup code_units
  	/// @{
  
  	/// \addtogroup	is_ascii_code_point	is_ascii_code_point()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a valid code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_code_point(wchar_t c) noexcept
  	{
  		return is_ascii_code_point(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_hyphen	is_ascii_hyphen()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a hyphen code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_hyphen(wchar_t c) noexcept
  	{
  		return is_ascii_hyphen(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_letter	is_ascii_letter()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a letter code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_letter(wchar_t c) noexcept
  	{
  		return is_ascii_letter(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_lowercase	is_ascii_lowercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a lowercase code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_lowercase(wchar_t c) noexcept
  	{
  		return is_ascii_lowercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_number	is_ascii_number()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a number code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_number(wchar_t c) noexcept
  	{
  		return is_ascii_number(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_uppercase	is_ascii_uppercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is an uppercase code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_uppercase(wchar_t c) noexcept
  	{
  		return is_ascii_uppercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_ascii_whitespace	is_ascii_whitespace()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a whitespace code point from the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_ascii_whitespace(wchar_t c) noexcept
  	{
  		return is_ascii_whitespace(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_code_point	is_non_ascii_code_point()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a valid code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_code_point(wchar_t c) noexcept
  	{
  		return is_non_ascii_code_point(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_hyphen	is_non_ascii_hyphen()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a hyphen code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_hyphen(wchar_t c) noexcept
  	{
  		return is_non_ascii_hyphen(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_letter	is_non_ascii_letter()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a letter code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_letter(wchar_t c) noexcept
  	{
  		return is_non_ascii_letter(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_lowercase	is_non_ascii_lowercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a lowercase code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_lowercase(wchar_t c) noexcept
  	{
  		return is_non_ascii_lowercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_number	is_non_ascii_number()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a number code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_number(wchar_t c) noexcept
  	{
  		return is_non_ascii_number(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_uppercase	is_non_ascii_uppercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is an uppercase code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_uppercase(wchar_t c) noexcept
  	{
  		return is_non_ascii_uppercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_non_ascii_whitespace	is_non_ascii_whitespace()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a whitespace code point from outside the ASCII range.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_non_ascii_whitespace(wchar_t c) noexcept
  	{
  		return is_non_ascii_whitespace(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_code_point	is_not_code_point()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a valid code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_code_point(wchar_t c) noexcept
  	{
  		return is_not_code_point(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_hyphen	is_not_hyphen()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a hyphen code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_hyphen(wchar_t c) noexcept
  	{
  		return is_not_hyphen(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_letter	is_not_letter()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a letter code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_letter(wchar_t c) noexcept
  	{
  		return is_not_letter(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_lowercase	is_not_lowercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a lowercase code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_lowercase(wchar_t c) noexcept
  	{
  		return is_not_lowercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_number	is_not_number()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a number code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_number(wchar_t c) noexcept
  	{
  		return is_not_number(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_uppercase	is_not_uppercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not an uppercase code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_uppercase(wchar_t c) noexcept
  	{
  		return is_not_uppercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_not_whitespace	is_not_whitespace()
  	/// @{
  
  	/// \brief		Returns true if a wide character is not a whitespace code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_not_whitespace(wchar_t c) noexcept
  	{
  		return is_not_whitespace(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_code_point	is_code_point()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a valid code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_code_point(wchar_t c) noexcept
  	{
  		return is_code_point(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_code_point_boundary	is_code_point_boundary()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a code point boundary.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_code_point_boundary(wchar_t c) noexcept
  	{
  		return is_code_point_boundary(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_combining_mark	is_combining_mark()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a combining mark code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_combining_mark(wchar_t c) noexcept
  	{
  		return is_combining_mark(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_decimal_digit	is_decimal_digit()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a decimal digit code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_decimal_digit(wchar_t c) noexcept
  	{
  		return is_decimal_digit(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_hexadecimal_digit	is_hexadecimal_digit()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a hexadecimal digit code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_hexadecimal_digit(wchar_t c) noexcept
  	{
  		return is_hexadecimal_digit(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_hyphen	is_hyphen()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a hyphen code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_hyphen(wchar_t c) noexcept
  	{
  		return is_hyphen(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_letter	is_letter()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a letter code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_letter(wchar_t c) noexcept
  	{
  		return is_letter(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_lowercase	is_lowercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a lowercase code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_lowercase(wchar_t c) noexcept
  	{
  		return is_lowercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_number	is_number()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a number code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_number(wchar_t c) noexcept
  	{
  		return is_number(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_octal_digit	is_octal_digit()
  	/// @{
  
  	/// \brief		Returns true if a wide character is an octal digit code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_octal_digit(wchar_t c) noexcept
  	{
  		return is_octal_digit(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_uppercase	is_uppercase()
  	/// @{
  
  	/// \brief		Returns true if a wide character is an uppercase code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_uppercase(wchar_t c) noexcept
  	{
  		return is_uppercase(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/// \addtogroup	is_whitespace	is_whitespace()
  	/// @{
  
  	/// \brief		Returns true if a wide character is a whitespace code point.
  	MUU_NODISCARD
  	MUU_ATTR(const)
  	constexpr bool is_whitespace(wchar_t c) noexcept
  	{
  		return is_whitespace(static_cast<impl::wchar_code_unit>(c));
  	}
  
  	/// @}
  
  	/** @} */	// strings::code_units
  	/** @} */	// strings
  }
  
  #if !MUU_GCC || MUU_GCC >= 9
  	MUU_RESET_NDEBUG_OPTIMIZATIONS;
  #endif
  #include "header_end.h"
  // clang-format on
  
  