OSDN Git Service

論理演算子(!,&&,||)対応
authormyun2 <myun2@nwhite.info>
Thu, 7 Jun 2012 07:32:10 +0000 (16:32 +0900)
committermyun2 <myun2@nwhite.info>
Thu, 7 Jun 2012 07:32:10 +0000 (16:32 +0900)
roast/include/roast/adapter/operator/logical/and.hpp [deleted file]
roast/include/roast/adapter/operator/logical/logical.hpp [new file with mode: 0644]
roast/include/roast/adapter/operator/operator_adapter.hpp

diff --git a/roast/include/roast/adapter/operator/logical/and.hpp b/roast/include/roast/adapter/operator/logical/and.hpp
deleted file mode 100644 (file)
index dad8c23..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//     Roast+ License
-
-/*
-*/
-#ifndef __SFJP_ROAST__adapter__operator__logical__and_HPP__
-#define __SFJP_ROAST__adapter__operator__logical__and_HPP__
-
-namespace roast
-{
-       namespace adapter
-       {
-               /////////////////////////////////////////////////////////////////////////
-               
-               template <typename _Facade, typename _ValueType>
-               class logical_and_adapter
-               {
-               protected:
-                       virtual void logical_and(const _ValueType& logical_and_value)=0;
-                       
-               public:
-                       _Facade operator &&(const _ValueType& logical_and_value) const {
-                               return logical_and(logical_and_value);
-                       }
-               };
-               
-               /////////////////////////////////////////////////////////////////////////
-       }
-       
-       using namespace adapter;
-}
-
-#endif//__SFJP_ROAST__adapter__operator__logical__and_HPP__
diff --git a/roast/include/roast/adapter/operator/logical/logical.hpp b/roast/include/roast/adapter/operator/logical/logical.hpp
new file mode 100644 (file)
index 0000000..34ee7a6
--- /dev/null
@@ -0,0 +1,63 @@
+//     Roast+ License
+
+/*
+*/
+#ifndef __SFJP_ROAST__adapter__operator__logical__and_HPP__
+#define __SFJP_ROAST__adapter__operator__logical__and_HPP__
+
+namespace roast
+{
+       namespace adapter
+       {
+               /////////////////////////////////////////////////////////////////////////
+               
+               //      Logical And - &&
+               template <typename _Facade, typename _ValueType=bool>
+               class logical_and_adapter
+               {
+               protected:
+                       virtual _ValueType logical_and(const _Facade& target) const =0;
+                       
+               public:
+                       _ValueType operator &&(const _Facade& target) const {
+                               return logical_and(target);
+                       }
+               };
+               
+               /////////////////////////////////////////////////////////////////////////
+
+               //      Logical Or - ||
+               template <typename _Facade, typename _ValueType>
+               class logical_or_adapter
+               {
+               protected:
+                       virtual _ValueType logical_or(const _Facade& target) const =0;
+                       
+               public:
+                       _ValueType operator ||(const _Facade& target) const {
+                               return logical_or(target);
+                       }
+               };
+               
+               /////////////////////////////////////////////////////////////////////////
+
+               //      Logical Not - !
+               template <typename _Facade, typename _ValueType>
+               class logical_not_adapter
+               {
+               protected:
+                       virtual _ValueType logical_not() const =0;
+                       
+               public:
+                       _ValueType operator !() const {
+                               return logical_not();
+                       }
+               };
+               
+               /////////////////////////////////////////////////////////////////////////
+       }
+       
+       using namespace adapter;
+}
+
+#endif//__SFJP_ROAST__adapter__operator__logical__and_HPP__
index 5d9d9a6..f3f3e27 100644 (file)
@@ -6,8 +6,10 @@
 #define __SFJP_ROAST__adapter__operator__operator_adapter_HPP__
 
 #include "roast/_common.hpp"
+
 #include "roast/adapter/operator/arith/arith.hpp"
 #include "roast/adapter/operator/bit/bitwise.hpp"
+#include "roast/adapter/operator/logical/logical.hpp"
 
 #include "roast/adapter/operator/indirection.hpp"
 #include "roast/adapter/operator/arrow.hpp"