00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
00033
00034
00035 #ifndef _XST_UNARY_ADAPTOR_H_INCLUDED_
00036 #define _XST_UNARY_ADAPTOR_H_INCLUDED_
00037
00038 namespace cttl_impl {
00039
00040
00041
00056 template< typename ExprT, typename PolicyAdaptorT >
00057 class xst_unary_adaptor : public xtl_op_base_unary< ExprT > {
00058
00059 public:
00060 enum {
00062 primitive_id_ = primitive_id_unary_adaptor,
00063
00065 operator_id_ = PolicyAdaptorT::operator_id_,
00066
00068 capacity_ = ExprT::capacity_
00069 };
00070
00071
00073 typedef typename xst_unary_operator_traits<
00074 typename ExprT::value_T,
00075 typename ExprT::dereferenced_value_T,
00076 operator_id_
00077 >::value_type value_T;
00078
00080 typedef value_T value_type;
00081
00083 typedef typename ExprT::dereferenced_value_T dereferenced_value_T;
00084
00086 xst_unary_adaptor( ExprT const& expr_ )
00087 : xtl_op_base_unary< ExprT >( expr_ )
00088 {
00089 }
00090
00092 xst_unary_adaptor( xst_unary_adaptor< ExprT, PolicyAdaptorT > const& other_ )
00093 : xtl_op_base_unary< ExprT >( other_.m_expr )
00094 {
00095 }
00096
00098 void evaluate()
00099 {
00100 CTTL_TRACE_DEPOSIT_JUSTIFY();
00101 CTTL_TRACE_DEPOSIT_DELAYED_CHAR( '\n' );
00102 PolicyAdaptorT::top( this->m_expr );
00103 }
00104
00124 template< typename UniverseT >
00125 size_t match( UniverseT& edge_ )
00126 {
00127 CTTL_TRACE_LEVEL_MATCH( 'u' );
00128 CTTL_TRACE_DEPOSIT_JUSTIFY();
00129 CTTL_TRACE_DEPOSIT_DELAYED_CHAR( '\n' );
00130 return PolicyAdaptorT::match( this->m_expr, edge_ );
00131 }
00132
00134 value_T top() const
00135 {
00136 return PolicyAdaptorT::top( this->m_expr );
00137 }
00138
00140 template< typename SubscriptLambdaT >
00141 value_T top( SubscriptLambdaT ) const
00142 {
00143 return top();
00144 }
00145
00147 value_T& lvalue_ref()
00148 {
00149 return PolicyAdaptorT::lvalue_ref( this->m_expr );
00150 }
00151
00153 dereferenced_value_T&
00154 dereferenced_value()
00155 {
00156 return PolicyAdaptorT::dereferenced_lvalue( this->m_expr );
00157 }
00158
00159
00161 void prefix_side_effects()
00162 {
00163 PolicyAdaptorT::prefix_side_effects( this->m_expr );
00164 }
00165
00167 void postfix_side_effects()
00168 {
00169 PolicyAdaptorT::postfix_side_effects( this->m_expr );
00170 }
00171
00173
00175
00176
00177
00178
00179
00180
00181
00182
00183
00185
00187
00189
00191
00206 template< typename RhsValueT >
00207 xst_binary_adaptor<
00208 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00209 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00210 xst_assignment_policy<
00211 1,
00212 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00213 primitive_id_unary_adaptor
00214 >
00215 >
00216 operator= ( RhsValueT const& value_ )
00217 {
00218 typedef xst_binary_adaptor<
00219 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00220 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00221 xst_assignment_policy<
00222 1,
00223 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00224 primitive_id_unary_adaptor
00225 >
00226 > xst_adaptor_T;
00227
00228 return xst_adaptor_T(
00229 *this,
00230 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
00231 );
00232 }
00233
00234
00249 template< typename RhsValueT >
00250 xst_binary_adaptor<
00251 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00252 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
00253 xst_assignment_policy<
00254 1,
00255 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00256 primitive_id_unary_adaptor
00257 >
00258 >
00259 operator= ( RhsValueT* pvalue_ )
00260 {
00261 typedef xst_binary_adaptor<
00262 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00263 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
00264 xst_assignment_policy<
00265 1,
00266 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00267 primitive_id_unary_adaptor
00268 >
00269 > xst_adaptor_T;
00270
00271 return xst_adaptor_T(
00272 *this,
00273 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
00274 );
00275 }
00276
00278
00280
00295 template< typename LambdaT >
00296 xst_binary_adaptor<
00297 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00298 xst_lambda_wrap< typename LambdaT::reference_T >,
00299 xst_assignment_policy<
00300 LambdaT::capacity_,
00301 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00302 primitive_id_unary_adaptor
00303 >
00304 >
00305 operator= ( xst_lambda_wrap< LambdaT > const& lambda_ )
00306 {
00307 typedef xst_binary_adaptor<
00308 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00309 xst_lambda_wrap< typename LambdaT::reference_T >,
00310 xst_assignment_policy<
00311 LambdaT::capacity_,
00312 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00313 primitive_id_unary_adaptor
00314 >
00315 > xst_adaptor_T;
00316
00317 return xst_adaptor_T( *this, lambda_.make_reference() );
00318 }
00319
00320
00336 template< typename LambdaT >
00337 xst_binary_adaptor<
00338 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00339 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
00340 xst_assignment_policy<
00341 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
00342 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00343 primitive_id_unary_adaptor
00344 >
00345 >
00346 operator= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
00347 {
00348 typedef xst_binary_adaptor<
00349 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00350 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
00351 xst_assignment_policy<
00352 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
00353 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00354 primitive_id_unary_adaptor
00355 >
00356 > xst_adaptor_T;
00357
00358 return xst_adaptor_T( *this, lambda_ );
00359 }
00360
00361
00381 template< typename LambdaT, typename OtherPolicyAdaptorT >
00382 xst_binary_adaptor<
00383 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00384 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
00385 xst_assignment_policy<
00386 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
00387 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00388 primitive_id_unary_adaptor
00389 >
00390 >
00391 operator= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
00392 {
00393 typedef xst_binary_adaptor<
00394 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00395 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
00396 xst_assignment_policy<
00397 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
00398 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00399 primitive_id_unary_adaptor
00400 >
00401 > xst_adaptor_T;
00402
00403 return xst_adaptor_T( *this, lambda_ );
00404 }
00405
00406
00430 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
00431 xst_binary_adaptor<
00432 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00433 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
00434 xst_assignment_policy<
00435 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
00436 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00437 primitive_id_unary_adaptor
00438 >
00439 >
00440 operator= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
00441 {
00442 typedef xst_binary_adaptor<
00443 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00444 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
00445 xst_assignment_policy<
00446 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
00447 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00448 primitive_id_unary_adaptor
00449 >
00450 > xst_adaptor_T;
00451
00452 return xst_adaptor_T( *this, lambda_ );
00453 }
00454
00456
00458
00474 template< typename StackValueT >
00475 xst_binary_adaptor<
00476 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00477 xst_lambda_wrap< xst_scalar< StackValueT > >,
00478 xst_assignment_policy<
00479 1,
00480 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00481 primitive_id_unary_adaptor
00482 >
00483 >
00484 operator= ( std::stack< StackValueT > const& stack_ )
00485 {
00486 typedef xst_binary_adaptor<
00487 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00488 xst_lambda_wrap< xst_scalar< StackValueT > >,
00489 xst_assignment_policy<
00490 1,
00491 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00492 primitive_id_unary_adaptor
00493 >
00494 > xst_adaptor_T;
00495
00496 assert( !stack_.empty() );
00497 return xst_adaptor_T(
00498 *this,
00499 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
00500 );
00501 }
00502
00503
00519 template< typename StackValueT >
00520 xst_binary_adaptor<
00521 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00522 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
00523 xst_assignment_policy<
00524 1,
00525 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00526 primitive_id_unary_adaptor
00527 >
00528 >
00529 operator= ( std::stack< StackValueT >* pstack_ )
00530 {
00531 typedef xst_binary_adaptor<
00532 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00533 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
00534 xst_assignment_policy<
00535 1,
00536 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00537 primitive_id_unary_adaptor
00538 >
00539 > xst_adaptor_T;
00540
00541 return xst_adaptor_T(
00542 *this,
00543 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
00544 );
00545 }
00546
00548
00550
00551
00553
00555
00557
00559
00574 template< typename RhsValueT >
00575 xst_binary_adaptor<
00576 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00577 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00578 xst_multiplication_assignment_policy<
00579 1,
00580 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00581 primitive_id_unary_adaptor
00582 >
00583 >
00584 operator*= ( RhsValueT const& value_ )
00585 {
00586 typedef xst_binary_adaptor<
00587 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00588 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00589 xst_multiplication_assignment_policy<
00590 1,
00591 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00592 primitive_id_unary_adaptor
00593 >
00594 > xst_adaptor_T;
00595
00596 return xst_adaptor_T(
00597 *this,
00598 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
00599 );
00600 }
00601
00602
00617 template< typename RhsValueT >
00618 xst_binary_adaptor<
00619 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00620 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
00621 xst_multiplication_assignment_policy<
00622 1,
00623 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00624 primitive_id_unary_adaptor
00625 >
00626 >
00627 operator*= ( RhsValueT* pvalue_ )
00628 {
00629 typedef xst_binary_adaptor<
00630 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00631 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
00632 xst_multiplication_assignment_policy<
00633 1,
00634 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00635 primitive_id_unary_adaptor
00636 >
00637 > xst_adaptor_T;
00638
00639 return xst_adaptor_T(
00640 *this,
00641 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
00642 );
00643 }
00644
00646
00648
00663 template< typename LambdaT >
00664 xst_binary_adaptor<
00665 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00666 xst_lambda_wrap< typename LambdaT::reference_T >,
00667 xst_multiplication_assignment_policy<
00668 LambdaT::capacity_,
00669 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00670 primitive_id_unary_adaptor
00671 >
00672 >
00673 operator*= ( xst_lambda_wrap< LambdaT > const& lambda_ )
00674 {
00675 typedef xst_binary_adaptor<
00676 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00677 xst_lambda_wrap< typename LambdaT::reference_T >,
00678 xst_multiplication_assignment_policy<
00679 LambdaT::capacity_,
00680 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00681 primitive_id_unary_adaptor
00682 >
00683 > xst_adaptor_T;
00684
00685 return xst_adaptor_T( *this, lambda_.make_reference() );
00686 }
00687
00688
00704 template< typename LambdaT >
00705 xst_binary_adaptor<
00706 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00707 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
00708 xst_multiplication_assignment_policy<
00709 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
00710 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00711 primitive_id_unary_adaptor
00712 >
00713 >
00714 operator*= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
00715 {
00716 typedef xst_binary_adaptor<
00717 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00718 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
00719 xst_multiplication_assignment_policy<
00720 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
00721 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00722 primitive_id_unary_adaptor
00723 >
00724 > xst_adaptor_T;
00725
00726 return xst_adaptor_T( *this, lambda_ );
00727 }
00728
00729
00749 template< typename LambdaT, typename OtherPolicyAdaptorT >
00750 xst_binary_adaptor<
00751 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00752 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
00753 xst_multiplication_assignment_policy<
00754 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
00755 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00756 primitive_id_unary_adaptor
00757 >
00758 >
00759 operator*= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
00760 {
00761 typedef xst_binary_adaptor<
00762 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00763 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
00764 xst_multiplication_assignment_policy<
00765 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
00766 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00767 primitive_id_unary_adaptor
00768 >
00769 > xst_adaptor_T;
00770
00771 return xst_adaptor_T( *this, lambda_ );
00772 }
00773
00774
00798 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
00799 xst_binary_adaptor<
00800 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00801 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
00802 xst_multiplication_assignment_policy<
00803 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
00804 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00805 primitive_id_unary_adaptor
00806 >
00807 >
00808 operator*= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
00809 {
00810 typedef xst_binary_adaptor<
00811 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00812 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
00813 xst_multiplication_assignment_policy<
00814 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
00815 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00816 primitive_id_unary_adaptor
00817 >
00818 > xst_adaptor_T;
00819
00820 return xst_adaptor_T( *this, lambda_ );
00821 }
00822
00824
00826
00842 template< typename StackValueT >
00843 xst_binary_adaptor<
00844 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00845 xst_lambda_wrap< xst_scalar< StackValueT > >,
00846 xst_multiplication_assignment_policy<
00847 1,
00848 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00849 primitive_id_unary_adaptor
00850 >
00851 >
00852 operator*= ( std::stack< StackValueT > const& stack_ )
00853 {
00854 typedef xst_binary_adaptor<
00855 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00856 xst_lambda_wrap< xst_scalar< StackValueT > >,
00857 xst_multiplication_assignment_policy<
00858 1,
00859 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00860 primitive_id_unary_adaptor
00861 >
00862 > xst_adaptor_T;
00863
00864 assert( !stack_.empty() );
00865 return xst_adaptor_T(
00866 *this,
00867 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
00868 );
00869 }
00870
00871
00887 template< typename StackValueT >
00888 xst_binary_adaptor<
00889 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00890 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
00891 xst_multiplication_assignment_policy<
00892 1,
00893 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00894 primitive_id_unary_adaptor
00895 >
00896 >
00897 operator*= ( std::stack< StackValueT >* pstack_ )
00898 {
00899 typedef xst_binary_adaptor<
00900 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00901 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
00902 xst_multiplication_assignment_policy<
00903 1,
00904 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00905 primitive_id_unary_adaptor
00906 >
00907 > xst_adaptor_T;
00908
00909 return xst_adaptor_T(
00910 *this,
00911 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
00912 );
00913 }
00914
00916
00918
00919
00921
00923
00925
00927
00942 template< typename RhsValueT >
00943 xst_binary_adaptor<
00944 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00945 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00946 xst_division_assignment_policy<
00947 1,
00948 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00949 primitive_id_unary_adaptor
00950 >
00951 >
00952 operator/= ( RhsValueT const& value_ )
00953 {
00954 typedef xst_binary_adaptor<
00955 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00956 xst_lambda_wrap< xst_scalar< RhsValueT > >,
00957 xst_division_assignment_policy<
00958 1,
00959 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00960 primitive_id_unary_adaptor
00961 >
00962 > xst_adaptor_T;
00963
00964 return xst_adaptor_T(
00965 *this,
00966 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
00967 );
00968 }
00969
00970
00985 template< typename RhsValueT >
00986 xst_binary_adaptor<
00987 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00988 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
00989 xst_division_assignment_policy<
00990 1,
00991 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
00992 primitive_id_unary_adaptor
00993 >
00994 >
00995 operator/= ( RhsValueT* pvalue_ )
00996 {
00997 typedef xst_binary_adaptor<
00998 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
00999 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
01000 xst_division_assignment_policy<
01001 1,
01002 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01003 primitive_id_unary_adaptor
01004 >
01005 > xst_adaptor_T;
01006
01007 return xst_adaptor_T(
01008 *this,
01009 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
01010 );
01011 }
01012
01014
01016
01031 template< typename LambdaT >
01032 xst_binary_adaptor<
01033 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01034 xst_lambda_wrap< typename LambdaT::reference_T >,
01035 xst_division_assignment_policy<
01036 LambdaT::capacity_,
01037 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01038 primitive_id_unary_adaptor
01039 >
01040 >
01041 operator/= ( xst_lambda_wrap< LambdaT > const& lambda_ )
01042 {
01043 typedef xst_binary_adaptor<
01044 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01045 xst_lambda_wrap< typename LambdaT::reference_T >,
01046 xst_division_assignment_policy<
01047 LambdaT::capacity_,
01048 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01049 primitive_id_unary_adaptor
01050 >
01051 > xst_adaptor_T;
01052
01053 return xst_adaptor_T( *this, lambda_.make_reference() );
01054 }
01055
01056
01072 template< typename LambdaT >
01073 xst_binary_adaptor<
01074 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01075 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01076 xst_division_assignment_policy<
01077 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01078 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01079 primitive_id_unary_adaptor
01080 >
01081 >
01082 operator/= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
01083 {
01084 typedef xst_binary_adaptor<
01085 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01086 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01087 xst_division_assignment_policy<
01088 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01089 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01090 primitive_id_unary_adaptor
01091 >
01092 > xst_adaptor_T;
01093
01094 return xst_adaptor_T( *this, lambda_ );
01095 }
01096
01097
01117 template< typename LambdaT, typename OtherPolicyAdaptorT >
01118 xst_binary_adaptor<
01119 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01120 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01121 xst_division_assignment_policy<
01122 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01123 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01124 primitive_id_unary_adaptor
01125 >
01126 >
01127 operator/= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
01128 {
01129 typedef xst_binary_adaptor<
01130 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01131 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01132 xst_division_assignment_policy<
01133 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01134 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01135 primitive_id_unary_adaptor
01136 >
01137 > xst_adaptor_T;
01138
01139 return xst_adaptor_T( *this, lambda_ );
01140 }
01141
01142
01166 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
01167 xst_binary_adaptor<
01168 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01169 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01170 xst_division_assignment_policy<
01171 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01172 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01173 primitive_id_unary_adaptor
01174 >
01175 >
01176 operator/= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
01177 {
01178 typedef xst_binary_adaptor<
01179 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01180 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01181 xst_division_assignment_policy<
01182 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01183 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01184 primitive_id_unary_adaptor
01185 >
01186 > xst_adaptor_T;
01187
01188 return xst_adaptor_T( *this, lambda_ );
01189 }
01190
01192
01194
01210 template< typename StackValueT >
01211 xst_binary_adaptor<
01212 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01213 xst_lambda_wrap< xst_scalar< StackValueT > >,
01214 xst_division_assignment_policy<
01215 1,
01216 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01217 primitive_id_unary_adaptor
01218 >
01219 >
01220 operator/= ( std::stack< StackValueT > const& stack_ )
01221 {
01222 typedef xst_binary_adaptor<
01223 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01224 xst_lambda_wrap< xst_scalar< StackValueT > >,
01225 xst_division_assignment_policy<
01226 1,
01227 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01228 primitive_id_unary_adaptor
01229 >
01230 > xst_adaptor_T;
01231
01232 assert( !stack_.empty() );
01233 return xst_adaptor_T(
01234 *this,
01235 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
01236 );
01237 }
01238
01239
01255 template< typename StackValueT >
01256 xst_binary_adaptor<
01257 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01258 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
01259 xst_division_assignment_policy<
01260 1,
01261 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01262 primitive_id_unary_adaptor
01263 >
01264 >
01265 operator/= ( std::stack< StackValueT >* pstack_ )
01266 {
01267 typedef xst_binary_adaptor<
01268 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01269 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
01270 xst_division_assignment_policy<
01271 1,
01272 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01273 primitive_id_unary_adaptor
01274 >
01275 > xst_adaptor_T;
01276
01277 return xst_adaptor_T(
01278 *this,
01279 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
01280 );
01281 }
01282
01284
01286
01287
01289
01291
01293
01295
01310 template< typename RhsValueT >
01311 xst_binary_adaptor<
01312 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01313 xst_lambda_wrap< xst_scalar< RhsValueT > >,
01314 xst_modulus_assignment_policy<
01315 1,
01316 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01317 primitive_id_unary_adaptor
01318 >
01319 >
01320 operator%= ( RhsValueT const& value_ )
01321 {
01322 typedef xst_binary_adaptor<
01323 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01324 xst_lambda_wrap< xst_scalar< RhsValueT > >,
01325 xst_modulus_assignment_policy<
01326 1,
01327 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01328 primitive_id_unary_adaptor
01329 >
01330 > xst_adaptor_T;
01331
01332 return xst_adaptor_T(
01333 *this,
01334 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
01335 );
01336 }
01337
01338
01353 template< typename RhsValueT >
01354 xst_binary_adaptor<
01355 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01356 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
01357 xst_modulus_assignment_policy<
01358 1,
01359 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01360 primitive_id_unary_adaptor
01361 >
01362 >
01363 operator%= ( RhsValueT* pvalue_ )
01364 {
01365 typedef xst_binary_adaptor<
01366 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01367 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
01368 xst_modulus_assignment_policy<
01369 1,
01370 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01371 primitive_id_unary_adaptor
01372 >
01373 > xst_adaptor_T;
01374
01375 return xst_adaptor_T(
01376 *this,
01377 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
01378 );
01379 }
01380
01382
01384
01399 template< typename LambdaT >
01400 xst_binary_adaptor<
01401 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01402 xst_lambda_wrap< typename LambdaT::reference_T >,
01403 xst_modulus_assignment_policy<
01404 LambdaT::capacity_,
01405 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01406 primitive_id_unary_adaptor
01407 >
01408 >
01409 operator%= ( xst_lambda_wrap< LambdaT > const& lambda_ )
01410 {
01411 typedef xst_binary_adaptor<
01412 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01413 xst_lambda_wrap< typename LambdaT::reference_T >,
01414 xst_modulus_assignment_policy<
01415 LambdaT::capacity_,
01416 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01417 primitive_id_unary_adaptor
01418 >
01419 > xst_adaptor_T;
01420
01421 return xst_adaptor_T( *this, lambda_.make_reference() );
01422 }
01423
01424
01440 template< typename LambdaT >
01441 xst_binary_adaptor<
01442 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01443 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01444 xst_modulus_assignment_policy<
01445 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01446 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01447 primitive_id_unary_adaptor
01448 >
01449 >
01450 operator%= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
01451 {
01452 typedef xst_binary_adaptor<
01453 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01454 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01455 xst_modulus_assignment_policy<
01456 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01457 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01458 primitive_id_unary_adaptor
01459 >
01460 > xst_adaptor_T;
01461
01462 return xst_adaptor_T( *this, lambda_ );
01463 }
01464
01465
01485 template< typename LambdaT, typename OtherPolicyAdaptorT >
01486 xst_binary_adaptor<
01487 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01488 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01489 xst_modulus_assignment_policy<
01490 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01491 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01492 primitive_id_unary_adaptor
01493 >
01494 >
01495 operator%= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
01496 {
01497 typedef xst_binary_adaptor<
01498 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01499 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01500 xst_modulus_assignment_policy<
01501 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01502 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01503 primitive_id_unary_adaptor
01504 >
01505 > xst_adaptor_T;
01506
01507 return xst_adaptor_T( *this, lambda_ );
01508 }
01509
01510
01534 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
01535 xst_binary_adaptor<
01536 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01537 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01538 xst_modulus_assignment_policy<
01539 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01540 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01541 primitive_id_unary_adaptor
01542 >
01543 >
01544 operator%= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
01545 {
01546 typedef xst_binary_adaptor<
01547 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01548 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01549 xst_modulus_assignment_policy<
01550 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01551 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01552 primitive_id_unary_adaptor
01553 >
01554 > xst_adaptor_T;
01555
01556 return xst_adaptor_T( *this, lambda_ );
01557 }
01558
01560
01562
01578 template< typename StackValueT >
01579 xst_binary_adaptor<
01580 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01581 xst_lambda_wrap< xst_scalar< StackValueT > >,
01582 xst_modulus_assignment_policy<
01583 1,
01584 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01585 primitive_id_unary_adaptor
01586 >
01587 >
01588 operator%= ( std::stack< StackValueT > const& stack_ )
01589 {
01590 typedef xst_binary_adaptor<
01591 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01592 xst_lambda_wrap< xst_scalar< StackValueT > >,
01593 xst_modulus_assignment_policy<
01594 1,
01595 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01596 primitive_id_unary_adaptor
01597 >
01598 > xst_adaptor_T;
01599
01600 assert( !stack_.empty() );
01601 return xst_adaptor_T(
01602 *this,
01603 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
01604 );
01605 }
01606
01607
01623 template< typename StackValueT >
01624 xst_binary_adaptor<
01625 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01626 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
01627 xst_modulus_assignment_policy<
01628 1,
01629 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01630 primitive_id_unary_adaptor
01631 >
01632 >
01633 operator%= ( std::stack< StackValueT >* pstack_ )
01634 {
01635 typedef xst_binary_adaptor<
01636 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01637 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
01638 xst_modulus_assignment_policy<
01639 1,
01640 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01641 primitive_id_unary_adaptor
01642 >
01643 > xst_adaptor_T;
01644
01645 return xst_adaptor_T(
01646 *this,
01647 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
01648 );
01649 }
01650
01652
01654
01655
01657
01659
01661
01663
01678 template< typename RhsValueT >
01679 xst_binary_adaptor<
01680 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01681 xst_lambda_wrap< xst_scalar< RhsValueT > >,
01682 xst_addition_assignment_policy<
01683 1,
01684 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01685 primitive_id_unary_adaptor
01686 >
01687 >
01688 operator+= ( RhsValueT const& value_ )
01689 {
01690 typedef xst_binary_adaptor<
01691 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01692 xst_lambda_wrap< xst_scalar< RhsValueT > >,
01693 xst_addition_assignment_policy<
01694 1,
01695 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01696 primitive_id_unary_adaptor
01697 >
01698 > xst_adaptor_T;
01699
01700 return xst_adaptor_T(
01701 *this,
01702 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
01703 );
01704 }
01705
01706
01721 template< typename RhsValueT >
01722 xst_binary_adaptor<
01723 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01724 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
01725 xst_addition_assignment_policy<
01726 1,
01727 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01728 primitive_id_unary_adaptor
01729 >
01730 >
01731 operator+= ( RhsValueT* pvalue_ )
01732 {
01733 typedef xst_binary_adaptor<
01734 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01735 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
01736 xst_addition_assignment_policy<
01737 1,
01738 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01739 primitive_id_unary_adaptor
01740 >
01741 > xst_adaptor_T;
01742
01743 return xst_adaptor_T(
01744 *this,
01745 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
01746 );
01747 }
01748
01750
01752
01767 template< typename LambdaT >
01768 xst_binary_adaptor<
01769 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01770 xst_lambda_wrap< typename LambdaT::reference_T >,
01771 xst_addition_assignment_policy<
01772 LambdaT::capacity_,
01773 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01774 primitive_id_unary_adaptor
01775 >
01776 >
01777 operator+= ( xst_lambda_wrap< LambdaT > const& lambda_ )
01778 {
01779 typedef xst_binary_adaptor<
01780 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01781 xst_lambda_wrap< typename LambdaT::reference_T >,
01782 xst_addition_assignment_policy<
01783 LambdaT::capacity_,
01784 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01785 primitive_id_unary_adaptor
01786 >
01787 > xst_adaptor_T;
01788
01789 return xst_adaptor_T( *this, lambda_.make_reference() );
01790 }
01791
01792
01808 template< typename LambdaT >
01809 xst_binary_adaptor<
01810 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01811 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01812 xst_addition_assignment_policy<
01813 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01814 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01815 primitive_id_unary_adaptor
01816 >
01817 >
01818 operator+= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
01819 {
01820 typedef xst_binary_adaptor<
01821 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01822 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
01823 xst_addition_assignment_policy<
01824 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
01825 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01826 primitive_id_unary_adaptor
01827 >
01828 > xst_adaptor_T;
01829
01830 return xst_adaptor_T( *this, lambda_ );
01831 }
01832
01833
01853 template< typename LambdaT, typename OtherPolicyAdaptorT >
01854 xst_binary_adaptor<
01855 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01856 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01857 xst_addition_assignment_policy<
01858 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01859 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01860 primitive_id_unary_adaptor
01861 >
01862 >
01863 operator+= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
01864 {
01865 typedef xst_binary_adaptor<
01866 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01867 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
01868 xst_addition_assignment_policy<
01869 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
01870 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01871 primitive_id_unary_adaptor
01872 >
01873 > xst_adaptor_T;
01874
01875 return xst_adaptor_T( *this, lambda_ );
01876 }
01877
01878
01902 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
01903 xst_binary_adaptor<
01904 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01905 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01906 xst_addition_assignment_policy<
01907 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01908 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01909 primitive_id_unary_adaptor
01910 >
01911 >
01912 operator+= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
01913 {
01914 typedef xst_binary_adaptor<
01915 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01916 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
01917 xst_addition_assignment_policy<
01918 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
01919 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01920 primitive_id_unary_adaptor
01921 >
01922 > xst_adaptor_T;
01923
01924 return xst_adaptor_T( *this, lambda_ );
01925 }
01926
01928
01930
01946 template< typename StackValueT >
01947 xst_binary_adaptor<
01948 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01949 xst_lambda_wrap< xst_scalar< StackValueT > >,
01950 xst_addition_assignment_policy<
01951 1,
01952 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01953 primitive_id_unary_adaptor
01954 >
01955 >
01956 operator+= ( std::stack< StackValueT > const& stack_ )
01957 {
01958 typedef xst_binary_adaptor<
01959 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01960 xst_lambda_wrap< xst_scalar< StackValueT > >,
01961 xst_addition_assignment_policy<
01962 1,
01963 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01964 primitive_id_unary_adaptor
01965 >
01966 > xst_adaptor_T;
01967
01968 assert( !stack_.empty() );
01969 return xst_adaptor_T(
01970 *this,
01971 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
01972 );
01973 }
01974
01975
01991 template< typename StackValueT >
01992 xst_binary_adaptor<
01993 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
01994 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
01995 xst_addition_assignment_policy<
01996 1,
01997 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
01998 primitive_id_unary_adaptor
01999 >
02000 >
02001 operator+= ( std::stack< StackValueT >* pstack_ )
02002 {
02003 typedef xst_binary_adaptor<
02004 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02005 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
02006 xst_addition_assignment_policy<
02007 1,
02008 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02009 primitive_id_unary_adaptor
02010 >
02011 > xst_adaptor_T;
02012
02013 return xst_adaptor_T(
02014 *this,
02015 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
02016 );
02017 }
02018
02020
02022
02023
02025
02027
02029
02031
02046 template< typename RhsValueT >
02047 xst_binary_adaptor<
02048 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02049 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02050 xst_subtraction_assignment_policy<
02051 1,
02052 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02053 primitive_id_unary_adaptor
02054 >
02055 >
02056 operator-= ( RhsValueT const& value_ )
02057 {
02058 typedef xst_binary_adaptor<
02059 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02060 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02061 xst_subtraction_assignment_policy<
02062 1,
02063 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02064 primitive_id_unary_adaptor
02065 >
02066 > xst_adaptor_T;
02067
02068 return xst_adaptor_T(
02069 *this,
02070 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
02071 );
02072 }
02073
02074
02089 template< typename RhsValueT >
02090 xst_binary_adaptor<
02091 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02092 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02093 xst_subtraction_assignment_policy<
02094 1,
02095 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02096 primitive_id_unary_adaptor
02097 >
02098 >
02099 operator-= ( RhsValueT* pvalue_ )
02100 {
02101 typedef xst_binary_adaptor<
02102 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02103 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02104 xst_subtraction_assignment_policy<
02105 1,
02106 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02107 primitive_id_unary_adaptor
02108 >
02109 > xst_adaptor_T;
02110
02111 return xst_adaptor_T(
02112 *this,
02113 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
02114 );
02115 }
02116
02118
02120
02135 template< typename LambdaT >
02136 xst_binary_adaptor<
02137 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02138 xst_lambda_wrap< typename LambdaT::reference_T >,
02139 xst_subtraction_assignment_policy<
02140 LambdaT::capacity_,
02141 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02142 primitive_id_unary_adaptor
02143 >
02144 >
02145 operator-= ( xst_lambda_wrap< LambdaT > const& lambda_ )
02146 {
02147 typedef xst_binary_adaptor<
02148 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02149 xst_lambda_wrap< typename LambdaT::reference_T >,
02150 xst_subtraction_assignment_policy<
02151 LambdaT::capacity_,
02152 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02153 primitive_id_unary_adaptor
02154 >
02155 > xst_adaptor_T;
02156
02157 return xst_adaptor_T( *this, lambda_.make_reference() );
02158 }
02159
02160
02176 template< typename LambdaT >
02177 xst_binary_adaptor<
02178 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02179 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02180 xst_subtraction_assignment_policy<
02181 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02182 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02183 primitive_id_unary_adaptor
02184 >
02185 >
02186 operator-= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
02187 {
02188 typedef xst_binary_adaptor<
02189 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02190 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02191 xst_subtraction_assignment_policy<
02192 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02193 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02194 primitive_id_unary_adaptor
02195 >
02196 > xst_adaptor_T;
02197
02198 return xst_adaptor_T( *this, lambda_ );
02199 }
02200
02201
02221 template< typename LambdaT, typename OtherPolicyAdaptorT >
02222 xst_binary_adaptor<
02223 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02224 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02225 xst_subtraction_assignment_policy<
02226 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02227 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02228 primitive_id_unary_adaptor
02229 >
02230 >
02231 operator-= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
02232 {
02233 typedef xst_binary_adaptor<
02234 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02235 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02236 xst_subtraction_assignment_policy<
02237 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02238 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02239 primitive_id_unary_adaptor
02240 >
02241 > xst_adaptor_T;
02242
02243 return xst_adaptor_T( *this, lambda_ );
02244 }
02245
02246
02270 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
02271 xst_binary_adaptor<
02272 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02273 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
02274 xst_subtraction_assignment_policy<
02275 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
02276 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02277 primitive_id_unary_adaptor
02278 >
02279 >
02280 operator-= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
02281 {
02282 typedef xst_binary_adaptor<
02283 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02284 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
02285 xst_subtraction_assignment_policy<
02286 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
02287 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02288 primitive_id_unary_adaptor
02289 >
02290 > xst_adaptor_T;
02291
02292 return xst_adaptor_T( *this, lambda_ );
02293 }
02294
02296
02298
02314 template< typename StackValueT >
02315 xst_binary_adaptor<
02316 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02317 xst_lambda_wrap< xst_scalar< StackValueT > >,
02318 xst_subtraction_assignment_policy<
02319 1,
02320 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02321 primitive_id_unary_adaptor
02322 >
02323 >
02324 operator-= ( std::stack< StackValueT > const& stack_ )
02325 {
02326 typedef xst_binary_adaptor<
02327 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02328 xst_lambda_wrap< xst_scalar< StackValueT > >,
02329 xst_subtraction_assignment_policy<
02330 1,
02331 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02332 primitive_id_unary_adaptor
02333 >
02334 > xst_adaptor_T;
02335
02336 assert( !stack_.empty() );
02337 return xst_adaptor_T(
02338 *this,
02339 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
02340 );
02341 }
02342
02343
02359 template< typename StackValueT >
02360 xst_binary_adaptor<
02361 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02362 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
02363 xst_subtraction_assignment_policy<
02364 1,
02365 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02366 primitive_id_unary_adaptor
02367 >
02368 >
02369 operator-= ( std::stack< StackValueT >* pstack_ )
02370 {
02371 typedef xst_binary_adaptor<
02372 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02373 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
02374 xst_subtraction_assignment_policy<
02375 1,
02376 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02377 primitive_id_unary_adaptor
02378 >
02379 > xst_adaptor_T;
02380
02381 return xst_adaptor_T(
02382 *this,
02383 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
02384 );
02385 }
02386
02388
02390
02391
02393
02395
02397
02399
02414 template< typename RhsValueT >
02415 xst_binary_adaptor<
02416 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02417 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02418 xst_left_shift_assignment_policy<
02419 1,
02420 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02421 primitive_id_unary_adaptor
02422 >
02423 >
02424 operator<<= ( RhsValueT const& value_ )
02425 {
02426 typedef xst_binary_adaptor<
02427 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02428 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02429 xst_left_shift_assignment_policy<
02430 1,
02431 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02432 primitive_id_unary_adaptor
02433 >
02434 > xst_adaptor_T;
02435
02436 return xst_adaptor_T(
02437 *this,
02438 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
02439 );
02440 }
02441
02442
02457 template< typename RhsValueT >
02458 xst_binary_adaptor<
02459 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02460 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02461 xst_left_shift_assignment_policy<
02462 1,
02463 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02464 primitive_id_unary_adaptor
02465 >
02466 >
02467 operator<<= ( RhsValueT* pvalue_ )
02468 {
02469 typedef xst_binary_adaptor<
02470 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02471 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02472 xst_left_shift_assignment_policy<
02473 1,
02474 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02475 primitive_id_unary_adaptor
02476 >
02477 > xst_adaptor_T;
02478
02479 return xst_adaptor_T(
02480 *this,
02481 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
02482 );
02483 }
02484
02486
02488
02503 template< typename LambdaT >
02504 xst_binary_adaptor<
02505 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02506 xst_lambda_wrap< typename LambdaT::reference_T >,
02507 xst_left_shift_assignment_policy<
02508 LambdaT::capacity_,
02509 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02510 primitive_id_unary_adaptor
02511 >
02512 >
02513 operator<<= ( xst_lambda_wrap< LambdaT > const& lambda_ )
02514 {
02515 typedef xst_binary_adaptor<
02516 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02517 xst_lambda_wrap< typename LambdaT::reference_T >,
02518 xst_left_shift_assignment_policy<
02519 LambdaT::capacity_,
02520 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02521 primitive_id_unary_adaptor
02522 >
02523 > xst_adaptor_T;
02524
02525 return xst_adaptor_T( *this, lambda_.make_reference() );
02526 }
02527
02528
02544 template< typename LambdaT >
02545 xst_binary_adaptor<
02546 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02547 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02548 xst_left_shift_assignment_policy<
02549 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02550 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02551 primitive_id_unary_adaptor
02552 >
02553 >
02554 operator<<= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
02555 {
02556 typedef xst_binary_adaptor<
02557 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02558 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02559 xst_left_shift_assignment_policy<
02560 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02561 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02562 primitive_id_unary_adaptor
02563 >
02564 > xst_adaptor_T;
02565
02566 return xst_adaptor_T( *this, lambda_ );
02567 }
02568
02569
02589 template< typename LambdaT, typename OtherPolicyAdaptorT >
02590 xst_binary_adaptor<
02591 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02592 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02593 xst_left_shift_assignment_policy<
02594 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02595 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02596 primitive_id_unary_adaptor
02597 >
02598 >
02599 operator<<= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
02600 {
02601 typedef xst_binary_adaptor<
02602 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02603 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02604 xst_left_shift_assignment_policy<
02605 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02606 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02607 primitive_id_unary_adaptor
02608 >
02609 > xst_adaptor_T;
02610
02611 return xst_adaptor_T( *this, lambda_ );
02612 }
02613
02614
02638 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
02639 xst_binary_adaptor<
02640 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02641 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
02642 xst_left_shift_assignment_policy<
02643 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
02644 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02645 primitive_id_unary_adaptor
02646 >
02647 >
02648 operator<<= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
02649 {
02650 typedef xst_binary_adaptor<
02651 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02652 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
02653 xst_left_shift_assignment_policy<
02654 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
02655 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02656 primitive_id_unary_adaptor
02657 >
02658 > xst_adaptor_T;
02659
02660 return xst_adaptor_T( *this, lambda_ );
02661 }
02662
02664
02666
02682 template< typename StackValueT >
02683 xst_binary_adaptor<
02684 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02685 xst_lambda_wrap< xst_scalar< StackValueT > >,
02686 xst_left_shift_assignment_policy<
02687 1,
02688 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02689 primitive_id_unary_adaptor
02690 >
02691 >
02692 operator<<= ( std::stack< StackValueT > const& stack_ )
02693 {
02694 typedef xst_binary_adaptor<
02695 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02696 xst_lambda_wrap< xst_scalar< StackValueT > >,
02697 xst_left_shift_assignment_policy<
02698 1,
02699 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02700 primitive_id_unary_adaptor
02701 >
02702 > xst_adaptor_T;
02703
02704 assert( !stack_.empty() );
02705 return xst_adaptor_T(
02706 *this,
02707 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
02708 );
02709 }
02710
02711
02727 template< typename StackValueT >
02728 xst_binary_adaptor<
02729 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02730 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
02731 xst_left_shift_assignment_policy<
02732 1,
02733 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02734 primitive_id_unary_adaptor
02735 >
02736 >
02737 operator<<= ( std::stack< StackValueT >* pstack_ )
02738 {
02739 typedef xst_binary_adaptor<
02740 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02741 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
02742 xst_left_shift_assignment_policy<
02743 1,
02744 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02745 primitive_id_unary_adaptor
02746 >
02747 > xst_adaptor_T;
02748
02749 return xst_adaptor_T(
02750 *this,
02751 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
02752 );
02753 }
02754
02756
02758
02759
02761
02763
02765
02767
02782 template< typename RhsValueT >
02783 xst_binary_adaptor<
02784 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02785 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02786 xst_right_shift_assignment_policy<
02787 1,
02788 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02789 primitive_id_unary_adaptor
02790 >
02791 >
02792 operator>>= ( RhsValueT const& value_ )
02793 {
02794 typedef xst_binary_adaptor<
02795 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02796 xst_lambda_wrap< xst_scalar< RhsValueT > >,
02797 xst_right_shift_assignment_policy<
02798 1,
02799 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02800 primitive_id_unary_adaptor
02801 >
02802 > xst_adaptor_T;
02803
02804 return xst_adaptor_T(
02805 *this,
02806 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
02807 );
02808 }
02809
02810
02825 template< typename RhsValueT >
02826 xst_binary_adaptor<
02827 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02828 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02829 xst_right_shift_assignment_policy<
02830 1,
02831 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02832 primitive_id_unary_adaptor
02833 >
02834 >
02835 operator>>= ( RhsValueT* pvalue_ )
02836 {
02837 typedef xst_binary_adaptor<
02838 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02839 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
02840 xst_right_shift_assignment_policy<
02841 1,
02842 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02843 primitive_id_unary_adaptor
02844 >
02845 > xst_adaptor_T;
02846
02847 return xst_adaptor_T(
02848 *this,
02849 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
02850 );
02851 }
02852
02854
02856
02871 template< typename LambdaT >
02872 xst_binary_adaptor<
02873 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02874 xst_lambda_wrap< typename LambdaT::reference_T >,
02875 xst_right_shift_assignment_policy<
02876 LambdaT::capacity_,
02877 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02878 primitive_id_unary_adaptor
02879 >
02880 >
02881 operator>>= ( xst_lambda_wrap< LambdaT > const& lambda_ )
02882 {
02883 typedef xst_binary_adaptor<
02884 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02885 xst_lambda_wrap< typename LambdaT::reference_T >,
02886 xst_right_shift_assignment_policy<
02887 LambdaT::capacity_,
02888 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02889 primitive_id_unary_adaptor
02890 >
02891 > xst_adaptor_T;
02892
02893 return xst_adaptor_T( *this, lambda_.make_reference() );
02894 }
02895
02896
02912 template< typename LambdaT >
02913 xst_binary_adaptor<
02914 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02915 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02916 xst_right_shift_assignment_policy<
02917 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02918 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02919 primitive_id_unary_adaptor
02920 >
02921 >
02922 operator>>= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
02923 {
02924 typedef xst_binary_adaptor<
02925 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02926 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
02927 xst_right_shift_assignment_policy<
02928 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
02929 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02930 primitive_id_unary_adaptor
02931 >
02932 > xst_adaptor_T;
02933
02934 return xst_adaptor_T( *this, lambda_ );
02935 }
02936
02937
02957 template< typename LambdaT, typename OtherPolicyAdaptorT >
02958 xst_binary_adaptor<
02959 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02960 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02961 xst_right_shift_assignment_policy<
02962 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02963 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02964 primitive_id_unary_adaptor
02965 >
02966 >
02967 operator>>= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
02968 {
02969 typedef xst_binary_adaptor<
02970 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
02971 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
02972 xst_right_shift_assignment_policy<
02973 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
02974 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
02975 primitive_id_unary_adaptor
02976 >
02977 > xst_adaptor_T;
02978
02979 return xst_adaptor_T( *this, lambda_ );
02980 }
02981
02982
03006 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
03007 xst_binary_adaptor<
03008 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03009 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03010 xst_right_shift_assignment_policy<
03011 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03012 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03013 primitive_id_unary_adaptor
03014 >
03015 >
03016 operator>>= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
03017 {
03018 typedef xst_binary_adaptor<
03019 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03020 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03021 xst_right_shift_assignment_policy<
03022 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03023 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03024 primitive_id_unary_adaptor
03025 >
03026 > xst_adaptor_T;
03027
03028 return xst_adaptor_T( *this, lambda_ );
03029 }
03030
03032
03034
03050 template< typename StackValueT >
03051 xst_binary_adaptor<
03052 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03053 xst_lambda_wrap< xst_scalar< StackValueT > >,
03054 xst_right_shift_assignment_policy<
03055 1,
03056 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03057 primitive_id_unary_adaptor
03058 >
03059 >
03060 operator>>= ( std::stack< StackValueT > const& stack_ )
03061 {
03062 typedef xst_binary_adaptor<
03063 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03064 xst_lambda_wrap< xst_scalar< StackValueT > >,
03065 xst_right_shift_assignment_policy<
03066 1,
03067 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03068 primitive_id_unary_adaptor
03069 >
03070 > xst_adaptor_T;
03071
03072 assert( !stack_.empty() );
03073 return xst_adaptor_T(
03074 *this,
03075 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
03076 );
03077 }
03078
03079
03095 template< typename StackValueT >
03096 xst_binary_adaptor<
03097 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03098 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03099 xst_right_shift_assignment_policy<
03100 1,
03101 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03102 primitive_id_unary_adaptor
03103 >
03104 >
03105 operator>>= ( std::stack< StackValueT >* pstack_ )
03106 {
03107 typedef xst_binary_adaptor<
03108 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03109 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03110 xst_right_shift_assignment_policy<
03111 1,
03112 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03113 primitive_id_unary_adaptor
03114 >
03115 > xst_adaptor_T;
03116
03117 return xst_adaptor_T(
03118 *this,
03119 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
03120 );
03121 }
03122
03124
03126
03127
03129
03131
03133
03135
03150 template< typename RhsValueT >
03151 xst_binary_adaptor<
03152 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03153 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03154 xst_bitwise_and_assignment_policy<
03155 1,
03156 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03157 primitive_id_unary_adaptor
03158 >
03159 >
03160 operator&= ( RhsValueT const& value_ )
03161 {
03162 typedef xst_binary_adaptor<
03163 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03164 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03165 xst_bitwise_and_assignment_policy<
03166 1,
03167 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03168 primitive_id_unary_adaptor
03169 >
03170 > xst_adaptor_T;
03171
03172 return xst_adaptor_T(
03173 *this,
03174 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
03175 );
03176 }
03177
03178
03193 template< typename RhsValueT >
03194 xst_binary_adaptor<
03195 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03196 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03197 xst_bitwise_and_assignment_policy<
03198 1,
03199 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03200 primitive_id_unary_adaptor
03201 >
03202 >
03203 operator&= ( RhsValueT* pvalue_ )
03204 {
03205 typedef xst_binary_adaptor<
03206 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03207 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03208 xst_bitwise_and_assignment_policy<
03209 1,
03210 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03211 primitive_id_unary_adaptor
03212 >
03213 > xst_adaptor_T;
03214
03215 return xst_adaptor_T(
03216 *this,
03217 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
03218 );
03219 }
03220
03222
03224
03239 template< typename LambdaT >
03240 xst_binary_adaptor<
03241 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03242 xst_lambda_wrap< typename LambdaT::reference_T >,
03243 xst_bitwise_and_assignment_policy<
03244 LambdaT::capacity_,
03245 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03246 primitive_id_unary_adaptor
03247 >
03248 >
03249 operator&= ( xst_lambda_wrap< LambdaT > const& lambda_ )
03250 {
03251 typedef xst_binary_adaptor<
03252 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03253 xst_lambda_wrap< typename LambdaT::reference_T >,
03254 xst_bitwise_and_assignment_policy<
03255 LambdaT::capacity_,
03256 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03257 primitive_id_unary_adaptor
03258 >
03259 > xst_adaptor_T;
03260
03261 return xst_adaptor_T( *this, lambda_.make_reference() );
03262 }
03263
03264
03280 template< typename LambdaT >
03281 xst_binary_adaptor<
03282 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03283 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
03284 xst_bitwise_and_assignment_policy<
03285 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
03286 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03287 primitive_id_unary_adaptor
03288 >
03289 >
03290 operator&= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
03291 {
03292 typedef xst_binary_adaptor<
03293 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03294 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
03295 xst_bitwise_and_assignment_policy<
03296 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
03297 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03298 primitive_id_unary_adaptor
03299 >
03300 > xst_adaptor_T;
03301
03302 return xst_adaptor_T( *this, lambda_ );
03303 }
03304
03305
03325 template< typename LambdaT, typename OtherPolicyAdaptorT >
03326 xst_binary_adaptor<
03327 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03328 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
03329 xst_bitwise_and_assignment_policy<
03330 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
03331 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03332 primitive_id_unary_adaptor
03333 >
03334 >
03335 operator&= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
03336 {
03337 typedef xst_binary_adaptor<
03338 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03339 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
03340 xst_bitwise_and_assignment_policy<
03341 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
03342 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03343 primitive_id_unary_adaptor
03344 >
03345 > xst_adaptor_T;
03346
03347 return xst_adaptor_T( *this, lambda_ );
03348 }
03349
03350
03374 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
03375 xst_binary_adaptor<
03376 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03377 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03378 xst_bitwise_and_assignment_policy<
03379 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03380 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03381 primitive_id_unary_adaptor
03382 >
03383 >
03384 operator&= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
03385 {
03386 typedef xst_binary_adaptor<
03387 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03388 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03389 xst_bitwise_and_assignment_policy<
03390 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03391 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03392 primitive_id_unary_adaptor
03393 >
03394 > xst_adaptor_T;
03395
03396 return xst_adaptor_T( *this, lambda_ );
03397 }
03398
03400
03402
03418 template< typename StackValueT >
03419 xst_binary_adaptor<
03420 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03421 xst_lambda_wrap< xst_scalar< StackValueT > >,
03422 xst_bitwise_and_assignment_policy<
03423 1,
03424 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03425 primitive_id_unary_adaptor
03426 >
03427 >
03428 operator&= ( std::stack< StackValueT > const& stack_ )
03429 {
03430 typedef xst_binary_adaptor<
03431 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03432 xst_lambda_wrap< xst_scalar< StackValueT > >,
03433 xst_bitwise_and_assignment_policy<
03434 1,
03435 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03436 primitive_id_unary_adaptor
03437 >
03438 > xst_adaptor_T;
03439
03440 assert( !stack_.empty() );
03441 return xst_adaptor_T(
03442 *this,
03443 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
03444 );
03445 }
03446
03447
03463 template< typename StackValueT >
03464 xst_binary_adaptor<
03465 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03466 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03467 xst_bitwise_and_assignment_policy<
03468 1,
03469 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03470 primitive_id_unary_adaptor
03471 >
03472 >
03473 operator&= ( std::stack< StackValueT >* pstack_ )
03474 {
03475 typedef xst_binary_adaptor<
03476 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03477 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03478 xst_bitwise_and_assignment_policy<
03479 1,
03480 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03481 primitive_id_unary_adaptor
03482 >
03483 > xst_adaptor_T;
03484
03485 return xst_adaptor_T(
03486 *this,
03487 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
03488 );
03489 }
03490
03492
03494
03495
03497
03499
03501
03503
03518 template< typename RhsValueT >
03519 xst_binary_adaptor<
03520 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03521 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03522 xst_bitwise_ior_assignment_policy<
03523 1,
03524 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03525 primitive_id_unary_adaptor
03526 >
03527 >
03528 operator|= ( RhsValueT const& value_ )
03529 {
03530 typedef xst_binary_adaptor<
03531 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03532 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03533 xst_bitwise_ior_assignment_policy<
03534 1,
03535 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03536 primitive_id_unary_adaptor
03537 >
03538 > xst_adaptor_T;
03539
03540 return xst_adaptor_T(
03541 *this,
03542 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
03543 );
03544 }
03545
03546
03561 template< typename RhsValueT >
03562 xst_binary_adaptor<
03563 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03564 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03565 xst_bitwise_ior_assignment_policy<
03566 1,
03567 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03568 primitive_id_unary_adaptor
03569 >
03570 >
03571 operator|= ( RhsValueT* pvalue_ )
03572 {
03573 typedef xst_binary_adaptor<
03574 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03575 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03576 xst_bitwise_ior_assignment_policy<
03577 1,
03578 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03579 primitive_id_unary_adaptor
03580 >
03581 > xst_adaptor_T;
03582
03583 return xst_adaptor_T(
03584 *this,
03585 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
03586 );
03587 }
03588
03590
03592
03607 template< typename LambdaT >
03608 xst_binary_adaptor<
03609 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03610 xst_lambda_wrap< typename LambdaT::reference_T >,
03611 xst_bitwise_ior_assignment_policy<
03612 LambdaT::capacity_,
03613 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03614 primitive_id_unary_adaptor
03615 >
03616 >
03617 operator|= ( xst_lambda_wrap< LambdaT > const& lambda_ )
03618 {
03619 typedef xst_binary_adaptor<
03620 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03621 xst_lambda_wrap< typename LambdaT::reference_T >,
03622 xst_bitwise_ior_assignment_policy<
03623 LambdaT::capacity_,
03624 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03625 primitive_id_unary_adaptor
03626 >
03627 > xst_adaptor_T;
03628
03629 return xst_adaptor_T( *this, lambda_.make_reference() );
03630 }
03631
03632
03648 template< typename LambdaT >
03649 xst_binary_adaptor<
03650 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03651 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
03652 xst_bitwise_ior_assignment_policy<
03653 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
03654 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03655 primitive_id_unary_adaptor
03656 >
03657 >
03658 operator|= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
03659 {
03660 typedef xst_binary_adaptor<
03661 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03662 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
03663 xst_bitwise_ior_assignment_policy<
03664 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
03665 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03666 primitive_id_unary_adaptor
03667 >
03668 > xst_adaptor_T;
03669
03670 return xst_adaptor_T( *this, lambda_ );
03671 }
03672
03673
03693 template< typename LambdaT, typename OtherPolicyAdaptorT >
03694 xst_binary_adaptor<
03695 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03696 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
03697 xst_bitwise_ior_assignment_policy<
03698 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
03699 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03700 primitive_id_unary_adaptor
03701 >
03702 >
03703 operator|= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
03704 {
03705 typedef xst_binary_adaptor<
03706 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03707 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
03708 xst_bitwise_ior_assignment_policy<
03709 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
03710 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03711 primitive_id_unary_adaptor
03712 >
03713 > xst_adaptor_T;
03714
03715 return xst_adaptor_T( *this, lambda_ );
03716 }
03717
03718
03742 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
03743 xst_binary_adaptor<
03744 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03745 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03746 xst_bitwise_ior_assignment_policy<
03747 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03748 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03749 primitive_id_unary_adaptor
03750 >
03751 >
03752 operator|= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
03753 {
03754 typedef xst_binary_adaptor<
03755 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03756 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
03757 xst_bitwise_ior_assignment_policy<
03758 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
03759 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03760 primitive_id_unary_adaptor
03761 >
03762 > xst_adaptor_T;
03763
03764 return xst_adaptor_T( *this, lambda_ );
03765 }
03766
03768
03770
03786 template< typename StackValueT >
03787 xst_binary_adaptor<
03788 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03789 xst_lambda_wrap< xst_scalar< StackValueT > >,
03790 xst_bitwise_ior_assignment_policy<
03791 1,
03792 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03793 primitive_id_unary_adaptor
03794 >
03795 >
03796 operator|= ( std::stack< StackValueT > const& stack_ )
03797 {
03798 typedef xst_binary_adaptor<
03799 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03800 xst_lambda_wrap< xst_scalar< StackValueT > >,
03801 xst_bitwise_ior_assignment_policy<
03802 1,
03803 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03804 primitive_id_unary_adaptor
03805 >
03806 > xst_adaptor_T;
03807
03808 assert( !stack_.empty() );
03809 return xst_adaptor_T(
03810 *this,
03811 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
03812 );
03813 }
03814
03815
03831 template< typename StackValueT >
03832 xst_binary_adaptor<
03833 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03834 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03835 xst_bitwise_ior_assignment_policy<
03836 1,
03837 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03838 primitive_id_unary_adaptor
03839 >
03840 >
03841 operator|= ( std::stack< StackValueT >* pstack_ )
03842 {
03843 typedef xst_binary_adaptor<
03844 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03845 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
03846 xst_bitwise_ior_assignment_policy<
03847 1,
03848 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03849 primitive_id_unary_adaptor
03850 >
03851 > xst_adaptor_T;
03852
03853 return xst_adaptor_T(
03854 *this,
03855 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
03856 );
03857 }
03858
03860
03862
03863
03865
03867
03869
03871
03886 template< typename RhsValueT >
03887 xst_binary_adaptor<
03888 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03889 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03890 xst_bitwise_xor_assignment_policy<
03891 1,
03892 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03893 primitive_id_unary_adaptor
03894 >
03895 >
03896 operator^= ( RhsValueT const& value_ )
03897 {
03898 typedef xst_binary_adaptor<
03899 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03900 xst_lambda_wrap< xst_scalar< RhsValueT > >,
03901 xst_bitwise_xor_assignment_policy<
03902 1,
03903 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03904 primitive_id_unary_adaptor
03905 >
03906 > xst_adaptor_T;
03907
03908 return xst_adaptor_T(
03909 *this,
03910 xst_lambda_wrap< xst_scalar< RhsValueT > >( value_ )
03911 );
03912 }
03913
03914
03929 template< typename RhsValueT >
03930 xst_binary_adaptor<
03931 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03932 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03933 xst_bitwise_xor_assignment_policy<
03934 1,
03935 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03936 primitive_id_unary_adaptor
03937 >
03938 >
03939 operator^= ( RhsValueT* pvalue_ )
03940 {
03941 typedef xst_binary_adaptor<
03942 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03943 xst_lambda_wrap< xst_scalar< RhsValueT& > >,
03944 xst_bitwise_xor_assignment_policy<
03945 1,
03946 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03947 primitive_id_unary_adaptor
03948 >
03949 > xst_adaptor_T;
03950
03951 return xst_adaptor_T(
03952 *this,
03953 xst_lambda_wrap< xst_scalar< RhsValueT& > >( pvalue_ )
03954 );
03955 }
03956
03958
03960
03975 template< typename LambdaT >
03976 xst_binary_adaptor<
03977 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03978 xst_lambda_wrap< typename LambdaT::reference_T >,
03979 xst_bitwise_xor_assignment_policy<
03980 LambdaT::capacity_,
03981 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03982 primitive_id_unary_adaptor
03983 >
03984 >
03985 operator^= ( xst_lambda_wrap< LambdaT > const& lambda_ )
03986 {
03987 typedef xst_binary_adaptor<
03988 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
03989 xst_lambda_wrap< typename LambdaT::reference_T >,
03990 xst_bitwise_xor_assignment_policy<
03991 LambdaT::capacity_,
03992 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
03993 primitive_id_unary_adaptor
03994 >
03995 > xst_adaptor_T;
03996
03997 return xst_adaptor_T( *this, lambda_.make_reference() );
03998 }
03999
04000
04016 template< typename LambdaT >
04017 xst_binary_adaptor<
04018 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04019 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
04020 xst_bitwise_xor_assignment_policy<
04021 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
04022 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04023 primitive_id_unary_adaptor
04024 >
04025 >
04026 operator^= ( xst_unary_adaptor< LambdaT, PolicyAdaptorT > const& lambda_ )
04027 {
04028 typedef xst_binary_adaptor<
04029 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04030 xst_unary_adaptor< LambdaT, PolicyAdaptorT >,
04031 xst_bitwise_xor_assignment_policy<
04032 xst_unary_adaptor< LambdaT, PolicyAdaptorT >::capacity_,
04033 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04034 primitive_id_unary_adaptor
04035 >
04036 > xst_adaptor_T;
04037
04038 return xst_adaptor_T( *this, lambda_ );
04039 }
04040
04041
04061 template< typename LambdaT, typename OtherPolicyAdaptorT >
04062 xst_binary_adaptor<
04063 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04064 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
04065 xst_bitwise_xor_assignment_policy<
04066 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
04067 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04068 primitive_id_unary_adaptor
04069 >
04070 >
04071 operator^= ( xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT > const& lambda_ )
04072 {
04073 typedef xst_binary_adaptor<
04074 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04075 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >,
04076 xst_bitwise_xor_assignment_policy<
04077 xst_unary_adaptor< LambdaT, OtherPolicyAdaptorT >::capacity_,
04078 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04079 primitive_id_unary_adaptor
04080 >
04081 > xst_adaptor_T;
04082
04083 return xst_adaptor_T( *this, lambda_ );
04084 }
04085
04086
04110 template< typename LambdaLhsT, typename LambdaRhsT, typename BinaryPolicyAdaptorT >
04111 xst_binary_adaptor<
04112 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04113 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
04114 xst_bitwise_xor_assignment_policy<
04115 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
04116 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04117 primitive_id_unary_adaptor
04118 >
04119 >
04120 operator^= ( xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT > const& lambda_ )
04121 {
04122 typedef xst_binary_adaptor<
04123 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04124 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >,
04125 xst_bitwise_xor_assignment_policy<
04126 xst_binary_adaptor< LambdaLhsT, LambdaRhsT, BinaryPolicyAdaptorT >::capacity_,
04127 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04128 primitive_id_unary_adaptor
04129 >
04130 > xst_adaptor_T;
04131
04132 return xst_adaptor_T( *this, lambda_ );
04133 }
04134
04136
04138
04154 template< typename StackValueT >
04155 xst_binary_adaptor<
04156 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04157 xst_lambda_wrap< xst_scalar< StackValueT > >,
04158 xst_bitwise_xor_assignment_policy<
04159 1,
04160 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04161 primitive_id_unary_adaptor
04162 >
04163 >
04164 operator^= ( std::stack< StackValueT > const& stack_ )
04165 {
04166 typedef xst_binary_adaptor<
04167 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04168 xst_lambda_wrap< xst_scalar< StackValueT > >,
04169 xst_bitwise_xor_assignment_policy<
04170 1,
04171 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04172 primitive_id_unary_adaptor
04173 >
04174 > xst_adaptor_T;
04175
04176 assert( !stack_.empty() );
04177 return xst_adaptor_T(
04178 *this,
04179 xst_lambda_wrap< xst_scalar< StackValueT > >( stack_.top() )
04180 );
04181 }
04182
04183
04199 template< typename StackValueT >
04200 xst_binary_adaptor<
04201 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04202 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
04203 xst_bitwise_xor_assignment_policy<
04204 1,
04205 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04206 primitive_id_unary_adaptor
04207 >
04208 >
04209 operator^= ( std::stack< StackValueT >* pstack_ )
04210 {
04211 typedef xst_binary_adaptor<
04212 xst_unary_adaptor< ExprT, PolicyAdaptorT >,
04213 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >,
04214 xst_bitwise_xor_assignment_policy<
04215 1,
04216 xst_unary_adaptor< ExprT, PolicyAdaptorT >::capacity_,
04217 primitive_id_unary_adaptor
04218 >
04219 > xst_adaptor_T;
04220
04221 return xst_adaptor_T(
04222 *this,
04223 xst_lambda_wrap< xst_stack< std::stack< StackValueT >& > >( pstack_ )
04224 );
04225 }
04226
04228
04230
04231
04232
04233 };
04234
04235
04236 }
04237
04238
04239 #endif //_XST_UNARY_ADAPTOR_H_INCLUDED_