or.hxx

Go to the documentation of this file.
00001 #pragma once
00002 #ifndef OPENGM_OPERATION_OR_HXX
00003 #define OPENGM_OPERATION_OR_HXX
00004 
00005 namespace opengm {
00006 
00010 struct Or
00011 {
00013    template<class T>
00014       static T neutral()
00015          { return static_cast<T>(false); }
00016 
00018    template<class T>
00019       static void neutral(T& out)
00020          { out = static_cast<T>(false); }
00021 
00023    template<class T>
00024       static T ineutral()
00025          { return static_cast<T>(true); }
00026 
00028    template<class T>
00029       static void ineutral(T& out)
00030          { out = static_cast<T>(true); }
00031 
00033    template<class T1, class T2>
00034    static void op(const T1& in, T2& out)
00035       { out |= in; } 
00036       
00038    template<class T1,class T2,class T3>
00039    static void op(const T1& in1, const T2& in2, T3& out)
00040       { out = in1 | in2; }
00041    static void op(const bool& in1, const bool& in2, bool& out)
00042       { out = in1 || in2; }
00043 
00045    static bool hasbop()
00046       { return true; } 
00047 
00049    template<class T>
00050    static bool bop(const T& in1, const T& in2)
00051       { return (in1 | in2); } 
00052    static bool bop(const bool& in1, const bool& in2)
00053       { return (in1 || in2); }
00054 
00056    template<class T>
00057    static bool ibop(const T& in1, const T& in2)
00058       { return !(in1 | in2); }
00059    static bool ibop(const bool& in1, const bool& in2)
00060       { return !(in1 || in2); }
00061 };
00062 
00063 } // namespace opengm
00064 
00065 #endif // #ifndef OPENGM_OPERATION_OR_HXX
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Mon Jun 17 16:31:05 2013 for OpenGM by  doxygen 1.6.3