12#include <unordered_map>
27#define NX_PLATFORM_WINDOW 1
28#define NX_PLATFORM_LINUX 2
31 #define NX_PLATFORM NX_PLATFORM_WINDOW
33 #define NX_PLATFORM NX_PLATFORM_LINUX
63template <
class K,
class V>
64using Map = std::map<K, V>;
90constexpr size_t operator""_kb(
unsigned long long int n) {
return n * 1024; }
144 virtual bool write_all(
const void* buffer,
size_t bytes);
164 const uint8_t* buffer_;
169using TimePoint = std::chrono::time_point<std::chrono::system_clock>;
193 using std_ms = std::chrono::milliseconds;
194 return std::chrono::duration_cast<std_ms>(t_new - t_old).count();
199 using std_ms = std::chrono::milliseconds;
200 return std::chrono::duration_cast<std_ms>(t.time_since_epoch()).count();
246inline bool is_pow2(T x) {
return ((x - 1) & x) == 0; }
262#define NX_PANIC(msg, ...) nx::panic_fmt(msg, ##__VA_ARGS__)
264#define NX_ASSERT(cond, msg, ...) \
266 NX_PANIC(msg " file:%s line:%d", ##__VA_ARGS__, __FILE__, __LINE__); \
277#define NX_GET_BIT(x, bit) (((x) >> (bit)) & 1)
278#define NX_SET_BIT(x, bit) ((x) | (1 << (bit)))
279#define NX_CLEAR_BIT(x, bit) ((x) & (~(1 << (bit))))
289#define NX_GET_BIT_BOOL(x, bit) (NX_GET_BIT((x), (bit)) == 1)
290#define NX_SET_BIT_BOOL(x, bit, value) \
291 ((value) ? NX_SET_BIT((x), (bit)) : NX_CLEAR_BIT((x), (bit)))
MemoryFile(const uint8_t *buffer, size_t buf_len)
ReadResult read(void *buffer, size_t bytes) override
virtual ReadResult read(void *buffer, size_t bytes)=0
bool read_exact(void *buffer, size_t bytes)
用于被private继承, 子类将不可被Copy
Definition type.h:75
Uncopyable & operator=(Uncopyable &&)=default
Uncopyable(const Uncopyable &)=delete
Uncopyable(Uncopyable &&)=default
Uncopyable & operator=(const Uncopyable &)=delete
virtual WriteResult write(const void *buffer, size_t bytes)=0
virtual bool write_all(const void *buffer, size_t bytes)
root namespace
Definition alias.h:9
uint8_t ceil_pow2(uint8_t n)
Definition type.h:203
std::list< T > List
Definition type.h:70
OpenMode
Open Mode
Definition type.h:95
TimeDuration time_diff(const TimePoint &t_old, const TimePoint &t_new)
calculate time duration before old and now
Definition type.h:191
std::optional< T > Optional
Definition type.h:44
NX_API ByteBuffer zlib_compress(const uint8_t *buf, size_t len)
std::vector< uint8_t > ByteBuffer
byte array
Definition type.h:41
std::queue< T > Queue
Definition type.h:50
Variant< IO_Error, ByteBuffer > ReadAllResult
Definition type.h:125
IO_Error
IO Error
Definition type.h:116
NX_API bool pipe(Read &reader, Write &writer)
pipe data from reader to writer
std::string String
Definition type.h:52
int64_t TimeDuration
milliseconds
Definition type.h:174
NX_API void panic_fmt(const char *fmt,...)
std::variant< T... > Variant
Definition type.h:55
NX_API ByteBuffer zlib_uncompress(const uint8_t *buf, size_t len)
std::map< K, V > Map
Definition type.h:64
TimePoint time_now()
get current clock time
Definition type.h:181
std::chrono::time_point< std::chrono::system_clock > TimePoint
Definition type.h:169
std::unique_ptr< T > UniquePtr
Definition type.h:58
TimeDuration time_diff_epoch(const TimePoint &t)
Definition type.h:197
std::function< T > Function
Definition type.h:67
Variant< IO_Error, EndOfFile, IO_Success > ReadResult
Result of a read operation
Definition type.h:124
bool is_pow2(T x)
Definition type.h:246
Variant< IO_Error, IO_Success > WriteResult
Result of a write operation
Definition type.h:138
std::vector< T > Vector
Definition type.h:47
std::shared_ptr< T > SharedPtr
Definition type.h:61
End of file, a Unit struct.
Definition type.h:110
Result of successful io operation
Definition type.h:103
size_t bytes
Definition type.h:104