From 24e98486a3b6076bfa1b5fac5c2be0ec264d10c9 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Thu, 24 Jun 2010 21:28:00 +0000 Subject: [PATCH] Continuing to work through regex, and updated libcxx_by_chapter.pdf with weekly test results llvm-svn: 106790 --- libcxx/include/regex | 510 +++++++++++++++++- libcxx/src/regex.cpp | 35 +- libcxx/test/re/re.badexp/regex_error.pass.cpp | 31 +- .../re.regex.const/constants.pass.cpp | 52 ++ .../re.regex.construct/default.pass.cpp | 32 ++ libcxx/test/re/re.regex/types.pass.cpp | 35 ++ libcxx/www/libcxx_by_chapter.pdf | Bin 32552 -> 34895 bytes 7 files changed, 666 insertions(+), 29 deletions(-) create mode 100644 libcxx/test/re/re.regex/re.regex.const/constants.pass.cpp create mode 100644 libcxx/test/re/re.regex/re.regex.construct/default.pass.cpp create mode 100644 libcxx/test/re/re.regex/types.pass.cpp diff --git a/libcxx/include/regex b/libcxx/include/regex index e48f0722c4ab..02777741d143 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -720,6 +720,7 @@ typedef regex_token_iterator wsregex_token_iterator; #include <__config> #include #include <__locale> +#include #pragma GCC system_header @@ -895,7 +896,8 @@ enum error_type error_space, error_badrepeat, error_complexity, - error_stack + error_stack, + error_temp }; } // regex_constants @@ -1193,7 +1195,7 @@ regex_traits<_CharT>::__value(unsigned char __ch, int __radix) { __ch |= 0x20; // tolower if ('a' <= __ch && __ch <= 'f') - return __ch - 'a' + 10; + return __ch - ('a' - 10); } } return -1; @@ -1207,6 +1209,510 @@ regex_traits<_CharT>::__value(wchar_t __ch, int __radix) const return __value(static_cast(__ct_->narrow(__ch, char_type())), __radix); } +template > +class basic_regex +{ +public: + // types: + typedef _CharT value_type; + typedef regex_constants::syntax_option_type flag_type; + typedef typename _Traits::locale_type locale_type; + +private: + _Traits __traits_; + flag_type __flags_; + unsigned __marked_count_; + +public: + // constants: + static const/*expr*/ regex_constants::syntax_option_type icase = regex_constants::icase; + static const/*expr*/ regex_constants::syntax_option_type nosubs = regex_constants::nosubs; + static const/*expr*/ regex_constants::syntax_option_type optimize = regex_constants::optimize; + static const/*expr*/ regex_constants::syntax_option_type collate = regex_constants::collate; + static const/*expr*/ regex_constants::syntax_option_type ECMAScript = regex_constants::ECMAScript; + static const/*expr*/ regex_constants::syntax_option_type basic = regex_constants::basic; + static const/*expr*/ regex_constants::syntax_option_type extended = regex_constants::extended; + static const/*expr*/ regex_constants::syntax_option_type awk = regex_constants::awk; + static const/*expr*/ regex_constants::syntax_option_type grep = regex_constants::grep; + static const/*expr*/ regex_constants::syntax_option_type egrep = regex_constants::egrep; + + // construct/copy/destroy: + basic_regex(); + explicit basic_regex(const value_type* __p, flag_type __f = regex_constants::ECMAScript) + : __flags_(__f), __marked_count_(0) + {__parse(__p, __p + __traits_.length(__p));} + basic_regex(const value_type* __p, size_t __len, flag_type __f) + : __flags_(__f), __marked_count_(0) + {__parse(__p, __p + __len);} + basic_regex(const basic_regex&); +#ifdef _LIBCPP_MOVE + basic_regex(basic_regex&&); +#endif + template + explicit basic_regex(const basic_string& __p, + flag_type __f = regex_constants::ECMAScript) + : __flags_(__f), __marked_count_(0) + {__parse(__p.begin(), __p.end());} + template + basic_regex(_ForwardIterator __first, _ForwardIterator __last, + flag_type __f = regex_constants::ECMAScript) + : __flags_(__f), __marked_count_(0) + {__parse(__first, __last);} + basic_regex(initializer_list __il, + flag_type __f = regex_constants::ECMAScript) + : __flags_(__f), __marked_count_(0) + {__parse(__il.begin(), __il.end());} + + ~basic_regex(); + + basic_regex& operator=(const basic_regex&); +#ifdef _LIBCPP_MOVE + basic_regex& operator=(basic_regex&&); +#endif + basic_regex& operator=(const value_type* __p); + basic_regex& operator=(initializer_list __il); + template + basic_regex& operator=(const basic_string& __p); + + // assign: + basic_regex& assign(const basic_regex& __that); +#ifdef _LIBCPP_MOVE + basic_regex& assign(basic_regex&& __that); +#endif + basic_regex& assign(const value_type* __p, flag_type __f = regex_constants::ECMAScript); + basic_regex& assign(const value_type* __p, size_t __len, flag_type __f); + template + basic_regex& assign(const basic_string& __s, + flag_type __f = regex_constants::ECMAScript); + template + basic_regex& assign(_InputIterator __first, _InputIterator __last, + flag_type __f = regex_constants::ECMAScript); + basic_regex& assign(initializer_list __il, + flag_type = regex_constants::ECMAScript); + + // const operations: + unsigned mark_count() const {return __marked_count_;} + flag_type flags() const {return __flags_;} + + // locale: + locale_type imbue(locale_type __loc) {return __traits_.imbue(__loc);} + locale_type getloc() const {return __traits_.getloc();} + + // swap: + void swap(basic_regex&); + +private: + template + void __parse(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_basic_reg_exp(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_RE_expression(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_simple_RE(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_nondupl_RE(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_one_char_or_coll_elem_RE(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_Back_open_paren(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_Back_close_paren(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_Back_open_brace(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_Back_close_brace(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_BACKREF(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_ORD_CHAR(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_QUOTED_CHAR(_ForwardIterator __first, _ForwardIterator __last); + template + _ForwardIterator + __parse_RE_dupl_symbol(_ForwardIterator __first, _ForwardIterator __last); + + void __push_l_anchor(); + void __push_r_anchor(); + void __push_match_any(); + void __push_greedy_inf_repeat(int __min); + void __push_exact_repeat(int __count); + void __push_repeat(int __min, int __max); +}; + +template +inline +basic_regex<_CharT, _Traits>::basic_regex() + : __traits_(), __flags_(), __marked_count_(0) +{ +} + +template +basic_regex<_CharT, _Traits>::~basic_regex() +{ +} + +template +template +void +basic_regex<_CharT, _Traits>::__parse(_ForwardIterator __first, + _ForwardIterator __last) +{ + switch (__flags_ & 0x3F0) + { + case ECMAScript: + break; + case basic: + __parse_basic_reg_exp(__first, __last); + break; + case extended: + break; + case awk: + break; + case grep: + break; + case egrep: + break; + default: + throw regex_error(regex_constants::error_temp); + } +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_basic_reg_exp(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + if (*__first == '^') + { + __push_l_anchor(); + ++__first; + } + if (__first != __last) + { + __first = __parse_RE_expression(__first, __last); + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp == __last && *__first == '$') + { + __push_r_anchor(); + ++__first; + } + } + } + if (__first != __last) + throw regex_error(regex_constants::error_temp); + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_RE_expression(_ForwardIterator __first, + _ForwardIterator __last) +{ + while (true) + { + _ForwardIterator __temp = __parse_simple_RE(__first, __last); + if (__temp == __first) + break; + __first = __temp; + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_simple_RE(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = __parse_nondupl_RE(__first, __last); + if (__temp != __first) + { + __first = __temp; + __first = __parse_RE_dupl_symbol(__first, __last); + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_nondupl_RE(_ForwardIterator __first, + _ForwardIterator __last) +{ + _ForwardIterator __temp = __first; + __first = __parse_one_char_or_coll_elem_RE(__first, __last); + if (__temp == __first) + { + __temp = __parse_Back_open_paren(__first, __last); + if (__temp != __first) + { + __first = __parse_RE_expression(__temp, __last); + __temp = __parse_Back_close_paren(__first, __last); + if (__temp == __first) + throw regex_error(regex_constants::error_paren); + __first = __temp; + ++__marked_count_; + } + else + __first = __parse_BACKREF(__first, __last); + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_one_char_or_coll_elem_RE( + _ForwardIterator __first, + _ForwardIterator __last) +{ + _ForwardIterator __temp = __first; + __first = __parse_ORD_CHAR(__first, __last); + if (__temp == __first) + { + __first = __parse_QUOTED_CHAR(__first, __last); + if (__temp == __first) + { + if (__first != __last && *__first == '.') + { + __push_match_any(); + ++__first; + } + else + __first = __parse_bracket_expression(__first, __last); + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_Back_open_paren(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\' && *__temp == '(') + __first = ++__temp; + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_Back_close_paren(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\' && *__temp == ')') + __first = ++__temp; + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_Back_open_brace(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\' && *__temp == '{') + __first = ++__temp; + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_Back_close_brace(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\' && *__temp == '}') + __first = ++__temp; + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_BACKREF(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\' && '1' <= *__temp && *__temp <= '9') + { + __push_back_ref(*__temp - '0'); + __first = ++__temp; + } + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_ORD_CHAR(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp == __last && *__first == '$') + return __first; + // Not called inside a bracket + if (*__first == '.' || *__first == '\\' || *__first == '[') + return __first; + __push_ord_char(*__first); + ++__first; + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_QUOTED_CHAR(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + _ForwardIterator __temp = next(__first); + if (__temp != __last) + { + if (*__first == '\\') + { + switch (*__temp) + { + case '^': + case '.': + case '*': + case '[': + case '$': + case '\\': + __push_ord_char(*__temp); + __first = ++__temp; + break; + } + } + } + } + return __first; +} + +template +template +_ForwardIterator +basic_regex<_CharT, _Traits>::__parse_RE_dupl_symbol(_ForwardIterator __first, + _ForwardIterator __last) +{ + if (__first != __last) + { + if (__first == '*') + { + __push_greedy_inf_repeat(0); + ++__first; + } + else + { + _ForwardIterator __temp = __parse_Back_open_brace(__first, __last); + if (__temp != __first) + { + int __min = 0; + __first = __temp; + __temp = __parse_DUP_COUNT(__first, __last, __min); + if (__temp == __first) + throw regex_error(regex_constants::error_badbrace); + __first = __temp; + if (__first == __last) + throw regex_error(regex_constants::error_brace); + if (*__first != ',') + { + __temp = __parse_Back_close_brace(__first, __last); + if (__temp == __first) + throw regex_error(regex_constants::error_brace); + __push_exact_repeat(__min); + __first = __temp; + } + else + { + ++__first; // consume ',' + int __max = -1; + __first = __parse_DUP_COUNT(__first, __last, __max); + __temp = __parse_Back_close_brace(__first, __last); + if (__temp == __first) + throw regex_error(regex_constants::error_brace); + if (__max == -1) + __push_greedy_inf_repeat(__min); + else + { + if (__max < __min) + throw regex_error(regex_constants::error_badbrace); + __push_repeat(__min, __max); + } + __first = __temp; + } + } + } + } + return __first; +} + +typedef basic_regex regex; +typedef basic_regex wregex; + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_REGEX diff --git a/libcxx/src/regex.cpp b/libcxx/src/regex.cpp index abb1b66853c9..9cc6eb543b2a 100644 --- a/libcxx/src/regex.cpp +++ b/libcxx/src/regex.cpp @@ -20,33 +20,40 @@ make_error_type_string(regex_constants::error_type ecode) switch (ecode) { case regex_constants::error_collate: - return "error_collate"; + return "The expression contained an invalid collating element name."; case regex_constants::error_ctype: - return "error_ctype"; + return "The expression contained an invalid character class name."; case regex_constants::error_escape: - return "error_escape"; + return "The expression contained an invalid escaped character, or a " + "trailing escape."; case regex_constants::error_backref: - return "error_backref"; + return "The expression contained an invalid back reference."; case regex_constants::error_brack: - return "error_brack"; + return "The expression contained mismatched [ and ]."; case regex_constants::error_paren: - return "error_paren"; + return "The expression contained mismatched ( and )."; case regex_constants::error_brace: - return "error_brace"; + return "The expression contained mismatched { and }."; case regex_constants::error_badbrace: - return "error_badbrace"; + return "The expression contained an invalid range in a {} expression."; case regex_constants::error_range: - return "error_range"; + return "The expression contained an invalid character range, " + "such as [b-a] in most encodings."; case regex_constants::error_space: - return "error_space"; + return "There was insufficient memory to convert the expression into " + "a finite state machine."; case regex_constants::error_badrepeat: - return "error_badrepeat"; + return "One of *?+{ was not preceded by a valid regular expression."; case regex_constants::error_complexity: - return "error_complexity"; + return "The complexity of an attempted match against a regular " + "expression exceeded a pre-set level."; case regex_constants::error_stack: - return "error_stack"; + return "There was insufficient memory to determine whether the regular " + "expression could match the specified character sequence."; + default: + break; } - return "unknown error_type"; + return "Unknown error type"; } regex_error::regex_error(regex_constants::error_type ecode) diff --git a/libcxx/test/re/re.badexp/regex_error.pass.cpp b/libcxx/test/re/re.badexp/regex_error.pass.cpp index 6145b8eae65b..849e372e499b 100644 --- a/libcxx/test/re/re.badexp/regex_error.pass.cpp +++ b/libcxx/test/re/re.badexp/regex_error.pass.cpp @@ -26,66 +26,71 @@ int main() { std::regex_error e(std::regex_constants::error_collate); assert(e.code() == std::regex_constants::error_collate); - assert(e.what() == std::string("error_collate")); + assert(e.what() == std::string("The expression contained an invalid collating element name.")); } { std::regex_error e(std::regex_constants::error_ctype); assert(e.code() == std::regex_constants::error_ctype); - assert(e.what() == std::string("error_ctype")); + assert(e.what() == std::string("The expression contained an invalid character class name.")); } { std::regex_error e(std::regex_constants::error_escape); assert(e.code() == std::regex_constants::error_escape); - assert(e.what() == std::string("error_escape")); + assert(e.what() == std::string("The expression contained an invalid escaped character, or a " + "trailing escape.")); } { std::regex_error e(std::regex_constants::error_backref); assert(e.code() == std::regex_constants::error_backref); - assert(e.what() == std::string("error_backref")); + assert(e.what() == std::string("The expression contained an invalid back reference.")); } { std::regex_error e(std::regex_constants::error_brack); assert(e.code() == std::regex_constants::error_brack); - assert(e.what() == std::string("error_brack")); + assert(e.what() == std::string("The expression contained mismatched [ and ].")); } { std::regex_error e(std::regex_constants::error_paren); assert(e.code() == std::regex_constants::error_paren); - assert(e.what() == std::string("error_paren")); + assert(e.what() == std::string("The expression contained mismatched ( and ).")); } { std::regex_error e(std::regex_constants::error_brace); assert(e.code() == std::regex_constants::error_brace); - assert(e.what() == std::string("error_brace")); + assert(e.what() == std::string("The expression contained mismatched { and }.")); } { std::regex_error e(std::regex_constants::error_badbrace); assert(e.code() == std::regex_constants::error_badbrace); - assert(e.what() == std::string("error_badbrace")); + assert(e.what() == std::string("The expression contained an invalid range in a {} expression.")); } { std::regex_error e(std::regex_constants::error_range); assert(e.code() == std::regex_constants::error_range); - assert(e.what() == std::string("error_range")); + assert(e.what() == std::string("The expression contained an invalid character range, " + "such as [b-a] in most encodings.")); } { std::regex_error e(std::regex_constants::error_space); assert(e.code() == std::regex_constants::error_space); - assert(e.what() == std::string("error_space")); + assert(e.what() == std::string("There was insufficient memory to convert the expression into " + "a finite state machine.")); } { std::regex_error e(std::regex_constants::error_badrepeat); assert(e.code() == std::regex_constants::error_badrepeat); - assert(e.what() == std::string("error_badrepeat")); + assert(e.what() == std::string("One of *?+{ was not preceded by a valid regular expression.")); } { std::regex_error e(std::regex_constants::error_complexity); assert(e.code() == std::regex_constants::error_complexity); - assert(e.what() == std::string("error_complexity")); + assert(e.what() == std::string("The complexity of an attempted match against a regular " + "expression exceeded a pre-set level.")); } { std::regex_error e(std::regex_constants::error_stack); assert(e.code() == std::regex_constants::error_stack); - assert(e.what() == std::string("error_stack")); + assert(e.what() == std::string("There was insufficient memory to determine whether the regular " + "expression could match the specified character sequence.")); } } diff --git a/libcxx/test/re/re.regex/re.regex.const/constants.pass.cpp b/libcxx/test/re/re.regex/re.regex.const/constants.pass.cpp new file mode 100644 index 000000000000..634cb2ecc6e3 --- /dev/null +++ b/libcxx/test/re/re.regex/re.regex.const/constants.pass.cpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template > +// class basic_regex +// { +// public: +// // constants: +// static constexpr regex_constants::syntax_option_type icase = regex_constants::icase; +// static constexpr regex_constants::syntax_option_type nosubs = regex_constants::nosubs; +// static constexpr regex_constants::syntax_option_type optimize = regex_constants::optimize; +// static constexpr regex_constants::syntax_option_type collate = regex_constants::collate; +// static constexpr regex_constants::syntax_option_type ECMAScript = regex_constants::ECMAScript; +// static constexpr regex_constants::syntax_option_type basic = regex_constants::basic; +// static constexpr regex_constants::syntax_option_type extended = regex_constants::extended; +// static constexpr regex_constants::syntax_option_type awk = regex_constants::awk; +// static constexpr regex_constants::syntax_option_type grep = regex_constants::grep; +// static constexpr regex_constants::syntax_option_type egrep = regex_constants::egrep; + +#include +#include + +template +void +test() +{ + typedef std::basic_regex BR; + static_assert((BR::icase == std::regex_constants::icase), ""); + static_assert((BR::nosubs == std::regex_constants::nosubs), ""); + static_assert((BR::optimize == std::regex_constants::optimize), ""); + static_assert((BR::collate == std::regex_constants::collate), ""); + static_assert((BR::ECMAScript == std::regex_constants::ECMAScript), ""); + static_assert((BR::basic == std::regex_constants::basic), ""); + static_assert((BR::extended == std::regex_constants::extended), ""); + static_assert((BR::awk == std::regex_constants::awk), ""); + static_assert((BR::grep == std::regex_constants::grep), ""); + static_assert((BR::egrep == std::regex_constants::egrep), ""); +} + +int main() +{ + test(); + test(); +} diff --git a/libcxx/test/re/re.regex/re.regex.construct/default.pass.cpp b/libcxx/test/re/re.regex/re.regex.construct/default.pass.cpp new file mode 100644 index 000000000000..44930f6d7370 --- /dev/null +++ b/libcxx/test/re/re.regex/re.regex.construct/default.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template > class basic_regex; + +// basic_regex(); + +#include +#include + +template +void +test() +{ + std::basic_regex r; + assert(r.flags() == 0); + assert(r.mark_count() == 0); +} + +int main() +{ + test(); + test(); +} diff --git a/libcxx/test/re/re.regex/types.pass.cpp b/libcxx/test/re/re.regex/types.pass.cpp new file mode 100644 index 000000000000..4d90737eddd7 --- /dev/null +++ b/libcxx/test/re/re.regex/types.pass.cpp @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template > +// class basic_regex +// { +// public: +// // types: +// typedef charT value_type; +// typedef regex_constants::syntax_option_type flag_type; +// typedef typename traits::locale_type locale_type; + +#include +#include + +int main() +{ + static_assert((std::is_same::value_type, char>::value), ""); + static_assert((std::is_same::flag_type, + std::regex_constants::syntax_option_type>::value), ""); + static_assert((std::is_same::locale_type, std::locale>::value), ""); + + static_assert((std::is_same::value_type, wchar_t>::value), ""); + static_assert((std::is_same::flag_type, + std::regex_constants::syntax_option_type>::value), ""); + static_assert((std::is_same::locale_type, std::locale>::value), ""); +} diff --git a/libcxx/www/libcxx_by_chapter.pdf b/libcxx/www/libcxx_by_chapter.pdf index 1ba10edc8d6718c63eb30ea4c74cc9d74aa7f02c..2bc5956eeaa0a1dee84609ee9c083bf1be7a6602 100644 GIT binary patch literal 34895 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 R15?P!j!aH2A}fmge*rcZa7+LI literal 32552 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