summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc40/afxmt.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/mfc40/afxmt.h255
1 files changed, 255 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc40/afxmt.h b/public/sdk/inc/mfc40/afxmt.h
new file mode 100644
index 000000000..d12d79aba
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxmt.h
@@ -0,0 +1,255 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXMT_H__
+#define __AFXMT_H__
+
+#ifdef _MAC
+ #error Multithreaded classes not supported in this library variant.
+#endif
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXMT - MFC Multithreaded Extensions (Syncronization Objects)
+
+// Classes declared in this file
+
+//CObject
+ class CSyncObject;
+ class CSemaphore;
+ class CMutex;
+ class CEvent;
+ class CCriticalSection;
+
+class CSingleLock;
+class CMultiLock;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic synchronization object
+
+class CSyncObject : public CObject
+{
+ DECLARE_DYNAMIC(CSyncObject)
+
+// Constructor
+public:
+ CSyncObject(LPCTSTR pstrName);
+
+// Attributes
+public:
+ operator HANDLE() const;
+ HANDLE m_hObject;
+
+// Operations
+ virtual BOOL Lock(DWORD dwTimeout = INFINITE);
+ virtual BOOL Unlock() = 0;
+ virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)
+ { return TRUE; }
+
+// Implementation
+public:
+ virtual ~CSyncObject();
+#ifdef _DEBUG
+ CString m_strName;
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ friend class CSingleLock;
+ friend class CMultiLock;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSemaphore
+
+class CSemaphore : public CSyncObject
+{
+ DECLARE_DYNAMIC(CSemaphore)
+
+// Constructor
+public:
+ CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1,
+ LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL);
+
+// Implementation
+public:
+ virtual ~CSemaphore();
+ virtual BOOL Unlock();
+ virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMutex
+
+class CMutex : public CSyncObject
+{
+ DECLARE_DYNAMIC(CMutex)
+
+// Constructor
+public:
+ CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL,
+ LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Implementation
+public:
+ virtual ~CMutex();
+ BOOL Unlock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEvent
+
+class CEvent : public CSyncObject
+{
+ DECLARE_DYNAMIC(CEvent)
+
+// Constructor
+public:
+ CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE,
+ LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Operations
+public:
+ BOOL SetEvent();
+ BOOL PulseEvent();
+ BOOL ResetEvent();
+ BOOL Unlock();
+
+// Implementation
+public:
+ virtual ~CEvent();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CCriticalSection
+
+class CCriticalSection : public CSyncObject
+{
+ DECLARE_DYNAMIC(CCriticalSection)
+
+// Constructor
+public:
+ CCriticalSection();
+
+// Attributes
+public:
+ operator CRITICAL_SECTION*();
+ CRITICAL_SECTION m_sect;
+
+// Operations
+public:
+ BOOL Unlock();
+ BOOL Lock();
+ BOOL Lock(DWORD dwTimeout);
+
+// Implementation
+public:
+ virtual ~CCriticalSection();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSingleLock
+
+class CSingleLock
+{
+// Constructors
+public:
+ CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ BOOL Lock(DWORD dwTimeOut = INFINITE);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked();
+
+// Implementation
+public:
+ ~CSingleLock();
+
+protected:
+ CSyncObject* m_pObject;
+ HANDLE m_hObject;
+ BOOL m_bAcquired;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMultiLock
+
+class CMultiLock
+{
+// Constructor
+public:
+ CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE,
+ DWORD dwWakeMask = 0);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked(DWORD dwItem);
+
+// Implementation
+public:
+ ~CMultiLock();
+
+protected:
+ HANDLE m_hPreallocated[8];
+ BOOL m_bPreallocated[8];
+
+ CSyncObject* const * m_ppObjectArray;
+ HANDLE* m_pHandleArray;
+ BOOL* m_bLockedArray;
+ DWORD m_dwCount;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXMT_INLINE inline
+#include <afxmt.inl>
+#undef _AFXMT_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXMT_H__
+
+/////////////////////////////////////////////////////////////////////////////