From f72851a80c90960822c5498b717fac738a92971b Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Wed, 28 Jun 2023 12:58:24 +0200 Subject: example3 supports BUILD_NATIVE Signed-off-by: Toni Uhlig --- examples/dpp-example-cplusplus-EASTL.cpp | 85 +++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 19 deletions(-) (limited to 'examples/dpp-example-cplusplus-EASTL.cpp') diff --git a/examples/dpp-example-cplusplus-EASTL.cpp b/examples/dpp-example-cplusplus-EASTL.cpp index b57815d..a92d4ed 100644 --- a/examples/dpp-example-cplusplus-EASTL.cpp +++ b/examples/dpp-example-cplusplus-EASTL.cpp @@ -1,3 +1,4 @@ +#ifndef BUILD_USERMODE #include #include @@ -15,55 +16,89 @@ #include #include +using namespace eastl; +#else +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define DbgPrint printf + +using namespace std; +using boost::scoped_ptr; + +typedef struct +{ +} DRIVER_OBJECT; +typedef DRIVER_OBJECT * PDRIVER_OBJECT; +typedef struct +{ +} UNICODE_STRING; +typedef UNICODE_STRING * PUNICODE_STRING; +typedef int NTSTATUS; +#endif + // C&P from: https://raw.githubusercontent.com/sidyhe/dxx/ed06aba3b91fe8e101d08c33c26ba73db96acef0/README.md void stl_test() { - eastl::make_unique(); - eastl::make_shared(); - eastl::scoped_ptr dptr(new double(3.6)); + make_unique(); + make_shared(); + scoped_ptr dptr(new double(3.6)); - eastl::set set_test; + set set_test; set_test.insert(1); set_test.insert(3); set_test.insert(5); set_test.erase(1); - eastl::map map_test; + map map_test; map_test[0] = 1; map_test[10] = 11; map_test[20] = 12; map_test.erase(11); - eastl::vector vec_test; + vector vec_test; vec_test.push_back(2); vec_test.push_back(3); vec_test.push_back(1); - eastl::stable_sort(vec_test.begin(), vec_test.end(), eastl::less()); + stable_sort(vec_test.begin(), vec_test.end(), less()); for (auto e : vec_test) { DbgPrint("%d\n", e); } - eastl::string s; + string s; s = "This a string"; s.append(" "); s.append("any"); DbgPrint("%s\n", s.c_str()); - eastl::wstring ws; + wstring ws; ws = L"wide string"; ws.clear(); - eastl::unordered_set us_test; + unordered_set us_test; us_test.insert(333); - eastl::unordered_map um_test; - um_test.insert(eastl::make_pair(6.6, "9.9")); + unordered_map um_test; + um_test.insert(make_pair(6.6, "9.9")); } void more_stl_test() { - eastl::hash_map hm; +#ifndef BUILD_USERMODE + hash_map hm; hm[0] = "test1"; hm[10] = "test2"; @@ -72,22 +107,23 @@ void more_stl_test() { DbgPrint("%s\n", s.second.c_str()); } +#endif - eastl::uniform_int_distribution uid(1, UINT32_MAX); + uniform_int_distribution uid(1, UINT32_MAX); DbgPrint("PRNG: %u\n", uid); auto lambda = [] { DbgPrint("Hello lambda!\n"); }; - eastl::function fn = lambda; + function fn = lambda; fn(); auto lambda2 = [](int n) { DbgPrint("Hello lambda2, %u!\n", n); return n; }; - eastl::function fn2 = lambda2; + function fn2 = lambda2; fn2(1337); - eastl::vector fill_me; + vector fill_me; for (auto i = UINT16_MAX; i > 0; --i) { fill_me.push_back(i); @@ -97,7 +133,7 @@ void more_stl_test() extern "C" { - +#ifndef BUILD_USERMODE DRIVER_INITIALIZE DriverEntry; DRIVER_UNLOAD DriverUnload; @@ -114,10 +150,21 @@ extern "C" return STATUS_SUCCESS; } - VOID DriverUnload(PDRIVER_OBJECT DriverObject) + void DriverUnload(PDRIVER_OBJECT DriverObject) { (void)DriverObject; DbgPrint("%s\n", "Bye ring0!"); } +#else + int main() + { + DbgPrint("%s\n", "Hello user!"); + + stl_test(); + more_stl_test(); + + return 0; + } +#endif } -- cgit v1.2.3