Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #pragma once
  2.  
  3.  
  4. // для передачи кодов клавишь в качестве результата функции
  5. extern int key_down_oem_key;                    // [NS]
  6. extern unsigned char key_down_kbdpc_key;        // [NS] в формате 256 байт буфера
  7. extern int key_down_v_key;                      // [NS]
  8.  
  9.  
  10.  
  11. //=============================================================================
  12. class TCriticalSection
  13. {
  14.     CRITICAL_SECTION CritSect;
  15. public:
  16.     //-------------------------------------------------------------------------
  17.     TCriticalSection()
  18.     {
  19.         InitializeCriticalSection( &CritSect);
  20.     }
  21.     //-------------------------------------------------------------------------
  22.     ~TCriticalSection()
  23.     {
  24.         DeleteCriticalSection( &CritSect);
  25.     }
  26.     //-------------------------------------------------------------------------
  27.     void Lock()
  28.     {
  29.         EnterCriticalSection( &CritSect);
  30.     }
  31.     //-------------------------------------------------------------------------
  32.     void Unlock()
  33.     {
  34.         LeaveCriticalSection( &CritSect);
  35.     }
  36.     //-------------------------------------------------------------------------
  37. };
  38. //=============================================================================
  39.  
  40.  
  41.  
  42. //=============================================================================
  43. class TEvent
  44. {
  45.     HANDLE Event;
  46. public:
  47.     //-------------------------------------------------------------------------
  48.     TEvent( BOOL InitState)
  49.     {
  50.         Event = CreateEvent( nullptr, TRUE, InitState, nullptr);
  51.     }
  52.     //-------------------------------------------------------------------------
  53.     ~TEvent()
  54.     {
  55.         CloseHandle( Event);
  56.     }
  57.     //-------------------------------------------------------------------------
  58.     void Set()
  59.     {
  60.         SetEvent( Event);
  61.     }
  62.     //-------------------------------------------------------------------------
  63.     void Reset()
  64.     {
  65.         ResetEvent( Event);
  66.     }
  67.     //-------------------------------------------------------------------------
  68.     bool Wait( DWORD TimeOut = INFINITE)
  69.     {
  70.         return WaitForSingleObject( Event, TimeOut) == WAIT_OBJECT_0;
  71.     }
  72.     //-------------------------------------------------------------------------
  73. };
  74. //=============================================================================
  75.  
  76.  
  77.  
  78. //=============================================================================
  79. #define VK_ALT VK_MENU
  80. //-------------------------------------------------------------------------
  81. #define WORD4(a,b,c,d)  (((unsigned)(a)) | (((unsigned)(b)) << 8) | (((unsigned)(c)) << 16) | (((unsigned)(d)) << 24))
  82. //-------------------------------------------------------------------------
  83. #define WORD2(a,b)      ((a) | ((b)<<8))
  84. //-------------------------------------------------------------------------
  85. #define align_by(a,b)   (((ULONG_PTR)(a) + ((b)-1)) & ~((b)-1))
  86. //-------------------------------------------------------------------------
  87. #define hexdigit(a)     ((a) < 'A' ? (a)-'0' : toupper(a)-'A'+10)
  88. //=============================================================================
  89.  
  90. extern const char nop;
  91. extern const char * const nil;
  92.  
  93. void eat();
  94. void trim( char *dst);
  95. void errmsg( const char *err, const char *str = nullptr);
  96. void err_printf( const char *format, ...);
  97. void err_win32( DWORD errcode = 0xFFFFFFFF);
  98. void color( int ink = CONSCLR_DEFAULT);
  99. int ishex( char c);
  100. unsigned char hex( char p);
  101. unsigned char hex( const char *p);
  102.  
  103. void __declspec( noreturn) errexit( const char *err, const char *str = nullptr);
  104. unsigned process_msgs();
  105. bool dispatch( action *table);
  106. bool dispatch_more( action *table);
  107.  
  108. void fillCpuString( char *dst);
  109. unsigned cpuid( unsigned _eax, int ext);
  110. unsigned __int64 GetCPUFrequency();
  111.  
  112. //=============================================================================
  113. static forceinline u64 rdtsc()
  114. {
  115.     return __rdtsc();
  116. }
  117. //=============================================================================м
  118. bool wcmatch( char *string, char *wc);
  119. void dump1( BYTE *p, unsigned sz);
  120. //=============================================================================ы
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129. // [NS]
  130.     void string_comment_trimmer(char *string_for_comment_trim);
  131.