You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
81 lines
1.6 KiB
81 lines
1.6 KiB
/* |
|
* |
|
* Copyright (c) 2004 |
|
* John Maddock |
|
* |
|
* Use, modification and distribution are subject to the |
|
* Boost Software License, Version 1.0. (See accompanying file |
|
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
|
* |
|
*/ |
|
|
|
/* |
|
* LOCATION: see http://www.boost.org for most recent version. |
|
* FILE basic_regex_creator.cpp |
|
* VERSION see <boost/version.hpp> |
|
* DESCRIPTION: Declares template class basic_regex_creator which fills in |
|
* the data members of a regex_data object. |
|
*/ |
|
|
|
#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP |
|
#define BOOST_REGEX_V4_PROTECTED_CALL_HPP |
|
|
|
#ifdef BOOST_MSVC |
|
#pragma warning(push) |
|
#pragma warning(disable: 4103) |
|
#endif |
|
#ifdef BOOST_HAS_ABI_HEADERS |
|
# include BOOST_ABI_PREFIX |
|
#endif |
|
#ifdef BOOST_MSVC |
|
#pragma warning(pop) |
|
#endif |
|
|
|
namespace boost{ |
|
namespace re_detail{ |
|
|
|
class BOOST_REGEX_DECL abstract_protected_call |
|
{ |
|
public: |
|
bool BOOST_REGEX_CALL execute()const; |
|
// this stops gcc-4 from complaining: |
|
virtual ~abstract_protected_call(){} |
|
private: |
|
virtual bool call()const = 0; |
|
}; |
|
|
|
template <class T> |
|
class concrete_protected_call |
|
: public abstract_protected_call |
|
{ |
|
public: |
|
typedef bool (T::*proc_type)(); |
|
concrete_protected_call(T* o, proc_type p) |
|
: obj(o), proc(p) {} |
|
private: |
|
virtual bool call()const; |
|
T* obj; |
|
proc_type proc; |
|
}; |
|
|
|
template <class T> |
|
bool concrete_protected_call<T>::call()const |
|
{ |
|
return (obj->*proc)(); |
|
} |
|
|
|
} |
|
} // namespace boost |
|
|
|
#ifdef BOOST_MSVC |
|
#pragma warning(push) |
|
#pragma warning(disable: 4103) |
|
#endif |
|
#ifdef BOOST_HAS_ABI_HEADERS |
|
# include BOOST_ABI_SUFFIX |
|
#endif |
|
#ifdef BOOST_MSVC |
|
#pragma warning(pop) |
|
#endif |
|
|
|
#endif
|
|
|