Xonotic
unsafe.qh
Go to the documentation of this file.
1
#pragma once
2
3
#define reinterpret_cast(T, it) _unsafe_cast_##T(0, it)
4
#define X(T) \
5
T _unsafe_cast_##T(int dummy, ...) { return ...(0, T); } \
6
USING(T##_fld, .T); T##_fld _unsafe_cast_##T##_fld(int dummy, ...) { return ...(0, T##_fld); }
7
X
(
bool
)
8
X
(
int
)
9
X
(
float
)
10
X
(
vector
)
11
X
(
entity
)
12
X
(
string
)
13
USING
(rawfunc,
float
(...));
14
X
(rawfunc)
15
#undef X
16
17
#define _strid(s) ITOF(reinterpret_cast(int, s))
18
#define strid(s) stof(sprintf("%i", s))
19
20
.int _unsafe_fld1,
_unsafe_fld2
;
21
int
INTEGER_ONE
;
22
23
#define FTOI(f) ((f) * INTEGER_ONE)
24
#define ITOF(i) ((i) / INTEGER_ONE)
25
26
STATIC_INIT
(INTEGER_ONE)
27
{
28
INTEGER_ONE =
reinterpret_cast
(
int
, _unsafe_fld2) -
reinterpret_cast
(
int
, _unsafe_fld1);
29
}
30
31
#define ARRAY_INDEX(T, arr, idx) (reinterpret_cast(T##_fld, reinterpret_cast(int, arr[0]) + FTOI(idx)))
entity
entity() spawn
INTEGER_ONE
int INTEGER_ONE
Definition:
unsafe.qh:21
STATIC_INIT
STATIC_INIT(INTEGER_ONE)
Definition:
unsafe.qh:26
vector
vector(float skel, float bonenum) _skel_get_boneabs_hidden
_unsafe_fld2
_unsafe_fld2
Definition:
unsafe.qh:20
X
#define X(T)
Definition:
unsafe.qh:4
USING
#define USING(name, T)
Definition:
_all.inc:72
reinterpret_cast
#define reinterpret_cast(T, it)
Definition:
unsafe.qh:3
lib
unsafe.qh
Generated on Thu Mar 17 2022 17:26:29 for Xonotic by
1.8.13