1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#pragma once
#include <inttypes.h>
#include <string>
#include <memory>
#define xors( s ) s
#define NAMESPACE_REGION( x ) namespace x {
#define END_REGION }
extern int TIME_TO_TICKS( float dt );
extern float TICKS_TO_TIME( int tick );
extern float TICK_INTERVAL( );
//WEE WOO WEE WOO ITS THE DWORD POLICE
using ulong_t = unsigned long;
using uword_t = unsigned short;
class IClientEntity;
class CTraceFilter;
class CGameTrace;
class vec3_t;
class vec2_t;
NAMESPACE_REGION( util )
typedef std::unique_ptr< void, void( ) > unique_handle;
template < typename t >
struct reverse_iterable {
reverse_iterable( t&& it ) :
iterable( it ) { }
t& iterable;
inline auto begin( ) {
return std::rbegin( iterable );
}
inline auto end( ) {
return std::rend( iterable );
}
};
template< typename t >
reverse_iterable< t >
reverse_iterator( t&& iter ) {
return reverse_iterable< t >{ iter };
}
template < typename fn > __forceinline fn get_vfunc( void* classbase, int index ) {
if( !classbase ) return fn{ };
return ( fn )( *( uintptr_t** )classbase )[ index ];
}
template < size_t index, typename ret, class ... args_ >
__forceinline ret get_vfunc( void* thisptr, args_... args ) {
using fn = ret( __thiscall* )( void*, args_... );
auto fn_ptr = ( fn )( *( uintptr_t** )thisptr )[ index ];
return fn_ptr( thisptr, args... );
}
__forceinline std::string unicode_to_ascii( const std::wstring& unicode ) {
std::string ascii_str( unicode.begin( ), unicode.end( ) );
return ascii_str;
}
__forceinline std::wstring ascii_to_unicode( const std::string& ascii ) {
std::wstring unicode_str( ascii.begin( ), ascii.end( ) );
return unicode_str;
}
template < typename integer >
__forceinline auto to_hex_str( const integer& w,
size_t hex_len = sizeof( integer ) << 1 ) {
constexpr char* hex_digits = xors( "0123456789abcdef" );
std::string rc( hex_len, 0 );
for( size_t i{ }, j{ ( hex_len - 1 ) * 4 }; i < hex_len; ++i, j -= 4 )
rc[ i ] = hex_digits[ ( w >> j ) & 0x0f ];
return rc;
}
END_REGION
|