/* libzz
 *
 * This program is distributed under the GNU General Public License, version 2.
 * A copy of this license is included with this source.
 *
 * Copyright 2000-2006, Toni Thomsson <toni@tonjac.org> 
*/

#ifndef zz_mutex_h
#define zz_mutex_h

#include <zz_export.h>

/**
    Base for all mutex

    @author Toni Thomsson, toni@tonjac.org  
*/
class ZZ_API CzzMutex 
{

public:
    
    /** Mutex */
    CzzMutex();
        
    /** Copy construktor */
    CzzMutex( const CzzMutex &right );

    virtual ~CzzMutex();

    /** Enter critical section, sets the lock */
    virtual bool Acquire( bool block ) = 0;

    /** Leave critical section, unlock */
    virtual void Release() = 0;
};

#endif