37 lines
719 B
C
37 lines
719 B
C
|
#ifndef NULLSOFT_WINAMP_FLAG_TRACKER_HEADER
|
||
|
#define NULLSOFT_WINAMP_FLAG_TRACKER_HEADER
|
||
|
|
||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include <wtypes.h>
|
||
|
|
||
|
class FlagTracker
|
||
|
{
|
||
|
public:
|
||
|
typedef void (CALLBACK *EventHandler)(UINT /*nMarked*/, FlagTracker* /*instance*/, ULONG_PTR /*user*/);
|
||
|
|
||
|
public:
|
||
|
FlagTracker();
|
||
|
~FlagTracker();
|
||
|
public:
|
||
|
void Set(UINT nFlags, UINT nMask);
|
||
|
UINT Get();
|
||
|
void Mark(UINT nFlags);
|
||
|
|
||
|
ULONG BeginUpdate();
|
||
|
ULONG EndUpdate();
|
||
|
|
||
|
void SetEventHandler(EventHandler handler, ULONG_PTR user);
|
||
|
|
||
|
protected:
|
||
|
UINT flags;
|
||
|
UINT cache;
|
||
|
ULONG updateRef;
|
||
|
CRITICAL_SECTION lock;
|
||
|
EventHandler eventHandler;
|
||
|
ULONG_PTR eventParam;
|
||
|
};
|
||
|
|
||
|
#endif //NULLSOFT_WINAMP_MODIFY_TRACKER_HEADER
|