--- /dev/null
+// Roast+ License
+
+/*
+*/
+#ifndef __SFJP_ROAST__adapter__operator__bit__not_HPP__
+#define __SFJP_ROAST__adapter__operator__bit__not_HPP__
+
+namespace roast
+{
+ namespace adapter
+ {
+ /////////////////////////////////////////////////////////////////////////
+
+ template <typename _ValueType>
+ class bit_not_adapter
+ {
+ protected:
+ virtual _ValueType bit_not() const =0;
+
+ public:
+ _ValueType operator ~() const {
+ return bit_not();
+ }
+ };
+
+ /////////////////////////////////////////////////////////////////////////
+
+ template <typename _Facade, typename _ValueType>
+ class value_bit_not_adapter : public bit_not_adapter<_ValueType>
+ {
+ private:
+ _ValueType& m_value;
+ protected:
+ _ValueType bit_not() const {
+ return ~m_value;
+ }
+ public:
+ value_bit_not_adapter(_ValueType& value_ref) : m_value(value_ref) {}
+ };
+
+ /////////////////////////////////////////////////////////////////////////
+ }
+
+ using namespace adapter;
+}
+
+#endif//__SFJP_ROAST__adapter__operator__bit__not_HPP__