// Common, group WinWrap
// see CW Critical Sections
// Copyright Alexander Liss

#include "critical.h"



CriticalSection::CriticalSection() 
{
    ::InitializeCriticalSection( &critical_section);
}


CriticalSection::~CriticalSection() 
{
    ::DeleteCriticalSection( &critical_section);
}


void CriticalSection::enter() 
{
    ::EnterCriticalSection( &critical_section);
}


void CriticalSection::leave() 
{
    ::LeaveCriticalSection( &critical_section);
}


#if(_WIN32_WINNT >= 0x0400)
BOOL CriticalSection::try_enter() 
{
    return ::TryEnterCriticalSection( &critical_section);
}
#endif



CRITICAL_SECTION *CriticalSection::get() 
{
    return &critical_section;
}