OSDN Git Service

memory/delay_ref.hpp 実装してみた
authorMyun2 <myun2@nwhite.info>
Wed, 23 May 2012 10:28:25 +0000 (19:28 +0900)
committerMyun2 <myun2@nwhite.info>
Wed, 23 May 2012 10:28:25 +0000 (19:28 +0900)
roast/include/roast/memory/delay_ref.hpp

index 29c91ec..705c20e 100644 (file)
@@ -6,9 +6,33 @@
 #ifndef __SFJP_ROAST__memory__delay_ref_HPP__
 #define __SFJP_ROAST__memory__delay_ref_HPP__
 
+#include <stdio.h>
+
 namespace roast
 {
+       ////////////////////////////////////////////////////////////////////////////////////
+
+       template <typename T>
+       class delay_ref
+       {
+       private:
+               T* m_ptr;
+       public:
+               delay_ref() : m_ptr(NULL) {}
+               delay_ref(T& ref) : m_ptr(&ref) {}
+               delay_ref(T* ptr) : m_ptr(ptr) {}
+               
+               operator T& () { return *m_ptr; }
+               operator const T& () const { return *m_ptr; }
+               T& get() { return *m_ptr; }
+               const T& get() const { return *m_ptr; }
+               
+               void set(T& ref){ m_ptr = &ref; }
+               delay_ref operator = (T& ref){ m_ptr = &ref; return *this; }
+               delay_ref operator = (delay_ref& from){ m_ptr = from.m_ptr; return *this; }
+       };
        
+       ////////////////////////////////////////////////////////////////////////////////////
 }
 
 #endif//__SFJP_ROAST__memory__delay_ref_HPP__