Warning: This file is not a C or C++ file. It does not have highlighting.

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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H
10#define _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H
11
12#include <__config>
13
14#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
15# pragma GCC system_header
16#endif
17
18// clang-format off
19
20// We maintain multiple ABI lists:
21// - _LIBCPP_STRING_COMMON_EXTERN_TEMPLATE_LIST
22// - _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST
23// - _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST
24// 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 new
29// functions supporting new c++ version / API changes. Typically entries
30// 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 on
93
94#endif // _LIBCPP___STRING_EXTERN_TEMPLATE_LISTS_H
95

Warning: This file is not a C or C++ file. It does not have highlighting.

source code of libcxx/include/__string/extern_template_lists.h