brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · 18f0ff9 Raw
95 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H10#define _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H11 12#include <__config>13 14#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)15#  pragma GCC system_header16#endif17 18// clang-format off19 20// We maintain multiple ABI lists:21// - _LIBCPP_STRING_COMMON_EXTERN_TEMPLATE_LIST22// - _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST23// - _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST24// As the name implies, the ABI lists define a common subset, the V1 (Stable) and unstable ABI.25//26// For unstable, we may explicitly remove function that are external in V1.27//28// For stable, the ABI list should rarely change, except for adding new29// functions supporting new c++ version / API changes. Typically entries30// must never be removed from the stable list.31#define _LIBCPP_STRING_COMMON_EXTERN_TEMPLATE_LIST(Func, CharT)                                                        \32    Func(void basic_string<CharT>::__init(const value_type*, size_type))                                               \33    Func(void basic_string<CharT>::__init(size_type, value_type))                                                      \34    Func(basic_string<CharT>::basic_string(const basic_string&, size_type, size_type, const allocator<CharT>&))        \35    Func(basic_string<CharT>::~basic_string())                                                                         \36    Func(basic_string<CharT>& basic_string<CharT>::operator=(value_type))                                              \37    Func(basic_string<CharT>& basic_string<CharT>::assign(size_type, value_type))                                      \38    Func(basic_string<CharT>& basic_string<CharT>::assign(const basic_string&, size_type, size_type))                  \39    Func(basic_string<CharT>& basic_string<CharT>::append(size_type, value_type))                                      \40    Func(basic_string<CharT>& basic_string<CharT>::append(const value_type*))                                          \41    Func(basic_string<CharT>& basic_string<CharT>::append(const value_type*, size_type))                               \42    Func(basic_string<CharT>& basic_string<CharT>::append(const basic_string&, size_type, size_type))                  \43    Func(void basic_string<CharT>::push_back(value_type))                                                              \44    Func(basic_string<CharT>& basic_string<CharT>::insert(size_type, const value_type*))                               \45    Func(basic_string<CharT>& basic_string<CharT>::insert(size_type, size_type, value_type))                           \46    Func(basic_string<CharT>& basic_string<CharT>::insert(size_type, const value_type*, size_type))                    \47    Func(basic_string<CharT>& basic_string<CharT>::insert(size_type, const basic_string&, size_type, size_type))       \48    Func(basic_string<CharT>::iterator basic_string<CharT>::insert(basic_string::const_iterator, value_type))          \49    Func(basic_string<CharT>& basic_string<CharT>::replace(size_type, size_type, const value_type*))                   \50    Func(basic_string<CharT>& basic_string<CharT>::replace(size_type, size_type, size_type, value_type))               \51    Func(basic_string<CharT>& basic_string<CharT>::replace(size_type, size_type, const value_type*, size_type))        \52    Func(basic_string<CharT>& basic_string<CharT>::replace(size_type, size_type, const basic_string&, size_type, size_type)) \53    Func(void basic_string<CharT>::__grow_by_and_replace(size_type, size_type, size_type, size_type, size_type, size_type, const value_type*)) \54    Func(void basic_string<CharT>::resize(size_type, value_type))                                                      \55    Func(void basic_string<CharT>::reserve(size_type))                                                                 \56    Func(basic_string<CharT>::size_type basic_string<CharT>::copy(value_type*, size_type, size_type) const)            \57    Func(basic_string<CharT>::size_type basic_string<CharT>::find(value_type, size_type) const)                        \58    Func(basic_string<CharT>::size_type basic_string<CharT>::find(const value_type*, size_type, size_type) const)      \59    Func(basic_string<CharT>::size_type basic_string<CharT>::rfind(value_type, size_type) const)                       \60    Func(basic_string<CharT>::size_type basic_string<CharT>::rfind(const value_type*, size_type, size_type) const)     \61    Func(basic_string<CharT>::size_type basic_string<CharT>::find_first_of(const value_type*, size_type, size_type) const) \62    Func(basic_string<CharT>::size_type basic_string<CharT>::find_last_of(const value_type*, size_type, size_type) const) \63    Func(basic_string<CharT>::size_type basic_string<CharT>::find_first_not_of(const value_type*, size_type, size_type) const) \64    Func(basic_string<CharT>::size_type basic_string<CharT>::find_last_not_of(const value_type*, size_type, size_type) const) \65    Func(CharT& basic_string<CharT>::at(size_type))                                                                    \66    Func(const CharT& basic_string<CharT>::at(size_type) const)                                                        \67    Func(int basic_string<CharT>::compare(const value_type*) const)                                                    \68    Func(int basic_string<CharT>::compare(size_type, size_type, const value_type*) const)                              \69    Func(int basic_string<CharT>::compare(size_type, size_type, const value_type*, size_type) const)                   \70    Func(int basic_string<CharT>::compare(size_type, size_type, const basic_string&, size_type, size_type) const)      \71    Func(const basic_string<CharT>::size_type basic_string<CharT>::npos)                                               \72 73#define _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(Func, CharT)                                                            \74  _LIBCPP_STRING_COMMON_EXTERN_TEMPLATE_LIST(Func, CharT)                                                              \75  Func(basic_string<CharT>::basic_string(const basic_string&))                                                         \76  Func(basic_string<CharT>::basic_string(const basic_string&, const allocator<CharT>&))                                \77  Func(basic_string<CharT>& basic_string<CharT>::assign(const value_type*))                                            \78  Func(basic_string<CharT>& basic_string<CharT>::assign(const value_type*, size_type))                                 \79  Func(basic_string<CharT>& basic_string<CharT>::operator=(basic_string const&))                                       \80  Func(void basic_string<CharT>::__grow_by(size_type, size_type, size_type, size_type, size_type, size_type))          \81  Func(basic_string<CharT>& basic_string<CharT>::erase(size_type, size_type))                                          \82 83#define _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(Func, CharT)                                                      \84  _LIBCPP_STRING_COMMON_EXTERN_TEMPLATE_LIST(Func, CharT)                                                              \85  Func(void basic_string<CharT>::__init_copy_ctor_external(const value_type*, size_type))                              \86  Func(basic_string<CharT>& basic_string<CharT>::__assign_external(const value_type*, size_type))                      \87  Func(basic_string<CharT>& basic_string<CharT>::__assign_external(const value_type*))                                 \88  Func(basic_string<CharT>& basic_string<CharT>::__assign_no_alias<false>(const value_type*, size_type))               \89  Func(basic_string<CharT>& basic_string<CharT>::__assign_no_alias<true>(const value_type*, size_type))                \90  Func(void basic_string<CharT>::__erase_external_with_move(size_type, size_type))91 92// clang-format on93 94#endif // _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H95