| /////////////////////////////////////////////////////////////////////////////// |
| /// \file tags.hpp |
| /// Contains the tags for all the overloadable operators in C++ |
| // |
| // Copyright 2008 Eric Niebler. Distributed under 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) |
| |
| #ifndef BOOST_PROTO_TAGS_HPP_EAN_04_01_2005 |
| #define BOOST_PROTO_TAGS_HPP_EAN_04_01_2005 |
| |
| #include <boost/proto/proto_fwd.hpp> |
| |
| namespace boost { namespace proto { namespace tag |
| { |
| |
| /// Tag type for terminals; aka, leaves in the expression tree. |
| struct terminal {}; |
| |
| /// Tag type for the unary + operator. |
| struct unary_plus {}; |
| |
| /// Tag type for the unary - operator. |
| struct negate {}; |
| |
| /// Tag type for the unary * operator. |
| struct dereference {}; |
| |
| /// Tag type for the unary ~ operator. |
| struct complement {}; |
| |
| /// Tag type for the unary & operator. |
| struct address_of {}; |
| |
| /// Tag type for the unary ! operator. |
| struct logical_not {}; |
| |
| /// Tag type for the unary prefix ++ operator. |
| struct pre_inc {}; |
| |
| /// Tag type for the unary prefix -- operator. |
| struct pre_dec {}; |
| |
| /// Tag type for the unary postfix ++ operator. |
| struct post_inc {}; |
| |
| /// Tag type for the unary postfix -- operator. |
| struct post_dec {}; |
| |
| /// Tag type for the binary \<\< operator. |
| struct shift_left {}; |
| |
| /// Tag type for the binary \>\> operator. |
| struct shift_right {}; |
| |
| /// Tag type for the binary * operator. |
| struct multiplies {}; |
| |
| /// Tag type for the binary / operator. |
| struct divides {}; |
| |
| /// Tag type for the binary % operator. |
| struct modulus {}; |
| |
| /// Tag type for the binary + operator. |
| struct plus {}; |
| |
| /// Tag type for the binary - operator. |
| struct minus {}; |
| |
| /// Tag type for the binary \< operator. |
| struct less {}; |
| |
| /// Tag type for the binary \> operator. |
| struct greater {}; |
| |
| /// Tag type for the binary \<= operator. |
| struct less_equal {}; |
| |
| /// Tag type for the binary \>= operator. |
| struct greater_equal {}; |
| |
| /// Tag type for the binary == operator. |
| struct equal_to {}; |
| |
| /// Tag type for the binary != operator. |
| struct not_equal_to {}; |
| |
| /// Tag type for the binary || operator. |
| struct logical_or {}; |
| |
| /// Tag type for the binary && operator. |
| struct logical_and {}; |
| |
| /// Tag type for the binary & operator. |
| struct bitwise_and {}; |
| |
| /// Tag type for the binary | operator. |
| struct bitwise_or {}; |
| |
| /// Tag type for the binary ^ operator. |
| struct bitwise_xor {}; |
| |
| /// Tag type for the binary , operator. |
| struct comma {}; |
| |
| /// Tag type for the binary ->* operator. |
| struct mem_ptr {}; |
| |
| /// Tag type for the binary = operator. |
| struct assign {}; |
| |
| /// Tag type for the binary \<\<= operator. |
| struct shift_left_assign {}; |
| |
| /// Tag type for the binary \>\>= operator. |
| struct shift_right_assign {}; |
| |
| /// Tag type for the binary *= operator. |
| struct multiplies_assign {}; |
| |
| /// Tag type for the binary /= operator. |
| struct divides_assign {}; |
| |
| /// Tag type for the binary %= operator. |
| struct modulus_assign {}; |
| |
| /// Tag type for the binary += operator. |
| struct plus_assign {}; |
| |
| /// Tag type for the binary -= operator. |
| struct minus_assign {}; |
| |
| /// Tag type for the binary &= operator. |
| struct bitwise_and_assign {}; |
| |
| /// Tag type for the binary |= operator. |
| struct bitwise_or_assign {}; |
| |
| /// Tag type for the binary ^= operator. |
| struct bitwise_xor_assign {}; |
| |
| /// Tag type for the binary subscript operator. |
| struct subscript {}; |
| |
| /// Tag type for the binary virtual data members. |
| struct member {}; |
| |
| /// Tag type for the ternary ?: conditional operator. |
| struct if_else_ {}; |
| |
| /// Tag type for the n-ary function call operator. |
| struct function {}; |
| |
| }}} |
| |
| #endif |