]> git.lyx.org Git - features.git/blob - 3rdparty/boost/boost/regex/v4/protected_call.hpp
Wininstaller2: refresh PATH before running configure
[features.git] / 3rdparty / boost / boost / regex / v4 / protected_call.hpp
1 /*
2  *
3  * Copyright (c) 2004
4  * John Maddock
5  *
6  * Use, modification and distribution are subject to the 
7  * Boost Software License, Version 1.0. (See accompanying file 
8  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9  *
10  */
11
12  /*
13   *   LOCATION:    see http://www.boost.org for most recent version.
14   *   FILE         basic_regex_creator.cpp
15   *   VERSION      see <boost/version.hpp>
16   *   DESCRIPTION: Declares template class basic_regex_creator which fills in
17   *                the data members of a regex_data object.
18   */
19
20 #ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
21 #define BOOST_REGEX_V4_PROTECTED_CALL_HPP
22
23 #ifdef BOOST_MSVC
24 #pragma warning(push)
25 #pragma warning(disable: 4103)
26 #endif
27 #ifdef BOOST_HAS_ABI_HEADERS
28 #  include BOOST_ABI_PREFIX
29 #endif
30 #ifdef BOOST_MSVC
31 #pragma warning(pop)
32 #endif
33
34 namespace boost{
35 namespace BOOST_REGEX_DETAIL_NS{
36
37 class BOOST_REGEX_DECL abstract_protected_call
38 {
39 public:
40    bool BOOST_REGEX_CALL execute()const;
41    // this stops gcc-4 from complaining:
42    virtual ~abstract_protected_call(){}
43 private:
44    virtual bool call()const = 0;
45 };
46
47 template <class T>
48 class concrete_protected_call
49    : public abstract_protected_call
50 {
51 public:
52    typedef bool (T::*proc_type)();
53    concrete_protected_call(T* o, proc_type p)
54       : obj(o), proc(p) {}
55 private:
56    virtual bool call()const;
57    T* obj;
58    proc_type proc;
59 };
60
61 template <class T>
62 bool concrete_protected_call<T>::call()const
63 {
64    return (obj->*proc)();
65 }
66
67 }
68 } // namespace boost
69
70 #ifdef BOOST_MSVC
71 #pragma warning(push)
72 #pragma warning(disable: 4103)
73 #endif
74 #ifdef BOOST_HAS_ABI_HEADERS
75 #  include BOOST_ABI_SUFFIX
76 #endif
77 #ifdef BOOST_MSVC
78 #pragma warning(pop)
79 #endif
80
81 #endif