upload codebase

Signed-off-by: Double Sine <xiao_ai_yu@live.cn>
This commit is contained in:
Double Sine
2022-02-14 15:47:41 +08:00
commit 9017721a5c
43 changed files with 4615 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
#pragma once
namespace nkg::resource_traits {
template<typename element_t>
struct cxx_dynamic_array_traits {
using handle_t = element_t*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
delete[] handle;
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
namespace nkg::resource_traits {
template<typename object_t>
struct cxx_object_traits {
using handle_t = object_t*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
delete handle;
}
};
}

View File

@@ -0,0 +1,20 @@
#pragma once
#include <keystone/keystone.h>
namespace nkg::resource_traits::keystone {
struct keystone_alloc {
using handle_t = unsigned char*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) noexcept {
ks_free(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <keystone/keystone.h>
namespace nkg::resource_traits::keystone {
struct keystone_handle {
using handle_t = ks_engine*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
ks_close(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <openssl/bn.h>
namespace nkg::resource_traits::openssl {
struct bignum {
using handle_t = BIGNUM*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) noexcept {
BN_free(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <openssl/bio.h>
namespace nkg::resource_traits::openssl {
struct bio {
using handle_t = BIO*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) noexcept {
BIO_free(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <openssl/bio.h>
namespace nkg::resource_traits::openssl {
struct bio_chain {
using handle_t = BIO*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) noexcept {
BIO_free_all(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <openssl/rsa.h>
namespace nkg::resource_traits::openssl {
struct rsa {
using handle_t = RSA*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) noexcept {
RSA_free(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <unicorn/unicorn.h>
namespace nkg::resource_traits::unicorn {
struct unicorn_alloc {
using handle_t = void*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
uc_free(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <unicorn/unicorn.h>
namespace nkg::resource_traits::unicorn {
struct unicorn_handle {
using handle_t = uc_engine*;
static constexpr handle_t invalid_value = nullptr;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
uc_close(handle);
}
};
}

View File

@@ -0,0 +1,21 @@
#pragma once
#include <unistd.h>
namespace nkg::resource_traits::unix_os {
struct file_descriptor {
using handle_t = int;
static constexpr handle_t invalid_value = -1;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
static void release(const handle_t& handle) {
close(handle);
}
};
}

View File

@@ -0,0 +1,19 @@
#pragma once
#include <errno.h>
#include <unistd.h>
#include <sys/mman.h>
namespace nkg::resource_traits::unix_os {
struct map_view {
using handle_t = void*;
static inline const handle_t invalid_value = MAP_FAILED;
[[nodiscard]]
static bool is_valid(const handle_t& handle) noexcept {
return handle != invalid_value;
}
};
}