Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:39:08

0001 // -- operator_actions.hpp - Boost Lambda Library ----------------------
0002 
0003 // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
0004 //
0005 // Distributed under the Boost Software License, Version 1.0. (See
0006 // accompanying file LICENSE_1_0.txt or copy at
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 
0009 // For more information, see http://lambda.cs.utu.fi 
0010 
0011 #ifndef BOOST_LAMBDA_OPERATOR_ACTIONS_HPP
0012 #define BOOST_LAMBDA_OPERATOR_ACTIONS_HPP
0013 
0014 namespace boost { 
0015 namespace lambda {
0016 
0017 
0018 // -- artihmetic ----------------------
0019 
0020 class plus_action {};
0021 class minus_action {};
0022 class multiply_action {};
0023 class divide_action {};
0024 class remainder_action {};
0025 
0026 // -- bitwise  -------------------
0027 
0028 class leftshift_action {};
0029 class rightshift_action {};
0030 class xor_action {};
0031 
0032 
0033 // -- bitwise/logical -------------------
0034 
0035 class and_action {};
0036 class or_action {};
0037 class not_action {};
0038 
0039 // -- relational -------------------------
0040 
0041 class less_action {};
0042 class greater_action {};
0043 class lessorequal_action {};
0044 class greaterorequal_action {};
0045 class equal_action {};
0046 class notequal_action {};
0047 
0048 // -- increment/decrement ------------------------------
0049 
0050 class increment_action {};
0051 class decrement_action {};
0052 
0053 // -- void return ------------------------------
0054 
0055 // -- other  ------------------------------
0056 
0057 class addressof_action {};
0058   // class comma_action {}; // defined in actions.hpp
0059 class contentsof_action {};
0060 // class member_pointer_action {}; (defined in member_ptr.hpp)
0061 
0062 
0063 // -- actioun group templates --------------------
0064 
0065 template <class Action> class arithmetic_action;
0066 template <class Action> class bitwise_action;
0067 template <class Action> class logical_action;
0068 template <class Action> class relational_action;
0069 template <class Action> class arithmetic_assignment_action;
0070 template <class Action> class bitwise_assignment_action;
0071 template <class Action> class unary_arithmetic_action;
0072 template <class Action> class pre_increment_decrement_action;
0073 template <class Action> class post_increment_decrement_action;
0074 
0075 // ---------------------------------------------------------
0076 
0077   // actions, for which the existence of protect is checked in return type 
0078   // deduction.
0079 
0080 template <class Act> struct is_protectable<arithmetic_action<Act> > {
0081   BOOST_STATIC_CONSTANT(bool, value = true);
0082 };
0083 template <class Act> struct is_protectable<bitwise_action<Act> > {
0084   BOOST_STATIC_CONSTANT(bool, value = true);
0085 };
0086 template <class Act> struct is_protectable<logical_action<Act> > {
0087   BOOST_STATIC_CONSTANT(bool, value = true);
0088 };
0089 template <class Act> struct is_protectable<relational_action<Act> > {
0090   BOOST_STATIC_CONSTANT(bool, value = true);
0091 };
0092 template <class Act> 
0093 struct is_protectable<arithmetic_assignment_action<Act> > {
0094   BOOST_STATIC_CONSTANT(bool, value = true);
0095 };
0096 template <class Act> struct is_protectable<bitwise_assignment_action<Act> > {
0097   BOOST_STATIC_CONSTANT(bool, value = true);
0098 };
0099 template <class Act> struct is_protectable<unary_arithmetic_action<Act> > {
0100   BOOST_STATIC_CONSTANT(bool, value = true);
0101 };
0102 template <class Act> 
0103 struct is_protectable<pre_increment_decrement_action<Act> > {
0104   BOOST_STATIC_CONSTANT(bool, value = true);
0105 };
0106 template <class Act> struct 
0107 is_protectable<post_increment_decrement_action<Act> > {
0108   BOOST_STATIC_CONSTANT(bool, value = true);
0109 };
0110 
0111 template <> struct is_protectable<other_action<addressof_action> > {
0112   BOOST_STATIC_CONSTANT(bool, value = true);
0113 };
0114 template <> struct is_protectable<other_action<contentsof_action> > {
0115   BOOST_STATIC_CONSTANT(bool, value = true);
0116 };
0117 
0118 template<> struct is_protectable<other_action<subscript_action> > {
0119   BOOST_STATIC_CONSTANT(bool, value = true);
0120 };
0121 template<> struct is_protectable<other_action<assignment_action> > {
0122   BOOST_STATIC_CONSTANT(bool, value = true);
0123 };
0124 
0125 // NOTE: comma action is also protectable, but the specialization is
0126   // in actions.hpp
0127 
0128 
0129 } // namespace lambda 
0130 } // namespace boost
0131 
0132 #endif
0133 
0134 
0135 
0136 
0137 
0138 
0139