mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-08 00:07:30 +09:00
Bug 1452619 - Implement mozilla::IsAsciiAlpha. r=froydnj, a=lizzard
This commit is contained in:
parent
66bf4fa8f9
commit
48ffdb584c
5 changed files with 168 additions and 1 deletions
58
mfbt/TextUtils.h
Normal file
58
mfbt/TextUtils.h
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* Character/text operations. */
|
||||
|
||||
#ifndef mozilla_TextUtils_h
|
||||
#define mozilla_TextUtils_h
|
||||
|
||||
#include "mozilla/TypeTraits.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<typename Char>
|
||||
class MakeUnsignedChar
|
||||
: public MakeUnsigned<Char>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class MakeUnsignedChar<char16_t>
|
||||
{
|
||||
public:
|
||||
using Type = char16_t;
|
||||
};
|
||||
|
||||
template<>
|
||||
class MakeUnsignedChar<char32_t>
|
||||
{
|
||||
public:
|
||||
using Type = char32_t;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
/**
|
||||
* Returns true iff |aChar| matches [a-zA-Z].
|
||||
*
|
||||
* This function is basically what you thought isalpha was, except its behavior
|
||||
* doesn't depend on the user's current locale.
|
||||
*/
|
||||
template<typename Char>
|
||||
constexpr bool
|
||||
IsAsciiAlpha(Char aChar)
|
||||
{
|
||||
using UnsignedChar = typename detail::MakeUnsignedChar<Char>::Type;
|
||||
return ('a' <= static_cast<UnsignedChar>(aChar) &&
|
||||
static_cast<UnsignedChar>(aChar) <= 'z') ||
|
||||
('A' <= static_cast<UnsignedChar>(aChar) &&
|
||||
static_cast<UnsignedChar>(aChar) <= 'Z');
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif /* mozilla_TextUtils_h */
|
||||
Loading…
Add table
Add a link
Reference in a new issue