imgtools/imglib/boostlibrary/boost/regex/v4/protected_call.hpp
changeset 600 6d08f4a05d93
equal deleted inserted replaced
599:fa7a3cc6effd 600:6d08f4a05d93
       
     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 re_detail{
       
    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