OSDN Git Service

arith.hpp: add_sub_adapter, multiply_divide_adapter Add.
authormyun2 <myun2@nwhite.info>
Wed, 6 Jun 2012 16:05:41 +0000 (01:05 +0900)
committermyun2 <myun2@nwhite.info>
Wed, 6 Jun 2012 16:05:41 +0000 (01:05 +0900)
roast/include/roast/adapter/operator/arith/arith.hpp

index ec5ed74..f912229 100644 (file)
@@ -20,6 +20,53 @@ namespace roast
        {
                /////////////////////////////////////////////////////////////////////////
                
+               //      Add / Sub
+               template <typename _Facade, typename _ValueType>
+               class add_sub_adapter :
+                       public additional_adapter<_Facade, _ValueType>,
+                       public subtractional_adapter<_Facade, _ValueType>
+               {};
+               
+               ///////////////////////////////////////////////
+               
+               template <typename _Facade, typename _ValueType>
+               class value_add_sub_adapter : 
+                       public value_additional_adapter<_Facade, _ValueType>,
+                       public value_subtractional_adapter<_Facade, _ValueType>
+               {
+               public:
+                       value_add_sub_adapter(_ValueType& value_ref) :
+                               value_additional_adapter<_Facade, _ValueType>(value_ref),
+                               value_subtractional_adapter<_Facade, _ValueType>(value_ref)
+                               {}
+               };
+               
+               /////////////////////////////////////////////////////////////////////////
+               
+               //      Multiply / Divide
+               template <typename _Facade, typename _ValueType>
+               class multiply_divide_adapter :
+                       public multiplicational_adapter<_Facade, _ValueType>,
+                       public divisional_adapter<_Facade, _ValueType>
+               {};
+               
+               ///////////////////////////////////////////////
+               
+               template <typename _Facade, typename _ValueType>
+               class value_multiply_divide_adapter : 
+                       public value_multiplicational_adapter<_Facade, _ValueType>,
+                       public value_divisional_adapter<_Facade, _ValueType>
+               {
+               public:
+                       value_multiply_divide_adapter(_ValueType& value_ref) :
+                               value_multiplicational_adapter<_Facade, _ValueType>(value_ref),
+                               value_divisional_adapter<_Facade, _ValueType>(value_ref)
+                               {}
+               };
+               
+               /////////////////////////////////////////////////////////////////////////
+               
+               //      Full Arithmetical
                template <typename _Facade, typename _ValueType>
                class full_arithmetical_adapter :
                        public incr_decr_adapter<_Facade>,
@@ -29,7 +76,7 @@ namespace roast
                        public divisional_adapter<_Facade, _ValueType>
                {};
                
-               /////////////////////////////////////////////////////////////////////////
+               ///////////////////////////////////////////////
                
                template <typename _Facade, typename _ValueType>
                class value_full_arithmetical_adapter :