OSDN Git Service

add dist
[rec10/rec10-git.git] / dist / trunk / b25-remote / TsUtilClass.cpp
diff --git a/dist/trunk/b25-remote/TsUtilClass.cpp b/dist/trunk/b25-remote/TsUtilClass.cpp
new file mode 100755 (executable)
index 0000000..ec4c298
--- /dev/null
@@ -0,0 +1,88 @@
+// TsUtilClass.cpp: TS\83\86\81[\83e\83B\83\8a\83e\83B\81[\83N\83\89\83X\82Ì\83C\83\93\83v\83\8a\83\81\83\93\83e\81[\83V\83\87\83\93\r
+//\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+#include "TsUtilClass.h"\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// CDynamicReferenceable \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+CDynamicReferenceable::CDynamicReferenceable()\r
+       : m_dwRefCount(0UL)\r
+{\r
+\r
+}\r
+\r
+CDynamicReferenceable::~CDynamicReferenceable()\r
+{\r
+\r
+}\r
+\r
+void CDynamicReferenceable::AddRef(void)\r
+{\r
+       // \8eQ\8fÆ\83J\83E\83\93\83g\83C\83\93\83N\83\8a\83\81\83\93\83g\r
+       m_dwRefCount++;\r
+}\r
+\r
+void CDynamicReferenceable::ReleaseRef(void)\r
+{\r
+       // \8eQ\8fÆ\83J\83E\83\93\83g\83f\83N\83\8a\83\81\83\93\83g\r
+       if(m_dwRefCount){\r
+               // \83C\83\93\83X\83^\83\93\83X\8aJ\95ú\r
+               if(!(--m_dwRefCount))delete this;\r
+               }\r
+#ifdef _DEBUG\r
+       else{\r
+               ::DebugBreak();\r
+               }\r
+#endif\r
+}\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// CCriticalLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+CCriticalLock::CCriticalLock()\r
+{\r
+       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8f\89\8aú\89»\r
+       pthread_mutex_init(&m_CriticalSection, NULL);\r
+}\r
+\r
+CCriticalLock::~CCriticalLock()\r
+{\r
+       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8dí\8f\9c\r
+       pthread_mutex_destroy(&m_CriticalSection);\r
+}\r
+\r
+void CCriticalLock::Lock(void)\r
+{\r
+       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8eæ\93¾\r
+       pthread_mutex_lock(&m_CriticalSection);\r
+}\r
+\r
+void CCriticalLock::Unlock(void)\r
+{\r
+       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8aJ\95ú\r
+       pthread_mutex_unlock(&m_CriticalSection);\r
+}\r
+       \r
+       \r
+//////////////////////////////////////////////////////////////////////\r
+// CBlockLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
+//////////////////////////////////////////////////////////////////////\r
+       \r
+CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)\r
+       : m_pCriticalLock(pCriticalLock)\r
+{\r
+       // \83\8d\83b\83N\8eæ\93¾\r
+       m_pCriticalLock->Lock();\r
+}\r
+\r
+CBlockLock::~CBlockLock()\r
+{\r
+       // \83\8d\83b\83N\8aJ\95ú\r
+       m_pCriticalLock->Unlock();\r
+}\r