82 lines
1.7 KiB
C++
82 lines
1.7 KiB
C++
|
/*
|
||
|
*
|
||
|
* 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 BOOST_REGEX_DETAIL_NS{
|
||
|
|
||
|
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
|