Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
716 | lvd | 1 | #pragma once |
2 | |||
3 | class TCriticalSection |
||
4 | { |
||
5 | CRITICAL_SECTION CritSect; |
||
6 | public: |
||
7 | TCriticalSection() { InitializeCriticalSection(&CritSect); } |
||
8 | ~TCriticalSection() { DeleteCriticalSection(&CritSect); } |
||
9 | void Lock() { EnterCriticalSection(&CritSect); } |
||
10 | void Unlock() { LeaveCriticalSection(&CritSect); } |
||
11 | }; |
||
12 | |||
13 | class TEvent |
||
14 | { |
||
15 | HANDLE Event; |
||
16 | public: |
||
17 | TEvent(BOOL InitState) { Event = CreateEvent(0, TRUE, InitState, 0); } |
||
18 | ~TEvent() { CloseHandle(Event); } |
||
19 | void Set() { SetEvent(Event); } |
||
20 | void Reset() { ResetEvent(Event); } |
||
21 | bool Wait(DWORD TimeOut = INFINITE) { return WaitForSingleObject(Event, TimeOut) == WAIT_OBJECT_0; } |
||
22 | }; |
||
23 | |||
24 | |||
25 | #define VK_ALT VK_MENU |
||
26 | |||
27 | #define WORD4(a,b,c,d) (((unsigned)(a)) | (((unsigned)(b)) << 8) | (((unsigned)(c)) << 16) | (((unsigned)(d)) << 24)) |
||
28 | #define WORD2(a,b) ((a) | ((b)<<8)) |
||
29 | #define align_by(a,b) (((ULONG_PTR)(a) + ((b)-1)) & ~((b)-1)) |
||
30 | #define hexdigit(a) ((a) < 'A' ? (a)-'0' : toupper(a)-'A'+10) |
||
31 | |||
32 | extern const char nop; |
||
33 | extern const char * const nil; |
||
34 | |||
35 | void eat(); |
||
36 | void trim(char *dst); |
||
37 | void errmsg(const char *err, const char *str = 0); |
||
38 | void err_printf(const char *format, ...); |
||
39 | void err_win32(DWORD errcode = 0xFFFFFFFF); |
||
40 | void color(int ink = CONSCLR_DEFAULT); |
||
41 | int ishex(char c); |
||
42 | unsigned char hex(char p); |
||
43 | unsigned char hex(const char *p); |
||
44 | |||
45 | void __declspec(noreturn) errexit(const char *err, const char *str = 0); |
||
46 | unsigned process_msgs(); |
||
47 | bool dispatch(action *table); |
||
48 | bool dispatch_more(action *table); |
||
49 | |||
50 | void fillCpuString(char *dst); |
||
51 | unsigned cpuid(unsigned _eax, int ext); |
||
52 | unsigned __int64 GetCPUFrequency(); |
||
53 | |||
54 | static forceinline u64 rdtsc() |
||
55 | { |
||
56 | return __rdtsc(); |
||
57 | } |
||
58 | |||
59 | bool wcmatch(char *string, char *wc); |