diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2024-03-06 10:24:46 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2024-03-06 10:24:46 +0100 |
commit | 372a0e99c2f61543d9e14d9933b59d9d1f4cb26e (patch) | |
tree | bbadf39aed0610c8f8f7b41fefff47773b8ac205 /libcutl/cutl/re | |
parent | 23d41842168ac1a1580111b9c5c73500ceee3d57 (diff) | |
parent | 4538829ab86b5a1cd4e845e7eab165029c9d6d46 (diff) |
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'libcutl/cutl/re')
-rw-r--r-- | libcutl/cutl/re/re.cxx | 223 | ||||
-rw-r--r-- | libcutl/cutl/re/re.txx | 69 |
2 files changed, 0 insertions, 292 deletions
diff --git a/libcutl/cutl/re/re.cxx b/libcutl/cutl/re/re.cxx deleted file mode 100644 index 3b132ab..0000000 --- a/libcutl/cutl/re/re.cxx +++ /dev/null @@ -1,223 +0,0 @@ -// file : cutl/re/re.cxx -// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC -// license : MIT; see accompanying LICENSE file - -#include <cutl/re.hxx> - -#include <cutl/details/config.hxx> // LIBCUTL_EXTERNAL_BOOST - -#ifndef LIBCUTL_EXTERNAL_BOOST -# include <cutl/details/boost/tr1/regex.hpp> -#else -# include <boost/tr1/regex.hpp> -#endif - -using namespace std; - -namespace cutl -{ - namespace re - { - // - // format_base - // - - format_base:: - ~format_base () throw () - { - } - - char const* format_base:: - what () const throw () - { - return description_.c_str (); - } - - // - // basic_regex - // - template <typename C> - struct basic_regex<C>::impl - { - typedef basic_string<C> string_type; - typedef tr1::basic_regex<C> regex_type; - typedef typename regex_type::flag_type flag_type; - - impl () {} - impl (regex_type const& r): r (r) {} - impl (string_type const& s, bool icase) - { - flag_type f (tr1::regex_constants::ECMAScript); - - if (icase) - f |= tr1::regex_constants::icase; - - r.assign (s, f); - } - - regex_type r; - }; - - template <> - basic_regex<char>:: - ~basic_regex () - { - delete impl_; - } - - template <> - basic_regex<wchar_t>:: - ~basic_regex () - { - delete impl_; - } - - template <> - basic_regex<char>:: - basic_regex (basic_regex const& r) - : str_ (r.str_), impl_ (new impl (r.impl_->r)) - { - } - - template <> - basic_regex<wchar_t>:: - basic_regex (basic_regex const& r) - : str_ (r.str_), impl_ (new impl (r.impl_->r)) - { - } - - template <> - basic_regex<char>& basic_regex<char>:: - operator= (basic_regex const& r) - { - string_type tmp (r.str_); - impl_->r = r.impl_->r; - str_.swap (tmp); - return *this; - } - - template <> - basic_regex<wchar_t>& basic_regex<wchar_t>:: - operator= (basic_regex const& r) - { - string_type tmp (r.str_); - impl_->r = r.impl_->r; - str_.swap (tmp); - return *this; - } - - template <> - void basic_regex<char>:: - init (string_type const* s, bool icase) - { - string_type tmp (s == 0 ? string_type () : *s); - - try - { - if (impl_ == 0) - impl_ = s == 0 ? new impl : new impl (*s, icase); - else - { - impl::flag_type f (tr1::regex_constants::ECMAScript); - - if (icase) - f |= tr1::regex_constants::icase; - - impl_->r.assign (*s, f); - } - } - catch (tr1::regex_error const& e) - { - throw basic_format<char> (s == 0 ? "" : *s, e.what ()); - } - - str_.swap (tmp); - } - - template <> - void basic_regex<wchar_t>:: - init (string_type const* s, bool icase) - { - string_type tmp (s == 0 ? string_type () : *s); - - try - { - if (impl_ == 0) - impl_ = s == 0 ? new impl : new impl (*s, icase); - else - { - impl::flag_type f (tr1::regex_constants::ECMAScript); - - if (icase) - f |= tr1::regex_constants::icase; - - impl_->r.assign (*s, f); - } - } - catch (tr1::regex_error const& e) - { - throw basic_format<wchar_t> (s == 0 ? L"" : *s, e.what ()); - } - - str_.swap (tmp); - } - - template <> - bool basic_regex<char>:: - match (string_type const& s) const - { - return tr1::regex_match (s, impl_->r); - } - - template <> - bool basic_regex<wchar_t>:: - match (string_type const& s) const - { - return tr1::regex_match (s, impl_->r); - } - - template <> - bool basic_regex<char>:: - search (string_type const& s) const - { - return tr1::regex_search (s, impl_->r); - } - - template <> - bool basic_regex<wchar_t>:: - search (string_type const& s) const - { - return tr1::regex_search (s, impl_->r); - } - - template <> - string basic_regex<char>:: - replace (string_type const& s, - string_type const& sub, - bool first_only) const - { - tr1::regex_constants::match_flag_type f ( - tr1::regex_constants::format_default); - - if (first_only) - f |= tr1::regex_constants::format_first_only; - - return tr1::regex_replace (s, impl_->r, sub, f); - } - - template <> - wstring basic_regex<wchar_t>:: - replace (string_type const& s, - string_type const& sub, - bool first_only) const - { - tr1::regex_constants::match_flag_type f ( - tr1::regex_constants::format_default); - - if (first_only) - f |= tr1::regex_constants::format_first_only; - - return tr1::regex_replace (s, impl_->r, sub, f); - } - } -} diff --git a/libcutl/cutl/re/re.txx b/libcutl/cutl/re/re.txx deleted file mode 100644 index 174e0d4..0000000 --- a/libcutl/cutl/re/re.txx +++ /dev/null @@ -1,69 +0,0 @@ -// file : cutl/re/re.txx -// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC -// license : MIT; see accompanying LICENSE file - -namespace cutl -{ - namespace re - { - // - // basic_regexsub - // - template <typename C> - void basic_regexsub<C>:: - init (string_type const& s) - { - string_type r; - typename string_type::size_type p (parse (s, 0, r)); - regex_ = r; - p = parse (s, p, sub_); - if (p + 1 < s.size ()) - throw basic_format<C> (s, "junk after third delimiter"); - } - - // - // parse() - // - template <typename C> - typename std::basic_string<C>::size_type - parse (std::basic_string<C> const& s, - typename std::basic_string<C>::size_type p, - std::basic_string<C>& r) - { - r.clear (); - typename std::basic_string<C>::size_type n (s.size ()); - - if (p >= n) - throw basic_format<C> (s, "empty expression"); - - char d (s[p++]); - - for (; p < n; ++p) - { - if (s[p] == d) - break; - - if (s[p] == '\\') - { - if (++p < n) - { - // Pass the escape sequence through unless it is the delimiter. - // - if (s[p] != d) - r += '\\'; - - r += s[p]; - } - // else {We ran out of stuff before finding the delimiter.} - } - else - r += s[p]; - } - - if (p == n) - throw basic_format<C> (s, "missing closing delimiter"); - - return p; - } - } -} |