--- /dev/null
+// 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