chromium/third_party/blink/renderer/platform/wtf/text/ascii_fast_path.h

/*
 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 */

#ifdef UNSAFE_BUFFERS_BUILD
// TODO(crbug.com/351564777): Remove this and convert code to safer constructs.
#pragma allow_unsafe_buffers
#endif

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_ASCII_FAST_PATH_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_ASCII_FAST_PATH_H_

#include <stdint.h>
#include <limits>

#include "base/check_op.h"
#include "base/compiler_specific.h"
#include "base/dcheck_is_on.h"
#include "build/build_config.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/ascii_ctype.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_uchar.h"
#include "third_party/blink/renderer/platform/wtf/wtf_size_t.h"

namespace WTF {

// Assuming that a pointer is the size of a "machine word", then
// uintptr_t is an integer type that is also a machine word.
MachineWord;
const uintptr_t kMachineWordAlignmentMask =;

inline bool IsAlignedToMachineWord(const void* pointer) {}

template <typename T>
inline T* AlignToMachineWord(T* pointer) {}

template <size_t size, typename CharacterType>
struct NonASCIIMask;
template <>
struct NonASCIIMask<4, UChar> {};
template <>
struct NonASCIIMask<4, LChar> {};
template <>
struct NonASCIIMask<8, UChar> {};
template <>
struct NonASCIIMask<8, LChar> {};

template <typename CharacterType>
inline bool IsAllASCII(MachineWord word) {}

struct ASCIIStringAttributes {};

// Note: This function assumes the input is likely all ASCII, and
// does not leave early if it is not the case.
template <typename CharacterType>
ALWAYS_INLINE ASCIIStringAttributes
CharacterAttributes(const CharacterType* characters, size_t length) {}

template <typename CharacterType>
ALWAYS_INLINE bool IsLowerASCII(const CharacterType* characters,
                                size_t length) {}

template <typename CharacterType>
ALWAYS_INLINE bool IsUpperASCII(const CharacterType* characters,
                                size_t length) {}

class LowerConverter {};

class UpperConverter {};

template <typename StringType, typename Converter, typename Allocator>
ALWAYS_INLINE typename Allocator::ResultStringType ConvertASCIICase(
    const StringType& string,
    Converter&& converter,
    Allocator&& allocator) {}

}  // namespace WTF

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_ASCII_FAST_PATH_H_