158 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			158 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | /////////////////////////////////////////////////////////////////////////////// | ||
|  | /// \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 tagns_ { 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 |