diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..d78c5bce --- /dev/null +++ b/.clang-format @@ -0,0 +1,49 @@ +--- +Language: Cpp +BasedOnStyle: LLVM + +# Indentation +IndentWidth: 4 +TabWidth: 4 +UseTab: Never +ContinuationIndentWidth: 4 +ConstructorInitializerIndentWidth: 4 +NamespaceIndentation: All +IndentCaseLabels: false +AccessModifierOffset: -4 + +# Column limit +ColumnLimit: 120 + +# Braces – Allman style (opening brace on its own line) +BreakBeforeBraces: Allman + +# Pointer and reference alignment +PointerAlignment: Left +ReferenceAlignment: Left + +# Spaces +SpaceBeforeParens: ControlStatements +SpaceAfterTemplateKeyword: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeRangeBasedForLoopColon: true + +# Constructor initializers +BreakConstructorInitializers: AfterColon +PackConstructorInitializers: Never + +# Template declarations +AlwaysBreakTemplateDeclarations: Yes + +# Short constructs +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortBlocksOnASingleLine: Empty + +# Include sorting – preserve existing order to avoid breaking build dependencies +SortIncludes: Never +... diff --git a/.editorconfig b/.editorconfig index 5a3dc022..bef40a2d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,5 +1,11 @@ root = true +[*.{cpp,hpp,h,c}] +indent_size = 4 +indent_style = space +tab_width = 4 +end_of_line = lf + [CMakeLists.txt] indent_size = 4 indent_style = space diff --git a/src/legacy/.clang-format b/src/legacy/.clang-format new file mode 100644 index 00000000..57fe428d --- /dev/null +++ b/src/legacy/.clang-format @@ -0,0 +1,3 @@ +--- +DisableFormat: true +... diff --git a/src/sampsharp-component/compat.cpp b/src/sampsharp-component/compat.cpp index 17b64591..a41b2390 100644 --- a/src/sampsharp-component/compat.cpp +++ b/src/sampsharp-component/compat.cpp @@ -4,7 +4,7 @@ #include -std::wstring widen_impl(std::string const &in) +std::wstring widen_impl(std::string const& in) { std::wstring out{}; @@ -12,16 +12,15 @@ std::wstring widen_impl(std::string const &in) { const int inSize = static_cast(in.size()); - const int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, - in.c_str(), inSize, nullptr, 0); - if ( len == 0 ) + const int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, in.c_str(), inSize, nullptr, 0); + if (len == 0) { throw std::runtime_error("Invalid character sequence."); } out.resize(len); - MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, - in.c_str(), inSize, out.data(), static_cast(out.size())); + MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, in.c_str(), inSize, out.data(), + static_cast(out.size())); } return out; diff --git a/src/sampsharp-component/compat.hpp b/src/sampsharp-component/compat.hpp index 3635db6e..f0c0ac27 100644 --- a/src/sampsharp-component/compat.hpp +++ b/src/sampsharp-component/compat.hpp @@ -5,21 +5,21 @@ #include #ifdef WIN32 -# define WINDOWS true +#define WINDOWS true #endif #ifdef WINDOWS -# include -# define STR(s) L ## s -# define widen(x) widen_impl(x) -# define PATH_SEP '\\' +#include +#define STR(s) L##s +#define widen(x) widen_impl(x) +#define PATH_SEP '\\' -std::wstring widen_impl(std::string const &in); +std::wstring widen_impl(std::string const& in); #else -# define STR(s) s -# define widen(x) x -# define PATH_SEP '/' +#define STR(s) s +#define widen(x) x +#define PATH_SEP '/' #endif using string_t = std::basic_string; diff --git a/src/sampsharp-component/crash-handler.cpp b/src/sampsharp-component/crash-handler.cpp index 408c7dc3..3f9760bf 100644 --- a/src/sampsharp-component/crash-handler.cpp +++ b/src/sampsharp-component/crash-handler.cpp @@ -25,21 +25,36 @@ namespace sampsharp::crash { switch (code) { - case EXCEPTION_ACCESS_VIOLATION: return "ACCESS_VIOLATION"; - case EXCEPTION_STACK_OVERFLOW: return "STACK_OVERFLOW"; - case EXCEPTION_ILLEGAL_INSTRUCTION: return "ILLEGAL_INSTRUCTION"; - case EXCEPTION_PRIV_INSTRUCTION: return "PRIV_INSTRUCTION"; - case EXCEPTION_INT_DIVIDE_BY_ZERO: return "INT_DIVIDE_BY_ZERO"; - case EXCEPTION_INT_OVERFLOW: return "INT_OVERFLOW"; - case EXCEPTION_FLT_DIVIDE_BY_ZERO: return "FLT_DIVIDE_BY_ZERO"; - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: return "ARRAY_BOUNDS_EXCEEDED"; - case EXCEPTION_DATATYPE_MISALIGNMENT: return "DATATYPE_MISALIGNMENT"; - case EXCEPTION_IN_PAGE_ERROR: return "IN_PAGE_ERROR"; - case 0xC0000374: return "HEAP_CORRUPTION"; - case 0xC0000409: return "FAST_FAIL/STACK_BUFFER_OVERRUN"; - case 0xE06D7363: return "C++ EXCEPTION"; - case 0xE0434352: return "CLR EXCEPTION"; - default: return "UNKNOWN"; + case EXCEPTION_ACCESS_VIOLATION: + return "ACCESS_VIOLATION"; + case EXCEPTION_STACK_OVERFLOW: + return "STACK_OVERFLOW"; + case EXCEPTION_ILLEGAL_INSTRUCTION: + return "ILLEGAL_INSTRUCTION"; + case EXCEPTION_PRIV_INSTRUCTION: + return "PRIV_INSTRUCTION"; + case EXCEPTION_INT_DIVIDE_BY_ZERO: + return "INT_DIVIDE_BY_ZERO"; + case EXCEPTION_INT_OVERFLOW: + return "INT_OVERFLOW"; + case EXCEPTION_FLT_DIVIDE_BY_ZERO: + return "FLT_DIVIDE_BY_ZERO"; + case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: + return "ARRAY_BOUNDS_EXCEEDED"; + case EXCEPTION_DATATYPE_MISALIGNMENT: + return "DATATYPE_MISALIGNMENT"; + case EXCEPTION_IN_PAGE_ERROR: + return "IN_PAGE_ERROR"; + case 0xC0000374: + return "HEAP_CORRUPTION"; + case 0xC0000409: + return "FAST_FAIL/STACK_BUFFER_OVERRUN"; + case 0xE06D7363: + return "C++ EXCEPTION"; + case 0xE0434352: + return "CLR EXCEPTION"; + default: + return "UNKNOWN"; } } @@ -68,9 +83,10 @@ namespace sampsharp::crash void logModuleFor(void* addr) { HMODULE mod = nullptr; - if (!GetModuleHandleExA( - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, - static_cast(addr), &mod) || !mod) + if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + static_cast(addr), &mod) || + !mod) { log(" %p ", addr); return; @@ -95,14 +111,12 @@ namespace sampsharp::crash const BOOL haveLine = SymGetLineFromAddr64(GetCurrentProcess(), pc, &lineDisp, &line); if (haveSym && haveLine) - log(" %p %s!%s+0x%llx (%s:%lu)", addr, modName, sym->Name, - static_cast(disp), line.FileName, line.LineNumber); + log(" %p %s!%s+0x%llx (%s:%lu)", addr, modName, sym->Name, static_cast(disp), + line.FileName, line.LineNumber); else if (haveSym) - log(" %p %s!%s+0x%llx", addr, modName, sym->Name, - static_cast(disp)); + log(" %p %s!%s+0x%llx", addr, modName, sym->Name, static_cast(disp)); else - log(" %p %s+0x%llx", addr, modName, - static_cast(offset)); + log(" %p %s+0x%llx", addr, modName, static_cast(offset)); } // Safely read 8 bytes from a possibly-bad address. Returns false on fault. @@ -159,8 +173,7 @@ namespace sampsharp::crash walkCtx.Rip = retAddr; walkCtx.Rsp += sizeof(DWORD64); recovered_pc = true; - log("[crash] recovered caller PC: 0x%llx", - static_cast(retAddr)); + log("[crash] recovered caller PC: 0x%llx", static_cast(retAddr)); } else { @@ -186,8 +199,8 @@ namespace sampsharp::crash int walked = 0; for (int i = 0; i < 64; ++i) { - if (!StackWalk64(machine, process, GetCurrentThread(), &frame, &walkCtx, - nullptr, SymFunctionTableAccess64, SymGetModuleBase64, nullptr)) + if (!StackWalk64(machine, process, GetCurrentThread(), &frame, &walkCtx, nullptr, + SymFunctionTableAccess64, SymGetModuleBase64, nullptr)) break; if (frame.AddrPC.Offset == 0) break; @@ -209,11 +222,13 @@ namespace sampsharp::crash DWORD64 val = 0; if (!safeRead64(rsp + i * sizeof(DWORD64), &val)) break; - if (val < 0x10000) continue; + if (val < 0x10000) + continue; HMODULE mod = nullptr; - if (GetModuleHandleExA( - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, - reinterpret_cast(val), &mod) && mod) + if (GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + reinterpret_cast(val), &mod) && + mod) { logModuleFor(reinterpret_cast(val)); ++found; @@ -229,13 +244,11 @@ namespace sampsharp::crash char path[MAX_PATH]; SYSTEMTIME st; GetLocalTime(&st); - snprintf(path, sizeof(path), - "sampsharp_crash_%04u%02u%02u_%02u%02u%02u_%lu.dmp", - st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, - GetCurrentProcessId()); + snprintf(path, sizeof(path), "sampsharp_crash_%04u%02u%02u_%02u%02u%02u_%lu.dmp", st.wYear, st.wMonth, + st.wDay, st.wHour, st.wMinute, st.wSecond, GetCurrentProcessId()); - const HANDLE file = CreateFileA(path, GENERIC_WRITE, 0, nullptr, - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + const HANDLE file = + CreateFileA(path, GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); if (file == INVALID_HANDLE_VALUE) { log("[crash] failed to create minidump file '%s' (err=%lu)", path, GetLastError()); @@ -247,15 +260,12 @@ namespace sampsharp::crash mei.ExceptionPointers = ep; mei.ClientPointers = FALSE; - const auto type = static_cast( - MiniDumpWithFullMemory | - MiniDumpWithHandleData | - MiniDumpWithThreadInfo | - MiniDumpWithUnloadedModules | - MiniDumpWithFullMemoryInfo); + const auto type = + static_cast(MiniDumpWithFullMemory | MiniDumpWithHandleData | MiniDumpWithThreadInfo | + MiniDumpWithUnloadedModules | MiniDumpWithFullMemoryInfo); - const BOOL ok = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), - file, type, ep ? &mei : nullptr, nullptr, nullptr); + const BOOL ok = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), file, type, + ep ? &mei : nullptr, nullptr, nullptr); CloseHandle(file); if (ok) @@ -274,8 +284,7 @@ namespace sampsharp::crash void* addr = ep->ExceptionRecord->ExceptionAddress; log("================ SampSharp CRASH ================"); - log("[crash] code=0x%08lX (%s) addr=%p thread=%lu pid=%lu", - code, codeName(code), addr, + log("[crash] code=0x%08lX (%s) addr=%p thread=%lu pid=%lu", code, codeName(code), addr, GetCurrentThreadId(), GetCurrentProcessId()); if (code == EXCEPTION_ACCESS_VIOLATION && ep->ExceptionRecord->NumberParameters >= 2) @@ -308,7 +317,7 @@ namespace sampsharp::crash } LPTOP_LEVEL_EXCEPTION_FILTER g_previous_filter = nullptr; - } + } // namespace void install(ICore* core) { @@ -326,13 +335,15 @@ namespace sampsharp::crash if (core) core->logLn(LogLevel::Message, "[SampSharp] crash handler installed"); } -} +} // namespace sampsharp::crash #else // !_WIN32 namespace sampsharp::crash { - void install(ICore*) {} -} + void install(ICore*) + { + } +} // namespace sampsharp::crash #endif diff --git a/src/sampsharp-component/crash-handler.hpp b/src/sampsharp-component/crash-handler.hpp index 35906073..2a2613a7 100644 --- a/src/sampsharp-component/crash-handler.hpp +++ b/src/sampsharp-component/crash-handler.hpp @@ -9,4 +9,4 @@ namespace sampsharp::crash // exception code/address, module, stack trace, and writes a minidump next // to the executable. No-op on other platforms. void install(ICore* core); -} +} // namespace sampsharp::crash diff --git a/src/sampsharp-component/managed-host.cpp b/src/sampsharp-component/managed-host.cpp index 60790feb..a31e4632 100644 --- a/src/sampsharp-component/managed-host.cpp +++ b/src/sampsharp-component/managed-host.cpp @@ -4,17 +4,17 @@ #include #if !defined WINDOWS -# include -# include -# define MAX_PATH PATH_MAX +#include +#include +#define MAX_PATH PATH_MAX #endif #define ERROR_MISSING_EXPORT 0x99999999 #define ERROR_UNKNOWN 0x99999998 -bool ManagedHost::initialize(const char ** error_ptr) +bool ManagedHost::initialize(const char** error_ptr) { - if(_isReady) + if (_isReady) { return true; } @@ -36,16 +36,17 @@ bool ManagedHost::isReady() const return _isReady; } -bool ManagedHost::loadFor(const StringView root_path, const StringView assembly_name, const char ** error_ptr) +bool ManagedHost::loadFor(const StringView root_path, const StringView assembly_name, const char** error_ptr) { auto root_path_ = root_path.to_string(); const auto assembly_name_ = assembly_name.to_string(); const char sep = root_path_.back(); - if(sep != '\\' && sep != '/') { + if (sep != '\\' && sep != '/') + { root_path_ = root_path_ + PATH_SEP; } - + const string_t config_path = widen(root_path_) + widen(assembly_name_) + STR(".runtimeconfig.json"); int rc = load_runtime(config_path.c_str(), &load_assembly_and_get_function_pointer_fptr); @@ -60,15 +61,16 @@ bool ManagedHost::loadFor(const StringView root_path, const StringView assembly_ *error_ptr = get_error(ERROR_UNKNOWN); return false; } - + assem_path_ = widen((root_path_ + assembly_name_ + ".dll")); - + return true; } -bool ManagedHost::getEntryPoint(const StringView entry_type_name, const StringView name, void ** delegate_ptr, const char ** error_ptr) const +bool ManagedHost::getEntryPoint(const StringView entry_type_name, const StringView name, void** delegate_ptr, + const char** error_ptr) const { - if(load_assembly_and_get_function_pointer_fptr == nullptr) + if (load_assembly_and_get_function_pointer_fptr == nullptr) { return false; } @@ -76,13 +78,9 @@ bool ManagedHost::getEntryPoint(const StringView entry_type_name, const StringVi const string_t entry_type_name_w = widen(entry_type_name.to_string()); const string_t name_w = widen(name.to_string()); - const int rc = load_assembly_and_get_function_pointer_fptr( - assem_path_.c_str(), - entry_type_name_w.c_str(), - name_w.c_str(), - UNMANAGEDCALLERSONLY_METHOD, - nullptr, - delegate_ptr); + const int rc = + load_assembly_and_get_function_pointer_fptr(assem_path_.c_str(), entry_type_name_w.c_str(), name_w.c_str(), + UNMANAGEDCALLERSONLY_METHOD, nullptr, delegate_ptr); if (rc) { @@ -93,39 +91,39 @@ bool ManagedHost::getEntryPoint(const StringView entry_type_name, const StringVi return true; } -void *ManagedHost::load_library(const char_t * path) +void* ManagedHost::load_library(const char_t* path) { #ifdef WINDOWS HMODULE h = ::LoadLibraryW(path); assert(h != nullptr); - return (void *)h; + return (void*)h; #else - void * h = dlopen(path, RTLD_LAZY | RTLD_LOCAL); + void* h = dlopen(path, RTLD_LAZY | RTLD_LOCAL); assert(h != nullptr); return h; #endif } -void * ManagedHost::get_export(void * h, const char * name) +void* ManagedHost::get_export(void* h, const char* name) { #ifdef WINDOWS - auto f = (void*)::GetProcAddress(static_cast(h), name); // NOLINT(clang-diagnostic-microsoft-cast) + auto f = (void*)::GetProcAddress(static_cast(h), name); // NOLINT(clang-diagnostic-microsoft-cast) assert(f != nullptr); return f; #else - void * f = dlsym(h, name); + void* f = dlsym(h, name); assert(f != nullptr); return f; #endif } -int ManagedHost::load_hostfxr(const char_t * assembly_path) +int ManagedHost::load_hostfxr(const char_t* assembly_path) { // Pre-allocate a large buffer for the path to hostfxr char_t buffer[MAX_PATH]; size_t buffer_size = sizeof(buffer) / sizeof(char_t); - - const get_hostfxr_parameters params { sizeof(get_hostfxr_parameters), assembly_path, nullptr }; + + const get_hostfxr_parameters params{sizeof(get_hostfxr_parameters), assembly_path, nullptr}; const int rc = get_hostfxr_path(buffer, &buffer_size, ¶ms); if (rc != 0) { @@ -133,11 +131,12 @@ int ManagedHost::load_hostfxr(const char_t * assembly_path) } // Load hostfxr and get desired exports - void *lib = load_library(buffer); - init_for_config_fptr = (hostfxr_initialize_for_runtime_config_fn)get_export(lib, "hostfxr_initialize_for_runtime_config"); + void* lib = load_library(buffer); + init_for_config_fptr = + (hostfxr_initialize_for_runtime_config_fn)get_export(lib, "hostfxr_initialize_for_runtime_config"); get_delegate_fptr = (hostfxr_get_runtime_delegate_fn)get_export(lib, "hostfxr_get_runtime_delegate"); close_fptr = (hostfxr_close_fn)get_export(lib, "hostfxr_close"); - + if (!init_for_config_fptr || !get_delegate_fptr || !close_fptr) { return ERROR_MISSING_EXPORT; @@ -146,10 +145,10 @@ int ManagedHost::load_hostfxr(const char_t * assembly_path) return 0; } -int ManagedHost::load_runtime(const char_t * config_path, load_assembly_and_get_function_pointer_fn * fptr) const +int ManagedHost::load_runtime(const char_t* config_path, load_assembly_and_get_function_pointer_fn* fptr) const { // Load .NET Core - void * ptr = nullptr; + void* ptr = nullptr; hostfxr_handle cxt = nullptr; int rc = init_for_config_fptr(config_path, nullptr, &cxt); if (rc != 0) @@ -164,56 +163,93 @@ int ManagedHost::load_runtime(const char_t * config_path, load_assembly_and_get_ } // Get the load assembly function pointer - rc = get_delegate_fptr( - cxt, - hdt_load_assembly_and_get_function_pointer, - &ptr); + rc = get_delegate_fptr(cxt, hdt_load_assembly_and_get_function_pointer, &ptr); close_fptr(cxt); *fptr = (load_assembly_and_get_function_pointer_fn)ptr; return rc; } -const char * ManagedHost::get_error(int code) const +const char* ManagedHost::get_error(int code) const { switch ((unsigned int)code) { - case 0x00000000: return "Operation was successful"; - case 0x00000001: return "Initialization was successful, but another host context is already initialized"; - case 0x00000002: return "Initialization was successful, but another host context is already initialized and the requested context specified runtime properties which are not the same"; - case 0x80008081: return "One or more arguments are invalid"; - case 0x80008082: return "Failed to load a hosting component"; - case 0x80008083: return "One of the hosting components is missing"; - case 0x80008084: return "One of the hosting components is missing a required entry point"; - case 0x80008085: return "Failed to get the path of the current hosting component and determine the .NET installation location"; - case 0x80008087: return "The `coreclr` library could not be found"; - case 0x80008088: return "Failed to load the `coreclr` library or finding one of the required entry points"; - case 0x80008089: return "Call to `coreclr_initialize` failed"; - case 0x8000808a: return "Call to `coreclr_execute_assembly` failed"; - case 0x8000808b: return "Initialization of the `hostpolicy` dependency resolver failed"; - case 0x8000808c: return "Resolution of dependencies in `hostpolicy` failed"; - case 0x8000808e: return "Initialization of the `hostpolicy` library failed"; - case 0x80008092: return "Arguments to `hostpolicy` are invalid"; - case 0x80008093: return "The `.runtimeconfig.json` file is invalid"; - case 0x80008094: return "[internal usage only]"; - case 0x80008095: return "`apphost` failed to determine which application to run"; - case 0x80008096: return "Failed to find a compatible framework version"; - case 0x80008097: return "Host command failed"; - case 0x80008098: return "Buffer provided to a host API is too small to fit the requested value"; - case 0x8000809a: return "Application path imprinted in `apphost` doesn't exist"; - case 0x8000809b: return "Failed to find the requested SDK"; - case 0x8000809c: return "Application has multiple references to the same framework which are not compatible"; - case 0x8000809d: return "[internal usage only]"; - case 0x8000809f: return "Error extracting single-file bundle"; - case 0x800080a0: return "Error reading or writing files during single-file bundle extraction"; - case 0x800080a1: return "The application's `.runtimeconfig.json` contains a runtime property which is produced by the hosting layer"; - case 0x800080a2: return "Feature which requires certain version of the hosting layer was used on a version which doesn't support it"; - case 0x800080a3: return "Current state is incompatible with the requested operation"; - case 0x800080a4: return "Property requested by `hostfxr_get_runtime_property_value` doesn't exist"; - case 0x800080a5: return "Host configuration is incompatible with existing host context"; - case 0x800080a6: return "Hosting API does not support the requested scenario"; - case 0x800080a7: return "Support for a requested feature is disabled"; - case ERROR_MISSING_EXPORT: return "Missing export fuction in host library"; - default: return "Unkown error"; + case 0x00000000: + return "Operation was successful"; + case 0x00000001: + return "Initialization was successful, but another host context is already initialized"; + case 0x00000002: + return "Initialization was successful, but another host context is already initialized and the requested " + "context specified runtime properties which are not the same"; + case 0x80008081: + return "One or more arguments are invalid"; + case 0x80008082: + return "Failed to load a hosting component"; + case 0x80008083: + return "One of the hosting components is missing"; + case 0x80008084: + return "One of the hosting components is missing a required entry point"; + case 0x80008085: + return "Failed to get the path of the current hosting component and determine the .NET installation location"; + case 0x80008087: + return "The `coreclr` library could not be found"; + case 0x80008088: + return "Failed to load the `coreclr` library or finding one of the required entry points"; + case 0x80008089: + return "Call to `coreclr_initialize` failed"; + case 0x8000808a: + return "Call to `coreclr_execute_assembly` failed"; + case 0x8000808b: + return "Initialization of the `hostpolicy` dependency resolver failed"; + case 0x8000808c: + return "Resolution of dependencies in `hostpolicy` failed"; + case 0x8000808e: + return "Initialization of the `hostpolicy` library failed"; + case 0x80008092: + return "Arguments to `hostpolicy` are invalid"; + case 0x80008093: + return "The `.runtimeconfig.json` file is invalid"; + case 0x80008094: + return "[internal usage only]"; + case 0x80008095: + return "`apphost` failed to determine which application to run"; + case 0x80008096: + return "Failed to find a compatible framework version"; + case 0x80008097: + return "Host command failed"; + case 0x80008098: + return "Buffer provided to a host API is too small to fit the requested value"; + case 0x8000809a: + return "Application path imprinted in `apphost` doesn't exist"; + case 0x8000809b: + return "Failed to find the requested SDK"; + case 0x8000809c: + return "Application has multiple references to the same framework which are not compatible"; + case 0x8000809d: + return "[internal usage only]"; + case 0x8000809f: + return "Error extracting single-file bundle"; + case 0x800080a0: + return "Error reading or writing files during single-file bundle extraction"; + case 0x800080a1: + return "The application's `.runtimeconfig.json` contains a runtime property which is produced by the hosting " + "layer"; + case 0x800080a2: + return "Feature which requires certain version of the hosting layer was used on a version which doesn't " + "support it"; + case 0x800080a3: + return "Current state is incompatible with the requested operation"; + case 0x800080a4: + return "Property requested by `hostfxr_get_runtime_property_value` doesn't exist"; + case 0x800080a5: + return "Host configuration is incompatible with existing host context"; + case 0x800080a6: + return "Hosting API does not support the requested scenario"; + case 0x800080a7: + return "Support for a requested feature is disabled"; + case ERROR_MISSING_EXPORT: + return "Missing export fuction in host library"; + default: + return "Unkown error"; } } \ No newline at end of file diff --git a/src/sampsharp-component/managed-host.hpp b/src/sampsharp-component/managed-host.hpp index 16b7e867..ed31414d 100644 --- a/src/sampsharp-component/managed-host.hpp +++ b/src/sampsharp-component/managed-host.hpp @@ -17,17 +17,18 @@ class ManagedHost final hostfxr_close_fn close_fptr = nullptr; load_assembly_and_get_function_pointer_fn load_assembly_and_get_function_pointer_fptr = nullptr; - static void * load_library(const char_t *); - static void * get_export(void *, const char *); + static void* load_library(const char_t*); + static void* get_export(void*, const char*); - int load_hostfxr(const char_t * assembly_path); + int load_hostfxr(const char_t* assembly_path); - int load_runtime(const char_t * config_path, load_assembly_and_get_function_pointer_fn * fptr) const; - const char * get_error(int code) const; + int load_runtime(const char_t* config_path, load_assembly_and_get_function_pointer_fn* fptr) const; + const char* get_error(int code) const; public: bool isReady() const; - bool initialize(const char ** error_ptr); - bool loadFor(const StringView root_path, const StringView assembly_name, const char ** error_ptr); - bool getEntryPoint(const StringView entry_type_name, const StringView name, void ** delegate_ptr, const char ** error_ptr) const; + bool initialize(const char** error_ptr); + bool loadFor(const StringView root_path, const StringView assembly_name, const char** error_ptr); + bool getEntryPoint(const StringView entry_type_name, const StringView name, void** delegate_ptr, + const char** error_ptr) const; }; \ No newline at end of file diff --git a/src/sampsharp-component/proxies/api.cpp b/src/sampsharp-component/proxies/api.cpp index 126ac765..3ffc1a9c 100644 --- a/src/sampsharp-component/proxies/api.cpp +++ b/src/sampsharp-component/proxies/api.cpp @@ -22,7 +22,9 @@ #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreturn-type-c-linkage" // has C-linkage specified, but returns user-defined type '' which is incompatible with C [-Wreturn-type-c-linkage] +#pragma clang diagnostic ignored \ + "-Wreturn-type-c-linkage" // has C-linkage specified, but returns user-defined type '' which is + // incompatible with C [-Wreturn-type-c-linkage] #endif @@ -37,39 +39,39 @@ using IntPair = Pair; using BoolStringPair = Pair; using HoursMinutesPair = Pair; using SizePair = Pair; -using NewConnectionPlayerPair = Pair; -using CarriagesArray = StaticArray; +using NewConnectionPlayerPair = Pair; +using CarriagesArray = StaticArray; using VehicleModelArray = StaticArray; using SkillsArray = StaticArray; // include/Server/Components/Actors PROXY(IActor, void, setSkin, int); PROXY(IActor, int, getSkin); -PROXY(IActor, void, applyAnimation, AnimationData &); -PROXY(IActor, const AnimationData &, getAnimation); +PROXY(IActor, void, applyAnimation, AnimationData&); +PROXY(IActor, const AnimationData&, getAnimation); PROXY(IActor, void, clearAnimations); PROXY(IActor, void, setHealth, float); PROXY(IActor, float, getHealth); PROXY(IActor, void, setInvulnerable, bool); PROXY(IActor, bool, isInvulnerable); -PROXY(IActor, bool, isStreamedInForPlayer, IPlayer &); -PROXY(IActor, void, streamInForPlayer, IPlayer &); -PROXY(IActor, void, streamOutForPlayer, IPlayer &); -PROXY(IActor, const ActorSpawnData &, getSpawnData); +PROXY(IActor, bool, isStreamedInForPlayer, IPlayer&); +PROXY(IActor, void, streamInForPlayer, IPlayer&); +PROXY(IActor, void, streamOutForPlayer, IPlayer&); +PROXY(IActor, const ActorSpawnData&, getSpawnData); PROXY_CAST(IActor, IEntity); -PROXY(IActorsComponent, IActor *, create, int, Vector3, float); +PROXY(IActorsComponent, IActor*, create, int, Vector3, float); PROXY_EVENT_DISPATCHER(IActorsComponent, ActorEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(ActorEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerGiveDamageActor, IPlayer &, IActor &, float, unsigned, BodyPart) -PROXY_EVENT_HANDLER_EVENT(void, onActorStreamOut, IActor &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onActorStreamIn, IActor &, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerGiveDamageActor, IPlayer&, IActor&, float, unsigned, BodyPart) +PROXY_EVENT_HANDLER_EVENT(void, onActorStreamOut, IActor&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onActorStreamIn, IActor&, IPlayer&) PROXY_EVENT_HANDLER_END(ActorEventHandler, onPlayerGiveDamageActor, onActorStreamOut, onActorStreamIn) // include/Server/Components/Checkpoints PROXY(ICheckpointDataBase, Vector3, getPosition); -PROXY(ICheckpointDataBase, void, setPosition, Vector3 &); +PROXY(ICheckpointDataBase, void, setPosition, Vector3&); PROXY(ICheckpointDataBase, float, getRadius); PROXY(ICheckpointDataBase, void, setRadius, float); PROXY(ICheckpointDataBase, bool, isPlayerInside); @@ -81,46 +83,46 @@ PROXY(ICheckpointDataBase, bool, isEnabled); PROXY(IRaceCheckpointData, RaceCheckpointType, getType); PROXY(IRaceCheckpointData, void, setType, RaceCheckpointType); PROXY(IRaceCheckpointData, Vector3, getNextPosition); -PROXY(IRaceCheckpointData, void, setNextPosition, Vector3 &); +PROXY(IRaceCheckpointData, void, setNextPosition, Vector3&); -PROXY(IPlayerCheckpointData, IRaceCheckpointData &, getRaceCheckpoint); -PROXY(IPlayerCheckpointData, ICheckpointData &, getCheckpoint); +PROXY(IPlayerCheckpointData, IRaceCheckpointData&, getRaceCheckpoint); +PROXY(IPlayerCheckpointData, ICheckpointData&, getCheckpoint); PROXY_EVENT_DISPATCHER(ICheckpointsComponent, PlayerCheckpointEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerCheckpointEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterCheckpoint, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveCheckpoint, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterRaceCheckpoint, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveRaceCheckpoint, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterCheckpoint, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveCheckpoint, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterRaceCheckpoint, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveRaceCheckpoint, IPlayer&) PROXY_EVENT_HANDLER_END(PlayerCheckpointEventHandler, onPlayerEnterCheckpoint, onPlayerLeaveCheckpoint, onPlayerEnterRaceCheckpoint, onPlayerLeaveRaceCheckpoint) // include/Server/Components/Classes -PROXY(IClass, const PlayerClass &, getClass); -PROXY(IClass, void, setClass, PlayerClass &); +PROXY(IClass, const PlayerClass&, getClass); +PROXY(IClass, void, setClass, PlayerClass&); PROXY_CAST(IClass, IIDProvider); -PROXY(IPlayerClassData, const PlayerClass &, getClass); -PROXY(IPlayerClassData, void, setSpawnInfo, PlayerClass &); +PROXY(IPlayerClassData, const PlayerClass&, getClass); +PROXY(IPlayerClassData, void, setSpawnInfo, PlayerClass&); PROXY(IPlayerClassData, void, spawnPlayer); -PROXY(IClassesComponent, IClass *, create, int, int, Vector3, float, WeaponSlots &); +PROXY(IClassesComponent, IClass*, create, int, int, Vector3, float, WeaponSlots&); PROXY_EVENT_DISPATCHER(IClassesComponent, ClassEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(ClassEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestClass, IPlayer &, unsigned int) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestClass, IPlayer&, unsigned int) PROXY_EVENT_HANDLER_END(ClassEventHandler, onPlayerRequestClass) // include/Server/Components/Console -PROXY(IConsoleComponent, void, send, StringView, ConsoleCommandSenderData &); -PROXY(IConsoleComponent, void, sendMessage, ConsoleCommandSenderData &, StringView); +PROXY(IConsoleComponent, void, send, StringView, ConsoleCommandSenderData&); +PROXY(IConsoleComponent, void, sendMessage, ConsoleCommandSenderData&, StringView); PROXY_EVENT_DISPATCHER(IConsoleComponent, ConsoleEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(ConsoleEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onConsoleText, StringView, StringView, const ConsoleCommandSenderData &) -PROXY_EVENT_HANDLER_EVENT(void, onRconLoginAttempt, IPlayer &, StringView, bool) -PROXY_EVENT_HANDLER_EVENT(void, onConsoleCommandListRequest, FlatHashSet &) +PROXY_EVENT_HANDLER_EVENT(bool, onConsoleText, StringView, StringView, const ConsoleCommandSenderData&) +PROXY_EVENT_HANDLER_EVENT(void, onRconLoginAttempt, IPlayer&, StringView, bool) +PROXY_EVENT_HANDLER_EVENT(void, onConsoleCommandListRequest, FlatHashSet&) PROXY_EVENT_HANDLER_END(ConsoleEventHandler, onConsoleText, onRconLoginAttempt, onConsoleCommandListRequest) PROXY(IPlayerConsoleData, bool, hasConsoleAccess); @@ -133,62 +135,62 @@ PROXY(IPlayerCustomModelsData, bool, sendDownloadUrl, StringView); PROXY(ICustomModelsComponent, bool, addCustomModel, ModelType, int32_t, int32_t, StringView, StringView, int32_t, uint8_t, uint8_t); -PROXY(ICustomModelsComponent, bool, getBaseModel, uint32_t &, uint32_t &); +PROXY(ICustomModelsComponent, bool, getBaseModel, uint32_t&, uint32_t&); PROXY(ICustomModelsComponent, StringView, getModelNameFromChecksum, uint32_t); PROXY(ICustomModelsComponent, bool, isValidCustomModel, int32_t); -PROXY(ICustomModelsComponent, bool, getCustomModelPath, int32_t, StringView &, StringView &); +PROXY(ICustomModelsComponent, bool, getCustomModelPath, int32_t, StringView&, StringView&); PROXY_EVENT_DISPATCHER(ICustomModelsComponent, PlayerModelsEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerModelsEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerFinishedDownloading, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestDownload, IPlayer &, ModelDownloadType, uint32_t) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerFinishedDownloading, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestDownload, IPlayer&, ModelDownloadType, uint32_t) PROXY_EVENT_HANDLER_END(PlayerModelsEventHandler, onPlayerFinishedDownloading, onPlayerRequestDownload) // include/Server/Components/Databases // @skip // include/Server/Components/Dialogs -PROXY(IPlayerDialogData, void, hide, IPlayer &); -PROXY(IPlayerDialogData, void, show, IPlayer &, int, DialogStyle, StringView, StringView, StringView, StringView); -PROXY(IPlayerDialogData, void, get, int &, DialogStyle &, StringView &, StringView &, StringView &, StringView &); +PROXY(IPlayerDialogData, void, hide, IPlayer&); +PROXY(IPlayerDialogData, void, show, IPlayer&, int, DialogStyle, StringView, StringView, StringView, StringView); +PROXY(IPlayerDialogData, void, get, int&, DialogStyle&, StringView&, StringView&, StringView&, StringView&); PROXY(IPlayerDialogData, int, getActiveID) PROXY_EVENT_DISPATCHER(IDialogsComponent, PlayerDialogEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerDialogEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onDialogResponse, IPlayer &, int, DialogResponse, int, StringView) +PROXY_EVENT_HANDLER_EVENT(void, onDialogResponse, IPlayer&, int, DialogResponse, int, StringView) PROXY_EVENT_HANDLER_END(PlayerDialogEventHandler, onDialogResponse) // include/Server/Components/Fixes PROXY(IPlayerFixesData, bool, sendGameText, StringView, Milliseconds, int); PROXY(IPlayerFixesData, bool, hideGameText, int); PROXY(IPlayerFixesData, bool, hasGameText, int); -PROXY(IPlayerFixesData, bool, getGameText, int, StringView &, Milliseconds &, Milliseconds &); -PROXY(IPlayerFixesData, void, applyAnimation, IPlayer *, IActor *, AnimationData *); +PROXY(IPlayerFixesData, bool, getGameText, int, StringView&, Milliseconds&, Milliseconds&); +PROXY(IPlayerFixesData, void, applyAnimation, IPlayer*, IActor*, AnimationData*); PROXY(IFixesComponent, bool, sendGameTextToAll, StringView, Milliseconds, int); PROXY(IFixesComponent, bool, hideGameTextForAll, int); -PROXY(IFixesComponent, void, clearAnimation, IPlayer *, IActor *); +PROXY(IFixesComponent, void, clearAnimation, IPlayer*, IActor*); // include/Server/Components/GangZones -PROXY(IBaseGangZone, bool, isShownForPlayer, IPlayer &); -PROXY(IBaseGangZone, bool, isFlashingForPlayer, IPlayer &); -PROXY(IBaseGangZone, void, showForPlayer, IPlayer &, Colour &); -PROXY(IBaseGangZone, void, hideForPlayer, IPlayer &); -PROXY(IBaseGangZone, void, flashForPlayer, IPlayer &, Colour &); -PROXY(IBaseGangZone, void, stopFlashForPlayer, IPlayer &); +PROXY(IBaseGangZone, bool, isShownForPlayer, IPlayer&); +PROXY(IBaseGangZone, bool, isFlashingForPlayer, IPlayer&); +PROXY(IBaseGangZone, void, showForPlayer, IPlayer&, Colour&); +PROXY(IBaseGangZone, void, hideForPlayer, IPlayer&); +PROXY(IBaseGangZone, void, flashForPlayer, IPlayer&, Colour&); +PROXY(IBaseGangZone, void, stopFlashForPlayer, IPlayer&); PROXY(IBaseGangZone, GangZonePos, getPosition); -PROXY(IBaseGangZone, void, setPosition, GangZonePos &); -PROXY(IBaseGangZone, bool, isPlayerInside, IPlayer &); -PROXY(IBaseGangZone, const FlatHashSet &, getShownFor); -PROXY(IBaseGangZone, Colour, getFlashingColourForPlayer, IPlayer &); -PROXY(IBaseGangZone, Colour, getColourForPlayer, IPlayer &); -PROXY(IBaseGangZone, void, setLegacyPlayer, IPlayer *); -PROXY(IBaseGangZone, IPlayer *, getLegacyPlayer); +PROXY(IBaseGangZone, void, setPosition, GangZonePos&); +PROXY(IBaseGangZone, bool, isPlayerInside, IPlayer&); +PROXY(IBaseGangZone, const FlatHashSet&, getShownFor); +PROXY(IBaseGangZone, Colour, getFlashingColourForPlayer, IPlayer&); +PROXY(IBaseGangZone, Colour, getColourForPlayer, IPlayer&); +PROXY(IBaseGangZone, void, setLegacyPlayer, IPlayer*); +PROXY(IBaseGangZone, IPlayer*, getLegacyPlayer); PROXY_CAST(IBaseGangZone, IIDProvider); -PROXY(IGangZonesComponent, IGangZone *, create, GangZonePos); -PROXY(IGangZonesComponent, const FlatHashSet &, getCheckingGangZones); -PROXY(IGangZonesComponent, void, useGangZoneCheck, IGangZone &, bool); +PROXY(IGangZonesComponent, IGangZone*, create, GangZonePos); +PROXY(IGangZonesComponent, const FlatHashSet&, getCheckingGangZones); +PROXY(IGangZonesComponent, void, useGangZoneCheck, IGangZone&, bool); PROXY(IGangZonesComponent, int, toLegacyID, int); PROXY(IGangZonesComponent, int, fromLegacyID, int); PROXY(IGangZonesComponent, void, releaseLegacyID, int); @@ -197,9 +199,9 @@ PROXY(IGangZonesComponent, void, setLegacyID, int, int); PROXY_EVENT_DISPATCHER(IGangZonesComponent, GangZoneEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(GangZoneEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterGangZone, IPlayer &, IGangZone &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveGangZone, IPlayer &, IGangZone &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickGangZone, IPlayer &, IGangZone &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterGangZone, IPlayer&, IGangZone&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerLeaveGangZone, IPlayer&, IGangZone&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickGangZone, IPlayer&, IGangZone&) PROXY_EVENT_HANDLER_END(GangZoneEventHandler, onPlayerEnterGangZone, onPlayerLeaveGangZone, onPlayerClickGangZone) PROXY(IPlayerGangZoneData, int, toLegacyID, int); @@ -224,34 +226,34 @@ PROXY(IMenu, void, disableRow, MenuRow); PROXY(IMenu, bool, isRowEnabled, MenuRow); PROXY(IMenu, void, disable); PROXY(IMenu, bool, isEnabled); -PROXY(IMenu, const Vector2 &, getPosition); +PROXY(IMenu, const Vector2&, getPosition); PROXY(IMenu, int, getRowCount, MenuColumn); PROXY(IMenu, int, getColumnCount); PROXY_PTR(IMenu, Vector2, getColumnWidths); PROXY(IMenu, StringView, getColumnHeader, MenuColumn); PROXY(IMenu, StringView, getCell, MenuColumn, MenuRow); -PROXY(IMenu, void, initForPlayer, IPlayer &); -PROXY(IMenu, void, showForPlayer, IPlayer &); -PROXY(IMenu, void, hideForPlayer, IPlayer &); +PROXY(IMenu, void, initForPlayer, IPlayer&); +PROXY(IMenu, void, showForPlayer, IPlayer&); +PROXY(IMenu, void, hideForPlayer, IPlayer&); PROXY_CAST(IMenu, IIDProvider); PROXY(IPlayerMenuData, uint8_t, getMenuID); PROXY(IPlayerMenuData, void, setMenuID, uint8_t); -PROXY(IMenusComponent, IMenu *, create, StringView, Vector2, uint8_t, float, float); +PROXY(IMenusComponent, IMenu*, create, StringView, Vector2, uint8_t, float, float); PROXY_EVENT_DISPATCHER(IMenusComponent, MenuEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(MenuEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerSelectedMenuRow, IPlayer &, MenuRow) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerExitedMenu, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerSelectedMenuRow, IPlayer&, MenuRow) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerExitedMenu, IPlayer&) PROXY_EVENT_HANDLER_END(MenuEventHandler, onPlayerSelectedMenuRow, onPlayerExitedMenu) // include/Server/Components/NPCs -PROXY(INPC, IPlayer *, getPlayer); +PROXY(INPC, IPlayer*, getPlayer); PROXY(INPC, Vector3, getPosition); -PROXY(INPC, void, setPosition, const Vector3 &, bool); +PROXY(INPC, void, setPosition, const Vector3&, bool); PROXY(INPC, GTAQuat, getRotation); -PROXY(INPC, void, setRotation, const GTAQuat &, bool); +PROXY(INPC, void, setRotation, const GTAQuat&, bool); PROXY(INPC, int, getVirtualWorld); PROXY(INPC, void, setVirtualWorld, int); PROXY(INPC, unsigned, getInterior); @@ -274,16 +276,16 @@ PROXY(INPC, bool, isInvulnerable); PROXY(INPC, void, setInvulnerable, bool); PROXY(INPC, bool, isMoving); PROXY(INPC, bool, move, Vector3, NPCMoveType, float, float); -PROXY(INPC, bool, moveToPlayer, IPlayer &, NPCMoveType, float, float, Milliseconds, bool); +PROXY(INPC, bool, moveToPlayer, IPlayer&, NPCMoveType, float, float, Milliseconds, bool); PROXY(INPC, void, stopMove); -PROXY(INPC, const FlatPtrHashSet &, streamedForPlayers); +PROXY(INPC, const FlatPtrHashSet&, streamedForPlayers); PROXY(INPC, void, clearAnimations); -PROXY(INPC, void, applyAnimation, const AnimationData &); -PROXY(INPC, bool, isStreamedInForPlayer, const IPlayer &); +PROXY(INPC, void, applyAnimation, const AnimationData&); +PROXY(INPC, bool, isStreamedInForPlayer, const IPlayer&); PROXY(INPC, void, setWeaponSkillLevel, PlayerWeaponSkill, int); PROXY(INPC, int, getWeaponSkillLevel, PlayerWeaponSkill); PROXY(INPC, void, setKeys, uint16_t, uint16_t, uint16_t); -PROXY(INPC, void, getKeys, uint16_t &, uint16_t &, uint16_t &); +PROXY(INPC, void, getKeys, uint16_t&, uint16_t&, uint16_t&); PROXY(INPC, void, meleeAttack, int, bool); PROXY(INPC, void, stopMeleeAttack); PROXY(INPC, bool, isMeleeAttacking); @@ -298,13 +300,13 @@ PROXY(INPC, PlayerWeaponState, getWeaponState); PROXY(INPC, void, setWeaponState, PlayerWeaponState); PROXY(INPC, void, setAmmoInClip, int); PROXY(INPC, int, getAmmoInClip); -PROXY(INPC, void, shoot, int, PlayerBulletHitType, uint8_t, const Vector3 &, const Vector3 &, bool, EntityCheckType); +PROXY(INPC, void, shoot, int, PlayerBulletHitType, uint8_t, const Vector3&, const Vector3&, bool, EntityCheckType); PROXY(INPC, bool, isShooting); -PROXY(INPC, void, aimAt, const Vector3 &, bool, int, bool, const Vector3 &, EntityCheckType); -PROXY(INPC, void, aimAtPlayer, IPlayer &, bool, int, bool, const Vector3 &, const Vector3 &, EntityCheckType); +PROXY(INPC, void, aimAt, const Vector3&, bool, int, bool, const Vector3&, EntityCheckType); +PROXY(INPC, void, aimAtPlayer, IPlayer&, bool, int, bool, const Vector3&, const Vector3&, EntityCheckType); PROXY(INPC, void, stopAim); PROXY(INPC, bool, isAiming); -PROXY(INPC, bool, isAimingAtPlayer, IPlayer &); +PROXY(INPC, bool, isAimingAtPlayer, IPlayer&); PROXY(INPC, void, setWeaponAccuracy, uint8_t, float); PROXY(INPC, float, getWeaponAccuracy, uint8_t); PROXY(INPC, void, setWeaponReloadTime, uint8_t, int); @@ -315,9 +317,9 @@ PROXY(INPC, int, getWeaponShootTime, uint8_t); PROXY(INPC, void, setWeaponClipSize, uint8_t, int); PROXY(INPC, int, getWeaponClipSize, uint8_t); PROXY(INPC, int, getWeaponActualClipSize, uint8_t); -PROXY(INPC, void, enterVehicle, IVehicle &, uint8_t, NPCMoveType); +PROXY(INPC, void, enterVehicle, IVehicle&, uint8_t, NPCMoveType); PROXY(INPC, void, exitVehicle); -PROXY(INPC, bool, putInVehicle, IVehicle &, uint8_t); +PROXY(INPC, bool, putInVehicle, IVehicle&, uint8_t); PROXY(INPC, bool, removeFromVehicle); PROXY(INPC, bool, moveByPath, int, NPCMoveType, float, bool); PROXY(INPC, void, pausePath); @@ -327,9 +329,9 @@ PROXY(INPC, bool, isMovingByPath); PROXY(INPC, bool, isPathPaused); PROXY(INPC, int, getCurrentPathId); PROXY(INPC, int, getCurrentPathPointIndex); -PROXY(INPC, IVehicle *, getVehicle); +PROXY(INPC, IVehicle*, getVehicle); PROXY(INPC, int, getVehicleSeat); -PROXY(INPC, IVehicle *, getEnteringVehicle); +PROXY(INPC, IVehicle*, getEnteringVehicle); PROXY(INPC, int, getEnteringVehicleSeat); PROXY(INPC, void, useVehicleSiren, bool); PROXY(INPC, bool, isVehicleSirenUsed); @@ -343,7 +345,7 @@ PROXY(INPC, void, setVehicleTrainSpeed, float); PROXY(INPC, float, getVehicleTrainSpeed); PROXY(INPC, void, resetAnimation); PROXY(INPC, void, setAnimation, int, float, bool, bool, bool, bool, int); -PROXY(INPC, void, getAnimation, int &, float &, bool &, bool &, bool &, bool &, int &); +PROXY(INPC, void, getAnimation, int&, float&, bool&, bool&, bool&, bool&, int&); PROXY(INPC, void, setSpecialAction, PlayerSpecialAction); PROXY(INPC, PlayerSpecialAction, getSpecialAction); PROXY_NAMED_OVERLOAD(INPC, INPC, bool, startPlayback, ByName, StringView, bool, Vector3, GTAQuat); @@ -360,27 +362,27 @@ PROXY(INPC, bool, isPlayingNodePaused); PROXY(INPC, bool, isPlayingNode); PROXY(INPC, uint16_t, changeNode, int, uint16_t); PROXY(INPC, bool, updateNodePoint, uint16_t); -PROXY(INPC, void, setSurfingData, const PlayerSurfingData &); +PROXY(INPC, void, setSurfingData, const PlayerSurfingData&); PROXY(INPC, PlayerSurfingData, getSurfingData); PROXY(INPC, void, resetSurfingData); -PROXY(INPC, bool, isMovingToPlayer, IPlayer &); -PROXY(INPC, void, kill, IPlayer *, uint8_t); -PROXY(INPC, IPlayer *, getPlayerAimingAt); -PROXY(INPC, IPlayer *, getPlayerMovingTo); +PROXY(INPC, bool, isMovingToPlayer, IPlayer&); +PROXY(INPC, void, kill, IPlayer*, uint8_t); +PROXY(INPC, IPlayer*, getPlayerAimingAt); +PROXY(INPC, IPlayer*, getPlayerMovingTo); PROXY(INPC, Vector3, getPositionMovingTo); PROXY_CAST(INPC, IIDProvider); -PROXY(INPCComponent, INPC *, create, StringView); -PROXY(INPCComponent, void, destroy, INPC &); +PROXY(INPCComponent, INPC*, create, StringView); +PROXY(INPCComponent, void, destroy, INPC&); PROXY(INPCComponent, int, createPath); PROXY(INPCComponent, bool, destroyPath, int); PROXY(INPCComponent, void, destroyAllPaths); PROXY_PTR(INPCComponent, size_t, getPathCount); -PROXY(INPCComponent, bool, addPointToPath, int, const Vector3 &, float); +PROXY(INPCComponent, bool, addPointToPath, int, const Vector3&, float); PROXY(INPCComponent, bool, removePointFromPath, int, size_t); PROXY(INPCComponent, bool, clearPath, int); PROXY_PTR(INPCComponent, size_t, getPathPointCount, int); -PROXY(INPCComponent, bool, getPathPoint, int, size_t, Vector3 &, float &); -PROXY(INPCComponent, bool, hasPathPointInRange, int, const Vector3 &, float); +PROXY(INPCComponent, bool, getPathPoint, int, size_t, Vector3&, float&); +PROXY(INPCComponent, bool, hasPathPointInRange, int, const Vector3&, float); PROXY(INPCComponent, bool, isValidPath, int); PROXY(INPCComponent, int, loadRecord, StringView); PROXY(INPCComponent, bool, unloadRecord, int); @@ -392,40 +394,40 @@ PROXY(INPCComponent, void, closeNode, int); PROXY(INPCComponent, bool, isNodeOpen, int); PROXY(INPCComponent, uint8_t, getNodeType, int); PROXY(INPCComponent, bool, setNodePoint, int, uint16_t); -PROXY(INPCComponent, bool, getNodePointPosition, int, Vector3 &); +PROXY(INPCComponent, bool, getNodePointPosition, int, Vector3&); PROXY(INPCComponent, int, getNodePointCount, int); -PROXY(INPCComponent, bool, getNodeInfo, int, uint32_t &, uint32_t &, uint32_t &); +PROXY(INPCComponent, bool, getNodeInfo, int, uint32_t&, uint32_t&, uint32_t&); PROXY_CAST(INPCComponent, INetworkComponent); PROXY_EVENT_DISPATCHER(INPCComponent, NPCEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(NPCEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMove, INPC &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCCreate, INPC &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCDestroy, INPC &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCSpawn, INPC &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCRespawn, INPC &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCWeaponStateChange, INPC &, PlayerWeaponState, PlayerWeaponState) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCTakeDamage, INPC &, IPlayer &, float, uint8_t, BodyPart) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCGiveDamage, INPC &, IPlayer &, float, uint8_t, BodyPart) -PROXY_EVENT_HANDLER_EVENT(void, onNPCDeath, INPC &, IPlayer *, int) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotMissed, INPC &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotPlayer, INPC &, IPlayer &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotNPC, INPC &, INPC &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotVehicle, INPC &, IVehicle &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotObject, INPC &, IObject &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotPlayerObject, INPC &, IPlayerObject &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(void, onNPCPlaybackStart, INPC &, int) -PROXY_EVENT_HANDLER_EVENT(void, onNPCPlaybackEnd, INPC &, int) -PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishNodePoint, INPC &, int, uint16_t) -PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishNode, INPC &, int) -PROXY_EVENT_HANDLER_EVENT(bool, onNPCChangeNode, INPC &, int, int) -PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMovePathPoint, INPC &, int, int) -PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMovePath, INPC &, int) +PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMove, INPC&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCCreate, INPC&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCDestroy, INPC&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCSpawn, INPC&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCRespawn, INPC&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCWeaponStateChange, INPC&, PlayerWeaponState, PlayerWeaponState) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCTakeDamage, INPC&, IPlayer&, float, uint8_t, BodyPart) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCGiveDamage, INPC&, IPlayer&, float, uint8_t, BodyPart) +PROXY_EVENT_HANDLER_EVENT(void, onNPCDeath, INPC&, IPlayer*, int) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotMissed, INPC&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotPlayer, INPC&, IPlayer&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotNPC, INPC&, INPC&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotVehicle, INPC&, IVehicle&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotObject, INPC&, IObject&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCShotPlayerObject, INPC&, IPlayerObject&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(void, onNPCPlaybackStart, INPC&, int) +PROXY_EVENT_HANDLER_EVENT(void, onNPCPlaybackEnd, INPC&, int) +PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishNodePoint, INPC&, int, uint16_t) +PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishNode, INPC&, int) +PROXY_EVENT_HANDLER_EVENT(bool, onNPCChangeNode, INPC&, int, int) +PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMovePathPoint, INPC&, int, int) +PROXY_EVENT_HANDLER_EVENT(void, onNPCFinishMovePath, INPC&, int) PROXY_EVENT_HANDLER_END(NPCEventHandler, onNPCFinishMove, onNPCCreate, onNPCDestroy, onNPCSpawn, onNPCRespawn, - onNPCWeaponStateChange, onNPCTakeDamage, onNPCGiveDamage, onNPCDeath, - onNPCShotMissed, onNPCShotPlayer, onNPCShotNPC, onNPCShotVehicle, onNPCShotObject, - onNPCShotPlayerObject, onNPCPlaybackStart, onNPCPlaybackEnd, onNPCFinishNodePoint, - onNPCFinishNode, onNPCChangeNode, onNPCFinishMovePathPoint, onNPCFinishMovePath) + onNPCWeaponStateChange, onNPCTakeDamage, onNPCGiveDamage, onNPCDeath, onNPCShotMissed, + onNPCShotPlayer, onNPCShotNPC, onNPCShotVehicle, onNPCShotObject, onNPCShotPlayerObject, + onNPCPlaybackStart, onNPCPlaybackEnd, onNPCFinishNodePoint, onNPCFinishNode, onNPCChangeNode, + onNPCFinishMovePathPoint, onNPCFinishMovePath) // include/Server/Components/Objects PROXY(IBaseObject, void, setDrawDistance, float); @@ -434,51 +436,50 @@ PROXY(IBaseObject, void, setModel, int); PROXY(IBaseObject, int, getModel); PROXY(IBaseObject, void, setCameraCollision, bool); PROXY(IBaseObject, bool, getCameraCollision); -PROXY(IBaseObject, void, move, ObjectMoveData &); +PROXY(IBaseObject, void, move, ObjectMoveData&); PROXY(IBaseObject, bool, isMoving); PROXY(IBaseObject, void, stop); -PROXY(IBaseObject, const ObjectMoveData &, getMovingData); -PROXY(IBaseObject, void, attachToVehicle, IVehicle &, Vector3, Vector3); +PROXY(IBaseObject, const ObjectMoveData&, getMovingData); +PROXY(IBaseObject, void, attachToVehicle, IVehicle&, Vector3, Vector3); PROXY(IBaseObject, void, resetAttachment); -PROXY(IBaseObject, const ObjectAttachmentData &, getAttachmentData); -PROXY(IBaseObject, bool, getMaterialData, uint32_t, const ObjectMaterialData *&); +PROXY(IBaseObject, const ObjectAttachmentData&, getAttachmentData); +PROXY(IBaseObject, bool, getMaterialData, uint32_t, const ObjectMaterialData*&); PROXY(IBaseObject, void, setMaterial, uint32_t, int, StringView, StringView, Colour); PROXY(IBaseObject, void, setMaterialText, uint32_t, StringView, ObjectMaterialSize, StringView, int, bool, Colour, Colour, ObjectMaterialTextAlign); PROXY_CAST(IBaseObject, IEntity); -PROXY(IObject, void, attachToPlayer, IPlayer &, Vector3, Vector3); -PROXY(IObject, void, attachToObject, IObject &, Vector3, Vector3, bool); +PROXY(IObject, void, attachToPlayer, IPlayer&, Vector3, Vector3); +PROXY(IObject, void, attachToObject, IObject&, Vector3, Vector3, bool); -PROXY(IPlayerObject, void, attachToObject, IPlayerObject &, Vector3, Vector3); -PROXY(IPlayerObject, void, attachToPlayer, IPlayer &, Vector3, Vector3); +PROXY(IPlayerObject, void, attachToObject, IPlayerObject&, Vector3, Vector3); +PROXY(IPlayerObject, void, attachToPlayer, IPlayer&, Vector3, Vector3); PROXY(IObjectsComponent, void, setDefaultCameraCollision, bool); PROXY(IObjectsComponent, bool, getDefaultCameraCollision); -PROXY(IObjectsComponent, IObject *, create, int, Vector3, Vector3, float); +PROXY(IObjectsComponent, IObject*, create, int, Vector3, Vector3, float); PROXY_EVENT_DISPATCHER(IObjectsComponent, ObjectEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(ObjectEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onMoved, IObject &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectMoved, IPlayer &, IPlayerObject &) -PROXY_EVENT_HANDLER_EVENT(void, onObjectSelected, IPlayer &, IObject &, int, Vector3) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectSelected, IPlayer &, IPlayerObject &, int, Vector3) -PROXY_EVENT_HANDLER_EVENT(void, onObjectEdited, IPlayer &, IObject &, ObjectEditResponse, Vector3, Vector3) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectEdited, IPlayer &, IPlayerObject &, ObjectEditResponse, Vector3, - Vector3) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerAttachedObjectEdited, IPlayer &, int, bool, const ObjectAttachmentSlotData &) +PROXY_EVENT_HANDLER_EVENT(void, onMoved, IObject&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectMoved, IPlayer&, IPlayerObject&) +PROXY_EVENT_HANDLER_EVENT(void, onObjectSelected, IPlayer&, IObject&, int, Vector3) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectSelected, IPlayer&, IPlayerObject&, int, Vector3) +PROXY_EVENT_HANDLER_EVENT(void, onObjectEdited, IPlayer&, IObject&, ObjectEditResponse, Vector3, Vector3) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerObjectEdited, IPlayer&, IPlayerObject&, ObjectEditResponse, Vector3, Vector3) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerAttachedObjectEdited, IPlayer&, int, bool, const ObjectAttachmentSlotData&) PROXY_EVENT_HANDLER_END(ObjectEventHandler, onMoved, onPlayerObjectMoved, onObjectSelected, onPlayerObjectSelected, onObjectEdited, onPlayerObjectEdited, onPlayerAttachedObjectEdited) -PROXY(IPlayerObjectData, IPlayerObject *, create, int, Vector3, Vector3, float); -PROXY(IPlayerObjectData, void, setAttachedObject, int, ObjectAttachmentSlotData &); +PROXY(IPlayerObjectData, IPlayerObject*, create, int, Vector3, Vector3, float); +PROXY(IPlayerObjectData, void, setAttachedObject, int, ObjectAttachmentSlotData&); PROXY(IPlayerObjectData, void, removeAttachedObject, int); PROXY(IPlayerObjectData, bool, hasAttachedObject, int); -PROXY(IPlayerObjectData, const ObjectAttachmentSlotData &, getAttachedObject, int); +PROXY(IPlayerObjectData, const ObjectAttachmentSlotData&, getAttachedObject, int); PROXY(IPlayerObjectData, void, beginSelecting); PROXY(IPlayerObjectData, bool, selectingObject); PROXY(IPlayerObjectData, void, endEditing); -PROXY(IPlayerObjectData, void, beginEditing, IObject &); -PROXY_OVERLOAD(IPlayerObjectData, void, beginEditing, _player, IPlayerObject &); +PROXY(IPlayerObjectData, void, beginEditing, IObject&); +PROXY_OVERLOAD(IPlayerObjectData, void, beginEditing, _player, IPlayerObject&); PROXY(IPlayerObjectData, bool, editingObject); PROXY(IPlayerObjectData, void, editAttachedObject, int); PROXY_CAST_NAMED(IPlayerObjectData, IPlayerObjectData, IPool, IPool); @@ -493,16 +494,16 @@ PROXY(IBasePickup, PickupType, getType); PROXY(IBasePickup, void, setPositionNoUpdate, Vector3); PROXY(IBasePickup, void, setModel, int, bool); PROXY(IBasePickup, int, getModel); -PROXY(IBasePickup, bool, isStreamedInForPlayer, const IPlayer &); -PROXY(IBasePickup, void, streamInForPlayer, IPlayer &); -PROXY(IBasePickup, void, streamOutForPlayer, IPlayer &); -PROXY(IBasePickup, void, setPickupHiddenForPlayer, IPlayer &, bool); -PROXY(IBasePickup, bool, isPickupHiddenForPlayer, IPlayer &); -PROXY(IBasePickup, void, setLegacyPlayer, IPlayer *); -PROXY(IBasePickup, IPlayer *, getLegacyPlayer); +PROXY(IBasePickup, bool, isStreamedInForPlayer, const IPlayer&); +PROXY(IBasePickup, void, streamInForPlayer, IPlayer&); +PROXY(IBasePickup, void, streamOutForPlayer, IPlayer&); +PROXY(IBasePickup, void, setPickupHiddenForPlayer, IPlayer&, bool); +PROXY(IBasePickup, bool, isPickupHiddenForPlayer, IPlayer&); +PROXY(IBasePickup, void, setLegacyPlayer, IPlayer*); +PROXY(IBasePickup, IPlayer*, getLegacyPlayer); PROXY_CAST(IBasePickup, IEntity); -PROXY(IPickupsComponent, IPickup *, create, int, PickupType, Vector3, uint32_t, bool); +PROXY(IPickupsComponent, IPickup*, create, int, PickupType, Vector3, uint32_t, bool); PROXY(IPickupsComponent, int, toLegacyID, int); PROXY(IPickupsComponent, int, fromLegacyID, int); PROXY(IPickupsComponent, void, releaseLegacyID, int); @@ -511,7 +512,7 @@ PROXY(IPickupsComponent, void, setLegacyID, int, int); PROXY_EVENT_DISPATCHER(IPickupsComponent, PickupEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(PickupEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerPickUpPickup, IPlayer &, IPickup &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerPickUpPickup, IPlayer&, IPickup&) PROXY_EVENT_HANDLER_END(PickupEventHandler, onPlayerPickUpPickup) PROXY(IPlayerPickupData, int, toLegacyID, int); @@ -531,69 +532,69 @@ PROXY(IPlayerRecordingData, void, stop); // include/Server/Components/TextDraws PROXY_PTR(ITextDrawBase, Vector2, getPosition); -PROXY(ITextDrawBase, ITextDrawBase &, setPosition, Vector2); +PROXY(ITextDrawBase, ITextDrawBase&, setPosition, Vector2); PROXY(ITextDrawBase, void, setText, StringView); PROXY(ITextDrawBase, StringView, getText); -PROXY(ITextDrawBase, ITextDrawBase &, setLetterSize, Vector2); +PROXY(ITextDrawBase, ITextDrawBase&, setLetterSize, Vector2); PROXY_PTR(ITextDrawBase, Vector2, getLetterSize); -PROXY(ITextDrawBase, ITextDrawBase &, setTextSize, Vector2); +PROXY(ITextDrawBase, ITextDrawBase&, setTextSize, Vector2); PROXY_PTR(ITextDrawBase, Vector2, getTextSize); -PROXY(ITextDrawBase, ITextDrawBase &, setAlignment, TextDrawAlignmentTypes); +PROXY(ITextDrawBase, ITextDrawBase&, setAlignment, TextDrawAlignmentTypes); PROXY(ITextDrawBase, TextDrawAlignmentTypes, getAlignment); -PROXY(ITextDrawBase, ITextDrawBase &, setColour, Colour); +PROXY(ITextDrawBase, ITextDrawBase&, setColour, Colour); PROXY_PTR(ITextDrawBase, Colour, getLetterColour); -PROXY(ITextDrawBase, ITextDrawBase &, useBox, bool); +PROXY(ITextDrawBase, ITextDrawBase&, useBox, bool); PROXY(ITextDrawBase, bool, hasBox); -PROXY(ITextDrawBase, ITextDrawBase &, setBoxColour, Colour); +PROXY(ITextDrawBase, ITextDrawBase&, setBoxColour, Colour); PROXY_PTR(ITextDrawBase, Colour, getBoxColour); -PROXY(ITextDrawBase, ITextDrawBase &, setShadow, int); +PROXY(ITextDrawBase, ITextDrawBase&, setShadow, int); PROXY(ITextDrawBase, int, getShadow); -PROXY(ITextDrawBase, ITextDrawBase &, setOutline, int); +PROXY(ITextDrawBase, ITextDrawBase&, setOutline, int); PROXY(ITextDrawBase, int, getOutline); -PROXY(ITextDrawBase, ITextDrawBase &, setBackgroundColour, Colour); +PROXY(ITextDrawBase, ITextDrawBase&, setBackgroundColour, Colour); PROXY_PTR(ITextDrawBase, Colour, getBackgroundColour); -PROXY(ITextDrawBase, ITextDrawBase &, setStyle, TextDrawStyle); +PROXY(ITextDrawBase, ITextDrawBase&, setStyle, TextDrawStyle); PROXY(ITextDrawBase, TextDrawStyle, getStyle); -PROXY(ITextDrawBase, ITextDrawBase &, setProportional, bool); +PROXY(ITextDrawBase, ITextDrawBase&, setProportional, bool); PROXY(ITextDrawBase, bool, isProportional); -PROXY(ITextDrawBase, ITextDrawBase &, setSelectable, bool); +PROXY(ITextDrawBase, ITextDrawBase&, setSelectable, bool); PROXY(ITextDrawBase, bool, isSelectable); -PROXY(ITextDrawBase, ITextDrawBase &, setPreviewModel, int); +PROXY(ITextDrawBase, ITextDrawBase&, setPreviewModel, int); PROXY(ITextDrawBase, int, getPreviewModel); -PROXY(ITextDrawBase, ITextDrawBase &, setPreviewRotation, Vector3); +PROXY(ITextDrawBase, ITextDrawBase&, setPreviewRotation, Vector3); PROXY(ITextDrawBase, Vector3, getPreviewRotation); -PROXY(ITextDrawBase, ITextDrawBase &, setPreviewVehicleColour, int, int); +PROXY(ITextDrawBase, ITextDrawBase&, setPreviewVehicleColour, int, int); PROXY_PTR(ITextDrawBase, IntPair, getPreviewVehicleColour); -PROXY(ITextDrawBase, ITextDrawBase &, setPreviewZoom, float); +PROXY(ITextDrawBase, ITextDrawBase&, setPreviewZoom, float); PROXY(ITextDrawBase, float, getPreviewZoom); PROXY(ITextDrawBase, void, restream); PROXY_CAST(ITextDrawBase, IIDProvider); -PROXY(ITextDraw, void, showForPlayer, IPlayer &); -PROXY(ITextDraw, void, hideForPlayer, IPlayer &); -PROXY(ITextDraw, bool, isShownForPlayer, const IPlayer &); -PROXY(ITextDraw, void, setTextForPlayer, IPlayer &, StringView); +PROXY(ITextDraw, void, showForPlayer, IPlayer&); +PROXY(ITextDraw, void, hideForPlayer, IPlayer&); +PROXY(ITextDraw, bool, isShownForPlayer, const IPlayer&); +PROXY(ITextDraw, void, setTextForPlayer, IPlayer&, StringView); PROXY(IPlayerTextDraw, void, show); PROXY(IPlayerTextDraw, void, hide); PROXY(IPlayerTextDraw, bool, isShown); -PROXY(ITextDrawsComponent, ITextDraw *, create, Vector2, StringView); -PROXY_OVERLOAD(ITextDrawsComponent, ITextDraw *, create, _model, Vector2, int); +PROXY(ITextDrawsComponent, ITextDraw*, create, Vector2, StringView); +PROXY_OVERLOAD(ITextDrawsComponent, ITextDraw*, create, _model, Vector2, int); PROXY_EVENT_DISPATCHER(ITextDrawsComponent, TextDrawEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(TextDrawEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickTextDraw, IPlayer &, ITextDraw &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickPlayerTextDraw, IPlayer &, IPlayerTextDraw &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCancelTextDrawSelection, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCancelPlayerTextDrawSelection, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickTextDraw, IPlayer&, ITextDraw&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickPlayerTextDraw, IPlayer&, IPlayerTextDraw&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCancelTextDrawSelection, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCancelPlayerTextDrawSelection, IPlayer&) PROXY_EVENT_HANDLER_END(TextDrawEventHandler, onPlayerClickTextDraw, onPlayerClickPlayerTextDraw, onPlayerCancelTextDrawSelection, onPlayerCancelPlayerTextDrawSelection) PROXY(IPlayerTextDrawData, void, beginSelection, Colour); PROXY(IPlayerTextDrawData, bool, isSelecting); PROXY(IPlayerTextDrawData, void, endSelection); -PROXY(IPlayerTextDrawData, IPlayerTextDraw *, create, Vector2, StringView); -PROXY_OVERLOAD(IPlayerTextDrawData, IPlayerTextDraw *, create, _model, Vector2, int); +PROXY(IPlayerTextDrawData, IPlayerTextDraw*, create, Vector2, StringView); +PROXY_OVERLOAD(IPlayerTextDrawData, IPlayerTextDraw*, create, _model, Vector2, int); PROXY_CAST_NAMED(IPlayerTextDrawData, IPlayerTextDrawData, IPool, IPool); // include/Server/Components/TextLabels @@ -603,9 +604,9 @@ PROXY(ITextLabelBase, void, setColour, Colour); PROXY_PTR(ITextLabelBase, Colour, getColour); PROXY(ITextLabelBase, void, setDrawDistance, float); PROXY(ITextLabelBase, float, getDrawDistance); -PROXY(ITextLabelBase, void, attachToPlayer, IPlayer &, Vector3); -PROXY(ITextLabelBase, void, attachToVehicle, IVehicle &, Vector3); -PROXY(ITextLabelBase, const TextLabelAttachmentData &, getAttachmentData); +PROXY(ITextLabelBase, void, attachToPlayer, IPlayer&, Vector3); +PROXY(ITextLabelBase, void, attachToVehicle, IVehicle&, Vector3); +PROXY(ITextLabelBase, const TextLabelAttachmentData&, getAttachmentData); PROXY(ITextLabelBase, void, detachFromPlayer, Vector3); PROXY(ITextLabelBase, void, detachFromVehicle, Vector3); PROXY(ITextLabelBase, void, setTestLOS, bool); @@ -613,21 +614,21 @@ PROXY(ITextLabelBase, bool, getTestLOS); PROXY(ITextLabelBase, void, setColourAndText, Colour, StringView); PROXY_CAST(ITextLabelBase, IEntity); -PROXY(ITextLabel, bool, isStreamedInForPlayer, IPlayer &); -PROXY(ITextLabel, void, streamInForPlayer, IPlayer &); -PROXY(ITextLabel, void, streamOutForPlayer, IPlayer &); - -PROXY(ITextLabelsComponent, ITextLabel *, create, StringView, Colour, Vector3, float, int, bool); -PROXY_OVERLOAD(ITextLabelsComponent, ITextLabel *, create, _player, StringView, Colour, Vector3, float, int, bool, - IPlayer &); -PROXY_OVERLOAD(ITextLabelsComponent, ITextLabel *, create, _vehicle, StringView, Colour, Vector3, float, int, bool, - IVehicle &); - -PROXY(IPlayerTextLabelData, IPlayerTextLabel *, create, StringView, Colour, Vector3, float, bool); -PROXY_OVERLOAD(IPlayerTextLabelData, IPlayerTextLabel *, create, _player, StringView, Colour, Vector3, float, bool, - IPlayer &); -PROXY_OVERLOAD(IPlayerTextLabelData, IPlayerTextLabel *, create, _vehicle, StringView, Colour, Vector3, float, bool, - IVehicle &); +PROXY(ITextLabel, bool, isStreamedInForPlayer, IPlayer&); +PROXY(ITextLabel, void, streamInForPlayer, IPlayer&); +PROXY(ITextLabel, void, streamOutForPlayer, IPlayer&); + +PROXY(ITextLabelsComponent, ITextLabel*, create, StringView, Colour, Vector3, float, int, bool); +PROXY_OVERLOAD(ITextLabelsComponent, ITextLabel*, create, _player, StringView, Colour, Vector3, float, int, bool, + IPlayer&); +PROXY_OVERLOAD(ITextLabelsComponent, ITextLabel*, create, _vehicle, StringView, Colour, Vector3, float, int, bool, + IVehicle&); + +PROXY(IPlayerTextLabelData, IPlayerTextLabel*, create, StringView, Colour, Vector3, float, bool); +PROXY_OVERLOAD(IPlayerTextLabelData, IPlayerTextLabel*, create, _player, StringView, Colour, Vector3, float, bool, + IPlayer&); +PROXY_OVERLOAD(IPlayerTextLabelData, IPlayerTextLabel*, create, _vehicle, StringView, Colour, Vector3, float, bool, + IVehicle&); PROXY_CAST_NAMED(IPlayerTextLabelData, IPlayerTextLabelData, IPool, IPool); // include/Server/Components/Timers @@ -641,36 +642,36 @@ PROXY_CAST_NAMED(IPlayerTextLabelData, IPlayerTextLabelData, IPool &, streamedForPlayers); -PROXY(IVehicle, IPlayer *, getDriver); -PROXY(IVehicle, const FlatHashSet &, getPassengers); +PROXY(IVehicle, bool, updateFromDriverSync, VehicleDriverSyncPacket&, IPlayer&); +PROXY(IVehicle, bool, updateFromPassengerSync, VehiclePassengerSyncPacket&, IPlayer&); +PROXY(IVehicle, bool, updateFromUnoccupied, VehicleUnoccupiedSyncPacket&, IPlayer&); +PROXY(IVehicle, bool, updateFromTrailerSync, VehicleTrailerSyncPacket&, IPlayer&); +PROXY(IVehicle, const FlatPtrHashSet&, streamedForPlayers); +PROXY(IVehicle, IPlayer*, getDriver); +PROXY(IVehicle, const FlatHashSet&, getPassengers); PROXY(IVehicle, void, setPlate, StringView); PROXY(IVehicle, StringView, getPlate); -PROXY(IVehicle, void, setDamageStatus, int, int, uint8_t, uint8_t, IPlayer *); -PROXY(IVehicle, void, getDamageStatus, int &, int &, int &, int &); +PROXY(IVehicle, void, setDamageStatus, int, int, uint8_t, uint8_t, IPlayer*); +PROXY(IVehicle, void, getDamageStatus, int&, int&, int&, int&); PROXY(IVehicle, void, setPaintJob, int); PROXY(IVehicle, int, getPaintJob); PROXY(IVehicle, void, addComponent, int); PROXY(IVehicle, int, getComponentInSlot, int); PROXY(IVehicle, void, removeComponent, int); -PROXY(IVehicle, void, putPlayer, IPlayer &, int); +PROXY(IVehicle, void, putPlayer, IPlayer&, int); PROXY(IVehicle, void, setZAngle, float); PROXY(IVehicle, float, getZAngle); -PROXY(IVehicle, void, setParams, VehicleParams &); -PROXY(IVehicle, void, setParamsForPlayer, IPlayer &, VehicleParams &); +PROXY(IVehicle, void, setParams, VehicleParams&); +PROXY(IVehicle, void, setParamsForPlayer, IPlayer&, VehicleParams&); PROXY_PTR(IVehicle, VehicleParams, getParams); PROXY(IVehicle, bool, isDead); PROXY(IVehicle, void, respawn); @@ -679,15 +680,15 @@ PROXY(IVehicle, void, setRespawnDelay, Seconds); PROXY(IVehicle, bool, isRespawning); PROXY(IVehicle, void, setInterior, int); PROXY(IVehicle, int, getInterior); -PROXY(IVehicle, void, attachTrailer, IVehicle &); +PROXY(IVehicle, void, attachTrailer, IVehicle&); PROXY(IVehicle, void, detachTrailer); PROXY(IVehicle, bool, isTrailer); -PROXY(IVehicle, IVehicle *, getTrailer); -PROXY(IVehicle, IVehicle *, getCab); +PROXY(IVehicle, IVehicle*, getTrailer); +PROXY(IVehicle, IVehicle*, getCab); PROXY(IVehicle, void, repair); -PROXY(IVehicle, void, addCarriage, IVehicle *, int); +PROXY(IVehicle, void, addCarriage, IVehicle*, int); PROXY(IVehicle, void, updateCarriage, Vector3, Vector3); -PROXY(IVehicle, const CarriagesArray &, getCarriages); +PROXY(IVehicle, const CarriagesArray&, getCarriages); PROXY(IVehicle, void, setVelocity, Vector3); PROXY(IVehicle, Vector3, getVelocity); PROXY(IVehicle, void, setAngularVelocity, Vector3); @@ -695,8 +696,8 @@ PROXY(IVehicle, Vector3, getAngularVelocity); PROXY(IVehicle, int, getModel); PROXY(IVehicle, uint8_t, getLandingGearState); PROXY(IVehicle, bool, hasBeenOccupied); -PROXY(IVehicle, const TimePoint &, getLastOccupiedTime); -PROXY(IVehicle, const TimePoint &, getLastSpawnTime); +PROXY(IVehicle, const TimePoint&, getLastOccupiedTime); +PROXY(IVehicle, const TimePoint&, getLastSpawnTime); PROXY(IVehicle, bool, isOccupied); PROXY(IVehicle, void, setSiren, bool); PROXY(IVehicle, uint8_t, getSirenState); @@ -705,30 +706,30 @@ PROXY(IVehicle, float, getTrainSpeed); PROXY(IVehicle, int, getLastDriverPoolID); PROXY_CAST(IVehicle, IEntity); -PROXY(IVehiclesComponent, VehicleModelArray &, models); -PROXY(IVehiclesComponent, IVehicle *, create, bool, int, Vector3, float, int, int, Seconds, bool); +PROXY(IVehiclesComponent, VehicleModelArray&, models); +PROXY(IVehiclesComponent, IVehicle*, create, bool, int, Vector3, float, int, int, Seconds, bool); PROXY_EVENT_DISPATCHER(IVehiclesComponent, VehicleEventHandler, getEventDispatcher); PROXY_EVENT_HANDLER_BEGIN(VehicleEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onVehicleStreamIn, IVehicle &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onVehicleStreamOut, IVehicle &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onVehicleDeath, IVehicle &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterVehicle, IPlayer &, IVehicle &, bool) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerExitVehicle, IPlayer &, IVehicle &) -PROXY_EVENT_HANDLER_EVENT(void, onVehicleDamageStatusUpdate, IVehicle &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(bool, onVehiclePaintJob, IPlayer &, IVehicle &, int) -PROXY_EVENT_HANDLER_EVENT(bool, onVehicleMod, IPlayer &, IVehicle &, int) -PROXY_EVENT_HANDLER_EVENT(bool, onVehicleRespray, IPlayer &, IVehicle &, int, int) -PROXY_EVENT_HANDLER_EVENT(void, onEnterExitModShop, IPlayer &, bool, int) -PROXY_EVENT_HANDLER_EVENT(void, onVehicleSpawn, IVehicle &) -PROXY_EVENT_HANDLER_EVENT(bool, onUnoccupiedVehicleUpdate, IVehicle &, IPlayer &, UnoccupiedVehicleUpdate const) -PROXY_EVENT_HANDLER_EVENT(bool, onTrailerUpdate, IPlayer &, IVehicle &) -PROXY_EVENT_HANDLER_EVENT(bool, onVehicleSirenStateChange, IPlayer &, IVehicle &, uint8_t) +PROXY_EVENT_HANDLER_EVENT(void, onVehicleStreamIn, IVehicle&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onVehicleStreamOut, IVehicle&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onVehicleDeath, IVehicle&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerEnterVehicle, IPlayer&, IVehicle&, bool) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerExitVehicle, IPlayer&, IVehicle&) +PROXY_EVENT_HANDLER_EVENT(void, onVehicleDamageStatusUpdate, IVehicle&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(bool, onVehiclePaintJob, IPlayer&, IVehicle&, int) +PROXY_EVENT_HANDLER_EVENT(bool, onVehicleMod, IPlayer&, IVehicle&, int) +PROXY_EVENT_HANDLER_EVENT(bool, onVehicleRespray, IPlayer&, IVehicle&, int, int) +PROXY_EVENT_HANDLER_EVENT(void, onEnterExitModShop, IPlayer&, bool, int) +PROXY_EVENT_HANDLER_EVENT(void, onVehicleSpawn, IVehicle&) +PROXY_EVENT_HANDLER_EVENT(bool, onUnoccupiedVehicleUpdate, IVehicle&, IPlayer&, UnoccupiedVehicleUpdate const) +PROXY_EVENT_HANDLER_EVENT(bool, onTrailerUpdate, IPlayer&, IVehicle&) +PROXY_EVENT_HANDLER_EVENT(bool, onVehicleSirenStateChange, IPlayer&, IVehicle&, uint8_t) PROXY_EVENT_HANDLER_END(VehicleEventHandler, onVehicleStreamIn, onVehicleStreamOut, onVehicleDeath, onPlayerEnterVehicle, onPlayerExitVehicle, onVehicleDamageStatusUpdate, onVehiclePaintJob, - onVehicleMod, onVehicleRespray, onEnterExitModShop, onVehicleSpawn, - onUnoccupiedVehicleUpdate, onTrailerUpdate, onVehicleSirenStateChange) + onVehicleMod, onVehicleRespray, onEnterExitModShop, onVehicleSpawn, onUnoccupiedVehicleUpdate, + onTrailerUpdate, onVehicleSirenStateChange) -PROXY(IPlayerVehicleData, IVehicle *, getVehicle); +PROXY(IPlayerVehicleData, IVehicle*, getVehicle); PROXY(IPlayerVehicleData, void, resetVehicle); PROXY(IPlayerVehicleData, int, getSeat); PROXY(IPlayerVehicleData, bool, isInModShop); @@ -736,41 +737,41 @@ PROXY(IPlayerVehicleData, bool, isInDriveByMode); PROXY(IPlayerVehicleData, bool, isCuffed); // include/component -PROXY(IExtensible, IExtension *, getExtension, UID); -PROXY(IExtensible, bool, addExtension, IExtension *, bool); -PROXY(IExtensible, bool, removeExtension, IExtension *); +PROXY(IExtensible, IExtension*, getExtension, UID); +PROXY(IExtensible, bool, addExtension, IExtension*, bool); +PROXY(IExtensible, bool, removeExtension, IExtension*); PROXY_OVERLOAD(IExtensible, bool, removeExtension, _uid, UID); PROXY(IComponent, int, supportedVersion); PROXY(IComponent, StringView, componentName); PROXY_CAST(IComponent, IUIDProvider); -PROXY(IComponentList, IComponent *, queryComponent, UID); +PROXY(IComponentList, IComponent*, queryComponent, UID); // include/core PROXY(IConfig, StringView, getString, StringView); -PROXY(IConfig, int *, getInt, StringView); -PROXY(IConfig, float *, getFloat, StringView); +PROXY(IConfig, int*, getInt, StringView); +PROXY(IConfig, float*, getFloat, StringView); PROXY(IConfig, size_t, getStrings, StringView, Span); PROXY(IConfig, size_t, getStringsCount, StringView); PROXY(IConfig, ConfigOptionType, getType, StringView); PROXY(IConfig, size_t, getBansCount); -PROXY(IConfig, const BanEntry &, getBan, size_t); -PROXY(IConfig, void, addBan, BanEntry &); +PROXY(IConfig, const BanEntry&, getBan, size_t); +PROXY(IConfig, void, addBan, BanEntry&); PROXY_OVERLOAD(IConfig, void, removeBan, _index, size_t); -PROXY(IConfig, void, removeBan, BanEntry &); +PROXY(IConfig, void, removeBan, BanEntry&); PROXY(IConfig, void, writeBans); PROXY(IConfig, void, reloadBans); PROXY(IConfig, void, clearBans); -PROXY(IConfig, bool, isBanned, BanEntry &); +PROXY(IConfig, bool, isBanned, BanEntry&); PROXY_PTR(IConfig, BoolStringPair, getNameFromAlias, StringView); -PROXY(IConfig, bool *, getBool, StringView); +PROXY(IConfig, bool*, getBool, StringView); PROXY(ICore, SemanticVersion, getVersion); PROXY(ICore, int, getNetworkBitStreamVersion); -PROXY(ICore, IPlayerPool &, getPlayers); -PROXY(ICore, IConfig &, getConfig); -PROXY(ICore, const FlatPtrHashSet &, getNetworks); +PROXY(ICore, IPlayerPool&, getPlayers); +PROXY(ICore, IConfig&, getConfig); +PROXY(ICore, const FlatPtrHashSet&, getNetworks); PROXY(ICore, unsigned, getTickCount); PROXY(ICore, void, setGravity, float); PROXY(ICore, float, getGravity); @@ -804,63 +805,63 @@ PROXY(IEntity, int, getVirtualWorld); PROXY(IEntity, void, setVirtualWorld, int); // include/events -PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, addEventHandler, void **, event_order_t); -PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, hasEventHandler, void **, event_order_t); -PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, removeEventHandler, void **); -PROXY_NAMED(IEventDispatcher, IEventDispatcher, size_t, count); +PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, addEventHandler, void**, event_order_t); +PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, hasEventHandler, void**, event_order_t); +PROXY_NAMED(IEventDispatcher, IEventDispatcher, bool, removeEventHandler, void**); +PROXY_NAMED(IEventDispatcher, IEventDispatcher, size_t, count); -PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, addEventHandler, void **, size_t, +PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, addEventHandler, void**, size_t, event_order_t); -PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, hasEventHandler, void **, size_t, +PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, hasEventHandler, void**, size_t, event_order_t); -PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, removeEventHandler, void **, size_t); -PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, size_t, count, size_t); -PROXY_NAMED_OVERLOAD(IIndexedEventDispatcher, IIndexedEventDispatcher, size_t, count, _index, size_t); +PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, bool, removeEventHandler, void**, size_t); +PROXY_NAMED(IIndexedEventDispatcher, IIndexedEventDispatcher, size_t, count, size_t); +PROXY_NAMED_OVERLOAD(IIndexedEventDispatcher, IIndexedEventDispatcher, size_t, count, _index, size_t); // include/network PROXY_EVENT_HANDLER_BEGIN(NetworkEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPeerConnect, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPeerDisconnect, IPlayer &, PeerDisconnectReason) +PROXY_EVENT_HANDLER_EVENT(void, onPeerConnect, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPeerDisconnect, IPlayer&, PeerDisconnectReason) PROXY_EVENT_HANDLER_END(NetworkEventHandler, onPeerConnect, onPeerDisconnect) PROXY_EVENT_HANDLER_BEGIN(NetworkInEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onReceivePacket, IPlayer &, int, NetworkBitStream &) -PROXY_EVENT_HANDLER_EVENT(bool, onReceiveRPC, IPlayer &, int, NetworkBitStream &) +PROXY_EVENT_HANDLER_EVENT(bool, onReceivePacket, IPlayer&, int, NetworkBitStream&) +PROXY_EVENT_HANDLER_EVENT(bool, onReceiveRPC, IPlayer&, int, NetworkBitStream&) PROXY_EVENT_HANDLER_END(NetworkInEventHandler, onReceivePacket, onReceiveRPC) PROXY_EVENT_HANDLER_BEGIN(SingleNetworkInEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onReceive, IPlayer &, NetworkBitStream &) +PROXY_EVENT_HANDLER_EVENT(bool, onReceive, IPlayer&, NetworkBitStream&) PROXY_EVENT_HANDLER_END(SingleNetworkInEventHandler, onReceive) PROXY_EVENT_HANDLER_BEGIN(NetworkOutEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onSendPacket, IPlayer *, int, NetworkBitStream &) -PROXY_EVENT_HANDLER_EVENT(bool, onSendRPC, IPlayer *, int, NetworkBitStream &) +PROXY_EVENT_HANDLER_EVENT(bool, onSendPacket, IPlayer*, int, NetworkBitStream&) +PROXY_EVENT_HANDLER_EVENT(bool, onSendRPC, IPlayer*, int, NetworkBitStream&) PROXY_EVENT_HANDLER_END(NetworkOutEventHandler, onSendPacket, onSendRPC) PROXY_EVENT_HANDLER_BEGIN(SingleNetworkOutEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onSend, IPlayer *, NetworkBitStream &) +PROXY_EVENT_HANDLER_EVENT(bool, onSend, IPlayer*, NetworkBitStream&) PROXY_EVENT_HANDLER_END(SingleNetworkOutEventHandler, onSend) PROXY(INetwork, ENetworkType, getNetworkType); -PROXY(INetwork, IEventDispatcher &, getEventDispatcher); -PROXY(INetwork, IEventDispatcher &, getInEventDispatcher); +PROXY(INetwork, IEventDispatcher&, getEventDispatcher); +PROXY(INetwork, IEventDispatcher&, getInEventDispatcher); PROXY_INDEXED_EVENT_DISPATCHER(INetwork, SingleNetworkInEventHandler, getPerRPCInEventDispatcher); PROXY_INDEXED_EVENT_DISPATCHER(INetwork, SingleNetworkInEventHandler, getPerPacketInEventDispatcher); PROXY_EVENT_DISPATCHER(INetwork, NetworkOutEventHandler, getOutEventDispatcher); PROXY_INDEXED_EVENT_DISPATCHER(INetwork, SingleNetworkOutEventHandler, getPerRPCOutEventDispatcher); PROXY_INDEXED_EVENT_DISPATCHER(INetwork, SingleNetworkOutEventHandler, getPerPacketOutEventDispatcher); -PROXY(INetwork, bool, sendPacket, IPlayer &, Span, int, bool); -PROXY(INetwork, bool, broadcastPacket, Span, int, const IPlayer *, bool); -PROXY(INetwork, bool, sendRPC, IPlayer &, int, Span, int, bool); -PROXY(INetwork, bool, broadcastRPC, int, Span, int, IPlayer *, bool); -PROXY(INetwork, NetworkStats, getStatistics, IPlayer *); -PROXY(INetwork, unsigned, getPing, IPlayer &); -PROXY(INetwork, void, disconnect, IPlayer &); -PROXY(INetwork, void, ban, BanEntry &, Milliseconds); -PROXY(INetwork, void, unban, BanEntry &); +PROXY(INetwork, bool, sendPacket, IPlayer&, Span, int, bool); +PROXY(INetwork, bool, broadcastPacket, Span, int, const IPlayer*, bool); +PROXY(INetwork, bool, sendRPC, IPlayer&, int, Span, int, bool); +PROXY(INetwork, bool, broadcastRPC, int, Span, int, IPlayer*, bool); +PROXY(INetwork, NetworkStats, getStatistics, IPlayer*); +PROXY(INetwork, unsigned, getPing, IPlayer&); +PROXY(INetwork, void, disconnect, IPlayer&); +PROXY(INetwork, void, ban, BanEntry&, Milliseconds); +PROXY(INetwork, void, unban, BanEntry&); PROXY(INetwork, void, update); -PROXY(INetworkComponent, INetwork *, getNetwork); +PROXY(INetworkComponent, INetwork*, getNetwork); PROXY(INetworkQueryExtension, bool, addRule, StringView, StringView) PROXY(INetworkQueryExtension, bool, removeRule, StringView) @@ -870,7 +871,7 @@ PROXY(INetworkQueryExtension, bool, isValidRule, StringView) PROXY(IPlayer, void, kick); PROXY(IPlayer, void, ban, StringView); PROXY(IPlayer, bool, isBot); -PROXY(IPlayer, const PeerNetworkData &, getNetworkData); +PROXY(IPlayer, const PeerNetworkData&, getNetworkData); PROXY(IPlayer, unsigned, getPing); PROXY(IPlayer, bool, sendPacket, Span, int, bool); PROXY(IPlayer, bool, sendRPC, int, Span, int, bool); @@ -888,8 +889,8 @@ PROXY(IPlayer, Vector3, getCameraLookAt); PROXY(IPlayer, void, setCameraBehind); PROXY(IPlayer, void, interpolateCameraPosition, Vector3, Vector3, int, PlayerCameraCutType); PROXY(IPlayer, void, interpolateCameraLookAt, Vector3, Vector3, int, PlayerCameraCutType); -PROXY(IPlayer, void, attachCameraToObject, IObject &); -PROXY_OVERLOAD(IPlayer, void, attachCameraToObject, _player, IPlayerObject &); +PROXY(IPlayer, void, attachCameraToObject, IObject&); +PROXY_OVERLOAD(IPlayer, void, attachCameraToObject, _player, IPlayerObject&); PROXY(IPlayer, EPlayerNameStatus, setName, StringView); PROXY(IPlayer, StringView, getName); PROXY(IPlayer, StringView, getSerial); @@ -907,9 +908,9 @@ PROXY(IPlayer, StringView, getShopName); PROXY(IPlayer, void, setDrunkLevel, int); PROXY(IPlayer, int, getDrunkLevel); PROXY(IPlayer, void, setColour, Colour); -PROXY(IPlayer, const Colour &, getColour); -PROXY(IPlayer, void, setOtherColour, IPlayer &, Colour); -PROXY(IPlayer, bool, getOtherColour, IPlayer &, Colour &); +PROXY(IPlayer, const Colour&, getColour); +PROXY(IPlayer, void, setOtherColour, IPlayer&, Colour); +PROXY(IPlayer, bool, getOtherColour, IPlayer&, Colour&); PROXY(IPlayer, void, setControllable, bool); PROXY(IPlayer, bool, getControllable); PROXY(IPlayer, void, setSpectating, bool); @@ -918,11 +919,11 @@ PROXY(IPlayer, unsigned, getWantedLevel); PROXY(IPlayer, void, playSound, uint32_t, Vector3); PROXY(IPlayer, uint32_t, lastPlayedSound); PROXY(IPlayer, void, playAudio, StringView, bool, Vector3, float); -PROXY(IPlayer, bool, playerCrimeReport, IPlayer &, int); +PROXY(IPlayer, bool, playerCrimeReport, IPlayer&, int); PROXY(IPlayer, void, stopAudio); PROXY(IPlayer, StringView, lastPlayedAudio); PROXY(IPlayer, void, createExplosion, Vector3, int, float); -PROXY(IPlayer, void, sendDeathMessage, IPlayer &, IPlayer *, int); +PROXY(IPlayer, void, sendDeathMessage, IPlayer&, IPlayer*, int); PROXY(IPlayer, void, sendEmptyDeathMessage); PROXY(IPlayer, void, removeDefaultObjects, unsigned, Vector3, float); PROXY(IPlayer, void, forceClassSelection); @@ -933,7 +934,7 @@ PROXY(IPlayer, int, getMoney); PROXY(IPlayer, void, setMapIcon, int, Vector3, int, Colour, MapIconStyle); PROXY(IPlayer, void, unsetMapIcon, int); PROXY(IPlayer, void, useStuntBonuses, bool); -PROXY(IPlayer, void, toggleOtherNameTag, IPlayer &, bool); +PROXY(IPlayer, void, toggleOtherNameTag, IPlayer&, bool); PROXY(IPlayer, void, setTime, Hours, Minutes); PROXY_PTR(IPlayer, HoursMinutesPair, getTime); PROXY(IPlayer, void, useClock, bool); @@ -950,27 +951,27 @@ PROXY(IPlayer, float, getArmour); PROXY(IPlayer, void, setGravity, float); PROXY(IPlayer, float, getGravity); PROXY(IPlayer, void, setWorldTime, Hours); -PROXY(IPlayer, void, applyAnimation, const AnimationData &, PlayerAnimationSyncType); +PROXY(IPlayer, void, applyAnimation, const AnimationData&, PlayerAnimationSyncType); PROXY(IPlayer, void, clearAnimations, PlayerAnimationSyncType); PROXY(IPlayer, PlayerAnimationData, getAnimationData); PROXY(IPlayer, PlayerSurfingData, getSurfingData); -PROXY(IPlayer, void, streamInForPlayer, IPlayer &); -PROXY(IPlayer, bool, isStreamedInForPlayer, const IPlayer &); -PROXY(IPlayer, void, streamOutForPlayer, IPlayer &); -PROXY(IPlayer, const FlatPtrHashSet &, streamedForPlayers); +PROXY(IPlayer, void, streamInForPlayer, IPlayer&); +PROXY(IPlayer, bool, isStreamedInForPlayer, const IPlayer&); +PROXY(IPlayer, void, streamOutForPlayer, IPlayer&); +PROXY(IPlayer, const FlatPtrHashSet&, streamedForPlayers); PROXY(IPlayer, PlayerState, getState); PROXY(IPlayer, void, setTeam, int); PROXY(IPlayer, int, getTeam); PROXY(IPlayer, void, setSkin, int, bool); PROXY(IPlayer, int, getSkin); -PROXY(IPlayer, void, setChatBubble, StringView, const Colour &, float, Milliseconds); -PROXY(IPlayer, void, sendClientMessage, const Colour &, StringView); -PROXY(IPlayer, void, sendChatMessage, IPlayer &, StringView); +PROXY(IPlayer, void, setChatBubble, StringView, const Colour&, float, Milliseconds); +PROXY(IPlayer, void, sendClientMessage, const Colour&, StringView); +PROXY(IPlayer, void, sendChatMessage, IPlayer&, StringView); PROXY(IPlayer, void, sendCommand, StringView); PROXY(IPlayer, void, sendGameText, StringView, Milliseconds, int); PROXY(IPlayer, void, hideGameText, int); PROXY(IPlayer, bool, hasGameText, int); -PROXY(IPlayer, bool, getGameText, int, StringView &, Milliseconds &, Milliseconds &); +PROXY(IPlayer, bool, getGameText, int, StringView&, Milliseconds&, Milliseconds&); PROXY(IPlayer, void, setWeather, int); PROXY(IPlayer, int, getWeather); PROXY(IPlayer, void, setWorldBounds, Vector4); @@ -984,23 +985,23 @@ PROXY(IPlayer, void, setVelocity, Vector3); PROXY(IPlayer, Vector3, getVelocity); PROXY(IPlayer, void, setInterior, unsigned); PROXY(IPlayer, unsigned, getInterior); -PROXY(IPlayer, const PlayerKeyData &, getKeyData); -PROXY(IPlayer, const SkillsArray &, getSkillLevels); -PROXY(IPlayer, const PlayerAimData &, getAimData); -PROXY(IPlayer, const PlayerBulletData &, getBulletData); +PROXY(IPlayer, const PlayerKeyData&, getKeyData); +PROXY(IPlayer, const SkillsArray&, getSkillLevels); +PROXY(IPlayer, const PlayerAimData&, getAimData); +PROXY(IPlayer, const PlayerBulletData&, getBulletData); PROXY(IPlayer, void, useCameraTargeting, bool); PROXY(IPlayer, bool, hasCameraTargeting); PROXY(IPlayer, void, removeFromVehicle, bool); -PROXY(IPlayer, IPlayer *, getCameraTargetPlayer); -PROXY(IPlayer, IVehicle *, getCameraTargetVehicle); -PROXY(IPlayer, IObject *, getCameraTargetObject); -PROXY(IPlayer, IActor *, getCameraTargetActor); -PROXY(IPlayer, IPlayer *, getTargetPlayer); -PROXY(IPlayer, IActor *, getTargetActor); +PROXY(IPlayer, IPlayer*, getCameraTargetPlayer); +PROXY(IPlayer, IVehicle*, getCameraTargetVehicle); +PROXY(IPlayer, IObject*, getCameraTargetObject); +PROXY(IPlayer, IActor*, getCameraTargetActor); +PROXY(IPlayer, IPlayer*, getTargetPlayer); +PROXY(IPlayer, IActor*, getTargetActor); PROXY(IPlayer, void, setRemoteVehicleCollisions, bool); -PROXY(IPlayer, void, spectatePlayer, IPlayer &, PlayerSpectateMode); -PROXY(IPlayer, void, spectateVehicle, IVehicle &, PlayerSpectateMode); -PROXY(IPlayer, const PlayerSpectateData &, getSpectateData); +PROXY(IPlayer, void, spectatePlayer, IPlayer&, PlayerSpectateMode); +PROXY(IPlayer, void, spectateVehicle, IVehicle&, PlayerSpectateMode); +PROXY(IPlayer, const PlayerSpectateData&, getSpectateData); PROXY(IPlayer, void, sendClientCheck, int, int, int, int); PROXY(IPlayer, void, toggleGhostMode, bool); PROXY(IPlayer, bool, isGhostModeEnabled); @@ -1014,20 +1015,20 @@ PROXY(IPlayer, bool, isTeleportAllowed); PROXY(IPlayer, bool, isUsingOfficialClient); PROXY_CAST(IPlayer, IEntity); -PROXY(IPlayerPool, const FlatPtrHashSet &, entries); -PROXY(IPlayerPool, const FlatPtrHashSet &, players); -PROXY(IPlayerPool, const FlatPtrHashSet &, bots); -PROXY(IPlayerPool, bool, isNameTaken, StringView, const IPlayer *); -PROXY(IPlayerPool, void, sendClientMessageToAll, const Colour &, StringView); -PROXY(IPlayerPool, void, sendChatMessageToAll, IPlayer &, StringView); +PROXY(IPlayerPool, const FlatPtrHashSet&, entries); +PROXY(IPlayerPool, const FlatPtrHashSet&, players); +PROXY(IPlayerPool, const FlatPtrHashSet&, bots); +PROXY(IPlayerPool, bool, isNameTaken, StringView, const IPlayer*); +PROXY(IPlayerPool, void, sendClientMessageToAll, const Colour&, StringView); +PROXY(IPlayerPool, void, sendChatMessageToAll, IPlayer&, StringView); PROXY(IPlayerPool, void, sendGameTextToAll, StringView, Milliseconds, int); PROXY(IPlayerPool, void, hideGameTextForAll, int); -PROXY(IPlayerPool, void, sendDeathMessageToAll, IPlayer *, IPlayer &, int); +PROXY(IPlayerPool, void, sendDeathMessageToAll, IPlayer*, IPlayer&, int); PROXY(IPlayerPool, void, sendEmptyDeathMessageToAll); PROXY(IPlayerPool, void, createExplosionForAll, Vector3, int, float); -PROXY_PTR(IPlayerPool, NewConnectionPlayerPair, requestPlayer, const PeerNetworkData &, const PeerRequestParams &); -PROXY(IPlayerPool, void, broadcastPacket, Span, int, const IPlayer *, bool); -PROXY(IPlayerPool, void, broadcastRPC, int, Span, int, const IPlayer *, bool); +PROXY_PTR(IPlayerPool, NewConnectionPlayerPair, requestPlayer, const PeerNetworkData&, const PeerRequestParams&); +PROXY(IPlayerPool, void, broadcastPacket, Span, int, const IPlayer*, bool); +PROXY(IPlayerPool, void, broadcastRPC, int, Span, int, const IPlayer*, bool); PROXY(IPlayerPool, bool, isNameValid, StringView); PROXY(IPlayerPool, void, allowNickNameCharacter, char, bool); PROXY(IPlayerPool, bool, isNickNameCharacterAllowed, char); @@ -1036,86 +1037,86 @@ PROXY_CAST_NAMED(IPlayerPool, IPlayerPool, IReadOnlyPool, IReadOnlyPool PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerSpawnEventHandler, getPlayerSpawnDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerSpawnEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestSpawn, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerSpawn, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerRequestSpawn, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerSpawn, IPlayer&) PROXY_EVENT_HANDLER_END(PlayerSpawnEventHandler, onPlayerRequestSpawn, onPlayerSpawn) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerConnectEventHandler, getPlayerConnectDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerConnectEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onIncomingConnection, IPlayer &, StringView, unsigned short) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerConnect, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerDisconnect, IPlayer &, PeerDisconnectReason) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClientInit, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onIncomingConnection, IPlayer&, StringView, unsigned short) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerConnect, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerDisconnect, IPlayer&, PeerDisconnectReason) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClientInit, IPlayer&) PROXY_EVENT_HANDLER_END(PlayerConnectEventHandler, onIncomingConnection, onPlayerConnect, onPlayerDisconnect, onPlayerClientInit) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerStreamEventHandler, getPlayerStreamDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerStreamEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerStreamIn, IPlayer &, IPlayer &) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerStreamOut, IPlayer &, IPlayer &) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerStreamIn, IPlayer&, IPlayer&) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerStreamOut, IPlayer&, IPlayer&) PROXY_EVENT_HANDLER_END(PlayerStreamEventHandler, onPlayerStreamIn, onPlayerStreamOut) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerTextEventHandler, getPlayerTextDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerTextEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerText, IPlayer &, StringView) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCommandText, IPlayer &, StringView) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerText, IPlayer&, StringView) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerCommandText, IPlayer&, StringView) PROXY_EVENT_HANDLER_END(PlayerTextEventHandler, onPlayerText, onPlayerCommandText) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerShotEventHandler, getPlayerShotDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerShotEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotMissed, IPlayer &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotPlayer, IPlayer &, IPlayer &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotVehicle, IPlayer &, IVehicle &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotObject, IPlayer &, IObject &, const PlayerBulletData &) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotPlayerObject, IPlayer &, IPlayerObject &, const PlayerBulletData &) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotMissed, IPlayer&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotPlayer, IPlayer&, IPlayer&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotVehicle, IPlayer&, IVehicle&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotObject, IPlayer&, IObject&, const PlayerBulletData&) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerShotPlayerObject, IPlayer&, IPlayerObject&, const PlayerBulletData&) PROXY_EVENT_HANDLER_END(PlayerShotEventHandler, onPlayerShotMissed, onPlayerShotPlayer, onPlayerShotVehicle, onPlayerShotObject, onPlayerShotPlayerObject) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerChangeEventHandler, getPlayerChangeDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerChangeEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerScoreChange, IPlayer &, int) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerNameChange, IPlayer &, StringView) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerInteriorChange, IPlayer &, unsigned, unsigned) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerStateChange, IPlayer &, PlayerState, PlayerState) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerKeyStateChange, IPlayer &, uint32_t, uint32_t) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerScoreChange, IPlayer&, int) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerNameChange, IPlayer&, StringView) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerInteriorChange, IPlayer&, unsigned, unsigned) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerStateChange, IPlayer&, PlayerState, PlayerState) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerKeyStateChange, IPlayer&, uint32_t, uint32_t) PROXY_EVENT_HANDLER_END(PlayerChangeEventHandler, onPlayerScoreChange, onPlayerNameChange, onPlayerInteriorChange, onPlayerStateChange, onPlayerKeyStateChange) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerDamageEventHandler, getPlayerDamageDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerDamageEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerDeath, IPlayer &, IPlayer *, int) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerTakeDamage, IPlayer &, IPlayer *, float, unsigned, BodyPart) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerGiveDamage, IPlayer &, IPlayer &, float, unsigned, BodyPart) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerDeath, IPlayer&, IPlayer*, int) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerTakeDamage, IPlayer&, IPlayer*, float, unsigned, BodyPart) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerGiveDamage, IPlayer&, IPlayer&, float, unsigned, BodyPart) PROXY_EVENT_HANDLER_END(PlayerDamageEventHandler, onPlayerDeath, onPlayerTakeDamage, onPlayerGiveDamage) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerClickEventHandler, getPlayerClickDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerClickEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickMap, IPlayer &, Vector3) -PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickPlayer, IPlayer &, IPlayer &, PlayerClickSource) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickMap, IPlayer&, Vector3) +PROXY_EVENT_HANDLER_EVENT(void, onPlayerClickPlayer, IPlayer&, IPlayer&, PlayerClickSource) PROXY_EVENT_HANDLER_END(PlayerClickEventHandler, onPlayerClickMap, onPlayerClickPlayer) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerCheckEventHandler, getPlayerCheckDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerCheckEventHandler) -PROXY_EVENT_HANDLER_EVENT(void, onClientCheckResponse, IPlayer &, int, int, int) +PROXY_EVENT_HANDLER_EVENT(void, onClientCheckResponse, IPlayer&, int, int, int) PROXY_EVENT_HANDLER_END(PlayerCheckEventHandler, onClientCheckResponse) PROXY_EVENT_DISPATCHER(IPlayerPool, PlayerUpdateEventHandler, getPlayerUpdateDispatcher); PROXY_EVENT_HANDLER_BEGIN(PlayerUpdateEventHandler) -PROXY_EVENT_HANDLER_EVENT(bool, onPlayerUpdate, IPlayer &, TimePoint) +PROXY_EVENT_HANDLER_EVENT(bool, onPlayerUpdate, IPlayer&, TimePoint) PROXY_EVENT_HANDLER_END(PlayerUpdateEventHandler, onPlayerUpdate) PROXY_EVENT_DISPATCHER_NAMED(IPlayerPool, PoolEventHandler, PoolEventHandler, getPoolEventDispatcher); // include/pool -PROXY_CAST_NAMED(IPoolComponent, IPoolComponent, IPool, IPool); -PROXY_NAMED(IReadOnlyPool, IReadOnlyPool, void *, get, int); -PROXY_NAMED_PTR(IReadOnlyPool, IReadOnlyPool, SizePair, bounds); - -PROXY_NAMED(IPool, IPool, void, release, int); -PROXY_NAMED(IPool, IPool, void, lock, int); -PROXY_NAMED(IPool, IPool, bool, unlock, int); -PROXY_NAMED(IPool, IPool, IEventDispatcher> &, getPoolEventDispatcher); -PROXY_NAMED(IPool, IPool, size_t, count); +PROXY_CAST_NAMED(IPoolComponent, IPoolComponent, IPool, IPool); +PROXY_NAMED(IReadOnlyPool, IReadOnlyPool, void*, get, int); +PROXY_NAMED_PTR(IReadOnlyPool, IReadOnlyPool, SizePair, bounds); + +PROXY_NAMED(IPool, IPool, void, release, int); +PROXY_NAMED(IPool, IPool, void, lock, int); +PROXY_NAMED(IPool, IPool, bool, unlock, int); +PROXY_NAMED(IPool, IPool, IEventDispatcher>&, getPoolEventDispatcher); +PROXY_NAMED(IPool, IPool, size_t, count); #ifdef __clang__ #pragma clang diagnostic pop diff --git a/src/sampsharp-component/proxies/config.cpp b/src/sampsharp-component/proxies/config.cpp index 88da8dd7..eb9bbe22 100644 --- a/src/sampsharp-component/proxies/config.cpp +++ b/src/sampsharp-component/proxies/config.cpp @@ -1,21 +1,21 @@ #include #include "../proxy-api.hpp" -typedef bool(API_CALLTYPE *OptionEnumeratorCallbackFn)(StringView name, ConfigOptionType type); +typedef bool(API_CALLTYPE* OptionEnumeratorCallbackFn)(StringView name, ConfigOptionType type); class OptionEnumeratorCallbackImpl final : public OptionEnumeratorCallback { OptionEnumeratorCallbackFn _fn; public: - OptionEnumeratorCallbackImpl(OptionEnumeratorCallbackFn fn) : _fn(fn) {} - bool proc(StringView name, ConfigOptionType type) override + OptionEnumeratorCallbackImpl(OptionEnumeratorCallbackFn fn) : + _fn(fn) { - return _fn(name, type); } + bool proc(StringView name, ConfigOptionType type) override { return _fn(name, type); } }; -extern "C" SDK_EXPORT void __CDECL IConfig_enumOptions(IConfig *subject, OptionEnumeratorCallbackFn callback) +extern "C" SDK_EXPORT void __CDECL IConfig_enumOptions(IConfig* subject, OptionEnumeratorCallbackFn callback) { if (!subject) { diff --git a/src/sampsharp-component/proxies/extension.cpp b/src/sampsharp-component/proxies/extension.cpp index e535f216..7ab254a3 100644 --- a/src/sampsharp-component/proxies/extension.cpp +++ b/src/sampsharp-component/proxies/extension.cpp @@ -3,20 +3,22 @@ #include "../proxy-api.hpp" -typedef void(API_CALLTYPE * free_fn)(); +typedef void(API_CALLTYPE* free_fn)(); class ManagedExtensionImpl final : IExtension { private: UID extensionID_; free_fn free_fptr_; - void * handle_; + void* handle_; -public: - ManagedExtensionImpl(UID extensionID, free_fn free_fptr, void * handle) : +public: + ManagedExtensionImpl(UID extensionID, free_fn free_fptr, void* handle) : extensionID_(extensionID), free_fptr_(free_fptr), - handle_(handle) { } + handle_(handle) + { + } UID getExtensionID() override { return extensionID_; } @@ -24,38 +26,39 @@ class ManagedExtensionImpl final : IExtension { free_fptr_(); delete this; - } + } - void * getHandle() {return handle_; } + void* getHandle() { return handle_; } - void reset() override { } + void reset() override {} }; -extern "C" SDK_EXPORT ManagedExtensionImpl * __CDECL ManagedExtensionImpl_create(UID a, free_fn b, void * c) +extern "C" SDK_EXPORT ManagedExtensionImpl* __CDECL ManagedExtensionImpl_create(UID a, free_fn b, void* c) { return new ManagedExtensionImpl(a, b, c); } -extern "C" SDK_EXPORT void __CDECL ManagedExtensionImpl_delete(ManagedExtensionImpl * handler) +extern "C" SDK_EXPORT void __CDECL ManagedExtensionImpl_delete(ManagedExtensionImpl* handler) { delete handler; } -extern "C" SDK_EXPORT void * __CDECL ManagedExtensionImpl_getHandle(ManagedExtensionImpl * handler) +extern "C" SDK_EXPORT void* __CDECL ManagedExtensionImpl_getHandle(ManagedExtensionImpl* handler) { return handler->getHandle(); } -struct workaround { - void * vptr; +struct workaround +{ + void* vptr; FlatHashMap> miscExtensions; }; -extern "C" SDK_EXPORT IExtension * __CDECL IExtensible_getExtension_workaround(IExtensible * subject, UID extensionID) +extern "C" SDK_EXPORT IExtension* __CDECL IExtensible_getExtension_workaround(IExtensible* subject, UID extensionID) { // workaround for the fact that the SDK doesn't expose the miscExtensions field // ref: https://github.com/openmultiplayer/open.mp-sdk/issues/44 - workaround * w = (workaround *) subject; + workaround* w = (workaround*)subject; auto it = w->miscExtensions.find(extensionID); if (it != w->miscExtensions.end()) @@ -65,4 +68,3 @@ extern "C" SDK_EXPORT IExtension * __CDECL IExtensible_getExtension_workaround(I return subject->getExtension(extensionID); } - diff --git a/src/sampsharp-component/proxies/logger.cpp b/src/sampsharp-component/proxies/logger.cpp index 1be0e01a..7d61115a 100644 --- a/src/sampsharp-component/proxies/logger.cpp +++ b/src/sampsharp-component/proxies/logger.cpp @@ -1,26 +1,38 @@ #include #include "../proxy-api.hpp" -extern "C" SDK_EXPORT void __CDECL ILogger_printLn(ILogger * subject, const char * msg) +extern "C" SDK_EXPORT void __CDECL ILogger_printLn(ILogger* subject, const char* msg) { - if (!subject) { return; } + if (!subject) + { + return; + } return subject->printLn("%s", msg); } -extern "C" SDK_EXPORT void __CDECL ILogger_logLn(ILogger * subject, LogLevel level, const char * msg) +extern "C" SDK_EXPORT void __CDECL ILogger_logLn(ILogger* subject, LogLevel level, const char* msg) { - if (!subject) { return; } + if (!subject) + { + return; + } return subject->logLn(level, "%s", msg); } -extern "C" SDK_EXPORT void __CDECL ILogger_printLnU8(ILogger * subject, const char * msg) +extern "C" SDK_EXPORT void __CDECL ILogger_printLnU8(ILogger* subject, const char* msg) { - if (!subject) { return; } + if (!subject) + { + return; + } return subject->printLnU8("%s", msg); } -extern "C" SDK_EXPORT void __CDECL ILogger_logLnU8(ILogger * subject, LogLevel level, const char * msg) +extern "C" SDK_EXPORT void __CDECL ILogger_logLnU8(ILogger* subject, LogLevel level, const char* msg) { - if (!subject) { return; } + if (!subject) + { + return; + } return subject->logLnU8(level, "%s", msg); } diff --git a/src/sampsharp-component/proxies/pool-event-handler.cpp b/src/sampsharp-component/proxies/pool-event-handler.cpp index 53db3c73..fc24c7e3 100644 --- a/src/sampsharp-component/proxies/pool-event-handler.cpp +++ b/src/sampsharp-component/proxies/pool-event-handler.cpp @@ -4,33 +4,30 @@ #include "../proxy-api.hpp" // PoolEventHandler -class PoolEventHandlerImpl final : PoolEventHandler +class PoolEventHandlerImpl final : PoolEventHandler { - typedef void(API_CALLTYPE * handle_fn)(void *&); + typedef void(API_CALLTYPE* handle_fn)(void*&); handle_fn onPoolEntryCreated_; handle_fn onPoolEntryDestroyed_; -public: - PoolEventHandlerImpl(void ** onPoolEntryCreated, void ** onPoolEntryDestroyed) : - onPoolEntryCreated_(reinterpret_cast(onPoolEntryCreated)), - onPoolEntryDestroyed_(reinterpret_cast(onPoolEntryDestroyed)) { } - void onPoolEntryCreated(void *& entry) override - { - onPoolEntryCreated_(entry); - } - void onPoolEntryDestroyed(void *& entry) override +public: + PoolEventHandlerImpl(void** onPoolEntryCreated, void** onPoolEntryDestroyed) : + onPoolEntryCreated_(reinterpret_cast(onPoolEntryCreated)), + onPoolEntryDestroyed_(reinterpret_cast(onPoolEntryDestroyed)) { - onPoolEntryDestroyed_(entry); } + + void onPoolEntryCreated(void*& entry) override { onPoolEntryCreated_(entry); } + void onPoolEntryDestroyed(void*& entry) override { onPoolEntryDestroyed_(entry); } }; -extern "C" SDK_EXPORT PoolEventHandlerImpl * __CDECL PoolEventHandlerImpl_create(void ** a, void ** b) +extern "C" SDK_EXPORT PoolEventHandlerImpl* __CDECL PoolEventHandlerImpl_create(void** a, void** b) { return new PoolEventHandlerImpl(a, b); } -extern "C" SDK_EXPORT void __CDECL PoolEventHandlerImpl_delete(const PoolEventHandlerImpl * handler) +extern "C" SDK_EXPORT void __CDECL PoolEventHandlerImpl_delete(const PoolEventHandlerImpl* handler) { delete handler; } diff --git a/src/sampsharp-component/proxies/pool.cpp b/src/sampsharp-component/proxies/pool.cpp index 00b4fa16..a21e0707 100644 --- a/src/sampsharp-component/proxies/pool.cpp +++ b/src/sampsharp-component/proxies/pool.cpp @@ -2,8 +2,10 @@ #include "../proxy-api.hpp" template -struct IPoolHack : public IPool { - const FlatPtrHashSet& exposeEntries() { +struct IPoolHack : public IPool +{ + const FlatPtrHashSet& exposeEntries() + { return this->entries(); // Accessing protected method } }; diff --git a/src/sampsharp-component/proxies/robin-hood.cpp b/src/sampsharp-component/proxies/robin-hood.cpp index be8e088f..3a275a17 100644 --- a/src/sampsharp-component/proxies/robin-hood.cpp +++ b/src/sampsharp-component/proxies/robin-hood.cpp @@ -1,27 +1,31 @@ #include #include "../proxy-api.hpp" -struct FlatHashSetPtr { void* a; void* b; }; +struct FlatHashSetPtr +{ + void* a; + void* b; +}; -extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_begin(FlatPtrHashSet& set) +extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_begin(FlatPtrHashSet& set) { auto it = set.begin(); return *(FlatHashSetPtr*)⁢ } -extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_end(FlatPtrHashSet& set) +extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_end(FlatPtrHashSet& set) { auto it = set.end(); return *(FlatHashSetPtr*)⁢ } -extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_inc(FlatPtrHashSet::iterator value) +extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatPtrHashSet_inc(FlatPtrHashSet::iterator value) { value++; return *(FlatHashSetPtr*)&value; } -extern "C" SDK_EXPORT size_t __CDECL FlatPtrHashSet_size(FlatPtrHashSet& set) +extern "C" SDK_EXPORT size_t __CDECL FlatPtrHashSet_size(FlatPtrHashSet& set) { return set.size(); } @@ -44,7 +48,7 @@ extern "C" SDK_EXPORT FlatHashSetPtr __CDECL FlatHashSetStringView_inc(FlatHashS return *(FlatHashSetPtr*)&value; } -extern "C" SDK_EXPORT size_t __CDECL FlatHashSetStringView_size(FlatHashSet& set) +extern "C" SDK_EXPORT size_t __CDECL FlatHashSetStringView_size(FlatHashSet& set) { return set.size(); } diff --git a/src/sampsharp-component/proxies/vehicles.cpp b/src/sampsharp-component/proxies/vehicles.cpp index eee8a648..2b5732ad 100644 --- a/src/sampsharp-component/proxies/vehicles.cpp +++ b/src/sampsharp-component/proxies/vehicles.cpp @@ -17,7 +17,8 @@ extern "C" SDK_EXPORT bool vehicles_getVehicleModelInfo(int model, VehicleModelI { return Impl::getVehicleModelInfo(model, type, out); } -extern "C" SDK_EXPORT void vehicles_getRandomVehicleColour(int modelid, int& colour1, int& colour2, int& colour3, int& colour4) +extern "C" SDK_EXPORT void vehicles_getRandomVehicleColour(int modelid, int& colour1, int& colour2, int& colour3, + int& colour4) { return Impl::getRandomVehicleColour(modelid, colour1, colour2, colour3, colour4); } diff --git a/src/sampsharp-component/proxy-api.hpp b/src/sampsharp-component/proxy-api.hpp index e2fcccc9..92aeb4a5 100644 --- a/src/sampsharp-component/proxy-api.hpp +++ b/src/sampsharp-component/proxy-api.hpp @@ -26,8 +26,8 @@ namespace sampsharp [[noreturn]] inline T proxy_default_unsupported(const char* name) { std::fprintf(stderr, - "sampsharp: PROXY call with null subject returning an unsupported type for '%s'. Aborting.\n", - name); + "sampsharp: PROXY call with null subject returning an unsupported type for '%s'. Aborting.\n", + name); std::terminate(); } @@ -60,66 +60,105 @@ namespace sampsharp // // expand variadic args as a numbered parameter list. e.g. _EXPAND_PARAM(a, b, X, Y) -> aXb _2, aYb _1 -#define _EXPAND_PARAM(prefix,postfix,...) _EXPAND_PARAM_N(__VA_ARGS__,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)(prefix,postfix,##__VA_ARGS__) -#define _EXPAND_PARAM_N(_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, n, ...) _EXPAND_PARAM ## n +#define _EXPAND_PARAM(prefix, postfix, ...) \ + _EXPAND_PARAM_N(__VA_ARGS__, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, \ + 2, 1, 0) \ + (prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM_N(_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, n, ...) \ + _EXPAND_PARAM##n #define _EXPAND_PARAM1(prefix, postfix, type, ...) prefix##type##postfix _1 -#define _EXPAND_PARAM2(prefix, postfix, type, ...) prefix##type##postfix _2, _EXPAND_PARAM1(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM3(prefix, postfix, type, ...) prefix##type##postfix _3, _EXPAND_PARAM2(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM4(prefix, postfix, type, ...) prefix##type##postfix _4, _EXPAND_PARAM3(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM5(prefix, postfix, type, ...) prefix##type##postfix _5, _EXPAND_PARAM4(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM6(prefix, postfix, type, ...) prefix##type##postfix _6, _EXPAND_PARAM5(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM7(prefix, postfix, type, ...) prefix##type##postfix _7, _EXPAND_PARAM6(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM8(prefix, postfix, type, ...) prefix##type##postfix _8, _EXPAND_PARAM7(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM9(prefix, postfix, type, ...) prefix##type##postfix _9, _EXPAND_PARAM8(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM10(prefix, postfix, type, ...) prefix##type##postfix _10, _EXPAND_PARAM9(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM11(prefix, postfix, type, ...) prefix##type##postfix _11, _EXPAND_PARAM10(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM12(prefix, postfix, type, ...) prefix##type##postfix _12, _EXPAND_PARAM11(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM13(prefix, postfix, type, ...) prefix##type##postfix _13, _EXPAND_PARAM12(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM14(prefix, postfix, type, ...) prefix##type##postfix _14, _EXPAND_PARAM13(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM15(prefix, postfix, type, ...) prefix##type##postfix _15, _EXPAND_PARAM14(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM16(prefix, postfix, type, ...) prefix##type##postfix _16, _EXPAND_PARAM15(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM17(prefix, postfix, type, ...) prefix##type##postfix _17, _EXPAND_PARAM16(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM18(prefix, postfix, type, ...) prefix##type##postfix _18, _EXPAND_PARAM17(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM19(prefix, postfix, type, ...) prefix##type##postfix _19, _EXPAND_PARAM18(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM20(prefix, postfix, type, ...) prefix##type##postfix _20, _EXPAND_PARAM19(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM21(prefix, postfix, type, ...) prefix##type##postfix _21, _EXPAND_PARAM20(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM22(prefix, postfix, type, ...) prefix##type##postfix _22, _EXPAND_PARAM21(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM23(prefix, postfix, type, ...) prefix##type##postfix _23, _EXPAND_PARAM22(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM24(prefix, postfix, type, ...) prefix##type##postfix _24, _EXPAND_PARAM23(prefix, postfix, ##__VA_ARGS__) -#define _EXPAND_PARAM25(prefix, postfix, type, ...) prefix##type##postfix _25, _EXPAND_PARAM24(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM2(prefix, postfix, type, ...) \ + prefix##type##postfix _2, _EXPAND_PARAM1(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM3(prefix, postfix, type, ...) \ + prefix##type##postfix _3, _EXPAND_PARAM2(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM4(prefix, postfix, type, ...) \ + prefix##type##postfix _4, _EXPAND_PARAM3(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM5(prefix, postfix, type, ...) \ + prefix##type##postfix _5, _EXPAND_PARAM4(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM6(prefix, postfix, type, ...) \ + prefix##type##postfix _6, _EXPAND_PARAM5(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM7(prefix, postfix, type, ...) \ + prefix##type##postfix _7, _EXPAND_PARAM6(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM8(prefix, postfix, type, ...) \ + prefix##type##postfix _8, _EXPAND_PARAM7(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM9(prefix, postfix, type, ...) \ + prefix##type##postfix _9, _EXPAND_PARAM8(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM10(prefix, postfix, type, ...) \ + prefix##type##postfix _10, _EXPAND_PARAM9(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM11(prefix, postfix, type, ...) \ + prefix##type##postfix _11, _EXPAND_PARAM10(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM12(prefix, postfix, type, ...) \ + prefix##type##postfix _12, _EXPAND_PARAM11(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM13(prefix, postfix, type, ...) \ + prefix##type##postfix _13, _EXPAND_PARAM12(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM14(prefix, postfix, type, ...) \ + prefix##type##postfix _14, _EXPAND_PARAM13(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM15(prefix, postfix, type, ...) \ + prefix##type##postfix _15, _EXPAND_PARAM14(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM16(prefix, postfix, type, ...) \ + prefix##type##postfix _16, _EXPAND_PARAM15(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM17(prefix, postfix, type, ...) \ + prefix##type##postfix _17, _EXPAND_PARAM16(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM18(prefix, postfix, type, ...) \ + prefix##type##postfix _18, _EXPAND_PARAM17(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM19(prefix, postfix, type, ...) \ + prefix##type##postfix _19, _EXPAND_PARAM18(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM20(prefix, postfix, type, ...) \ + prefix##type##postfix _20, _EXPAND_PARAM19(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM21(prefix, postfix, type, ...) \ + prefix##type##postfix _21, _EXPAND_PARAM20(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM22(prefix, postfix, type, ...) \ + prefix##type##postfix _22, _EXPAND_PARAM21(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM23(prefix, postfix, type, ...) \ + prefix##type##postfix _23, _EXPAND_PARAM22(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM24(prefix, postfix, type, ...) \ + prefix##type##postfix _24, _EXPAND_PARAM23(prefix, postfix, ##__VA_ARGS__) +#define _EXPAND_PARAM25(prefix, postfix, type, ...) \ + prefix##type##postfix _25, _EXPAND_PARAM24(prefix, postfix, ##__VA_ARGS__) // expand variadic args as a numbered argument list. e.g. _EXPAND_ARG(,X, Y) -> _2, _1 -#define _EXPAND_ARG(prefix, ...) _EXPAND_ARG_N(__VA_ARGS__,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)(prefix,##__VA_ARGS__) -#define _EXPAND_ARG_N(_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, n, ...) _EXPAND_ARG ## n -#define _EXPAND_ARG1(prefix,type, ...) prefix _1 -#define _EXPAND_ARG2(prefix,type, ...) prefix _2, _EXPAND_ARG1(prefix,##__VA_ARGS__) -#define _EXPAND_ARG3(prefix,type, ...) prefix _3, _EXPAND_ARG2(prefix,##__VA_ARGS__) -#define _EXPAND_ARG4(prefix,type, ...) prefix _4, _EXPAND_ARG3(prefix,##__VA_ARGS__) -#define _EXPAND_ARG5(prefix,type, ...) prefix _5, _EXPAND_ARG4(prefix,##__VA_ARGS__) -#define _EXPAND_ARG6(prefix,type, ...) prefix _6, _EXPAND_ARG5(prefix,##__VA_ARGS__) -#define _EXPAND_ARG7(prefix,type, ...) prefix _7, _EXPAND_ARG6(prefix,##__VA_ARGS__) -#define _EXPAND_ARG8(prefix,type, ...) prefix _8, _EXPAND_ARG7(prefix,##__VA_ARGS__) -#define _EXPAND_ARG9(prefix,type, ...) prefix _9, _EXPAND_ARG8(prefix,##__VA_ARGS__) -#define _EXPAND_ARG10(prefix,type, ...) prefix _10, _EXPAND_ARG9(prefix,##__VA_ARGS__) -#define _EXPAND_ARG11(prefix,type, ...) prefix _11, _EXPAND_ARG10(prefix,##__VA_ARGS__) -#define _EXPAND_ARG12(prefix,type, ...) prefix _12, _EXPAND_ARG11(prefix,##__VA_ARGS__) -#define _EXPAND_ARG13(prefix,type, ...) prefix _13, _EXPAND_ARG12(prefix,##__VA_ARGS__) -#define _EXPAND_ARG14(prefix,type, ...) prefix _14, _EXPAND_ARG13(prefix,##__VA_ARGS__) -#define _EXPAND_ARG15(prefix,type, ...) prefix _15, _EXPAND_ARG14(prefix,##__VA_ARGS__) -#define _EXPAND_ARG16(prefix,type, ...) prefix _16, _EXPAND_ARG15(prefix,##__VA_ARGS__) -#define _EXPAND_ARG17(prefix,type, ...) prefix _17, _EXPAND_ARG16(prefix,##__VA_ARGS__) -#define _EXPAND_ARG18(prefix,type, ...) prefix _18, _EXPAND_ARG17(prefix,##__VA_ARGS__) -#define _EXPAND_ARG19(prefix,type, ...) prefix _19, _EXPAND_ARG18(prefix,##__VA_ARGS__) -#define _EXPAND_ARG20(prefix,type, ...) prefix _20, _EXPAND_ARG19(prefix,##__VA_ARGS__) -#define _EXPAND_ARG21(prefix,type, ...) prefix _21, _EXPAND_ARG20(prefix,##__VA_ARGS__) -#define _EXPAND_ARG22(prefix,type, ...) prefix _22, _EXPAND_ARG21(prefix,##__VA_ARGS__) -#define _EXPAND_ARG23(prefix,type, ...) prefix _23, _EXPAND_ARG22(prefix,##__VA_ARGS__) -#define _EXPAND_ARG24(prefix,type, ...) prefix _24, _EXPAND_ARG23(prefix,##__VA_ARGS__) -#define _EXPAND_ARG25(prefix,type, ...) prefix _25, _EXPAND_ARG24(prefix,##__VA_ARGS__) +#define _EXPAND_ARG(prefix, ...) \ + _EXPAND_ARG_N(__VA_ARGS__, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, \ + 1, 0) \ + (prefix, ##__VA_ARGS__) +#define _EXPAND_ARG_N(_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, n, ...) \ + _EXPAND_ARG##n +#define _EXPAND_ARG1(prefix, type, ...) prefix _1 +#define _EXPAND_ARG2(prefix, type, ...) prefix _2, _EXPAND_ARG1(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG3(prefix, type, ...) prefix _3, _EXPAND_ARG2(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG4(prefix, type, ...) prefix _4, _EXPAND_ARG3(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG5(prefix, type, ...) prefix _5, _EXPAND_ARG4(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG6(prefix, type, ...) prefix _6, _EXPAND_ARG5(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG7(prefix, type, ...) prefix _7, _EXPAND_ARG6(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG8(prefix, type, ...) prefix _8, _EXPAND_ARG7(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG9(prefix, type, ...) prefix _9, _EXPAND_ARG8(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG10(prefix, type, ...) prefix _10, _EXPAND_ARG9(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG11(prefix, type, ...) prefix _11, _EXPAND_ARG10(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG12(prefix, type, ...) prefix _12, _EXPAND_ARG11(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG13(prefix, type, ...) prefix _13, _EXPAND_ARG12(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG14(prefix, type, ...) prefix _14, _EXPAND_ARG13(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG15(prefix, type, ...) prefix _15, _EXPAND_ARG14(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG16(prefix, type, ...) prefix _16, _EXPAND_ARG15(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG17(prefix, type, ...) prefix _17, _EXPAND_ARG16(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG18(prefix, type, ...) prefix _18, _EXPAND_ARG17(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG19(prefix, type, ...) prefix _19, _EXPAND_ARG18(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG20(prefix, type, ...) prefix _20, _EXPAND_ARG19(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG21(prefix, type, ...) prefix _21, _EXPAND_ARG20(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG22(prefix, type, ...) prefix _22, _EXPAND_ARG21(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG23(prefix, type, ...) prefix _23, _EXPAND_ARG22(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG24(prefix, type, ...) prefix _24, _EXPAND_ARG23(prefix, ##__VA_ARGS__) +#define _EXPAND_ARG25(prefix, type, ...) prefix _25, _EXPAND_ARG24(prefix, ##__VA_ARGS__) /// expand variadic args as a numbered initializer list. e.g. _EXPAND_INIT(X, Y) -> X_(_2), Y_(_1) -#define _EXPAND_INIT(...) _EXPAND_INIT_N(__VA_ARGS__,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)(__VA_ARGS__) -#define _EXPAND_INIT_N(_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, n, ...) _EXPAND_INIT ## n +#define _EXPAND_INIT(...) \ + _EXPAND_INIT_N(__VA_ARGS__, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, \ + 2, 1, 0) \ + (__VA_ARGS__) +#define _EXPAND_INIT_N(_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, n, ...) \ + _EXPAND_INIT##n #define _EXPAND_INIT1(type, ...) type##_(_1) #define _EXPAND_INIT2(type, ...) type##_(_2), _EXPAND_INIT1(__VA_ARGS__) #define _EXPAND_INIT3(type, ...) type##_(_3), _EXPAND_INIT2(__VA_ARGS__) @@ -146,108 +185,133 @@ namespace sampsharp #define _EXPAND_INIT24(type, ...) type##_(_24), _EXPAND_INIT23(__VA_ARGS__) #define _EXPAND_INIT25(type, ...) type##_(_25), _EXPAND_INIT24(__VA_ARGS__) -#define __PROXY_IMPL(type_subject, type_return, method, proxy_name, ...) \ - extern "C" SDK_EXPORT type_return __CDECL \ - proxy_name(type_subject * subject __VA_OPT__(, _EXPAND_PARAM(,,##__VA_ARGS__))) \ - { \ - if (!subject) { return ::sampsharp::proxy_default(#proxy_name); } \ - return subject -> method ( \ - __VA_OPT__(_EXPAND_ARG(,##__VA_ARGS__)) \ - ); \ +#define __PROXY_IMPL(type_subject, type_return, method, proxy_name, ...) \ + extern "C" SDK_EXPORT type_return __CDECL proxy_name( \ + type_subject* subject __VA_OPT__(, _EXPAND_PARAM(, , ##__VA_ARGS__))) \ + { \ + if (!subject) \ + { \ + return ::sampsharp::proxy_default(#proxy_name); \ + } \ + return subject->method(__VA_OPT__(_EXPAND_ARG(, ##__VA_ARGS__))); \ } -#define __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, proxy_name, ...) \ - extern "C" SDK_EXPORT void __CDECL \ - proxy_name(type_subject * subject __VA_OPT__(, _EXPAND_PARAM(,,__VA_ARGS__)), type_return * result) \ - { \ - if (!subject) { if (result) { *result = type_return{}; } return; } \ - *result = subject -> method ( \ - __VA_OPT__(_EXPAND_ARG(,##__VA_ARGS__)) \ - ); \ +#define __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, proxy_name, ...) \ + extern "C" SDK_EXPORT void __CDECL proxy_name(type_subject* subject __VA_OPT__(, _EXPAND_PARAM(, , __VA_ARGS__)), \ + type_return* result) \ + { \ + if (!subject) \ + { \ + if (result) \ + { \ + *result = type_return{}; \ + } \ + return; \ + } \ + *result = subject->method(__VA_OPT__(_EXPAND_ARG(, ##__VA_ARGS__))); \ } // // macros for definition of exported proxy functions // - -#define __PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name) \ - extern "C" SDK_EXPORT type_to * __CDECL \ - cast_##type_from_name##_to_##type_to_name(type_from * from) \ - { \ - return static_cast(from); \ +#define __PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name) \ + extern "C" SDK_EXPORT type_to* __CDECL cast_##type_from_name##_to_##type_to_name(type_from* from) \ + { \ + return static_cast(from); \ } -/// proxy function for casting from one type to another and vice versa e.g. PROXY_CAST_NAMED(IFoo, foo, IBar, bar) -> IBar * cast_foo_to_bar(IFoo * from) { return static_cast(from); } -#define PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name) \ - __PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name); \ +/// proxy function for casting from one type to another and vice versa e.g. PROXY_CAST_NAMED(IFoo, foo, IBar, bar) -> +/// IBar * cast_foo_to_bar(IFoo * from) { return static_cast(from); } +#define PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name) \ + __PROXY_CAST_NAMED(type_from, type_from_name, type_to, type_to_name); \ __PROXY_CAST_NAMED(type_to, type_to_name, type_from, type_from_name) -/// proxy function for casting from one type to another e.g. PROXY_CAST(IFoo, IBar) -> IBar * cast_IFoo_to_IBar(IFoo * from) { return static_cast(from); } +/// proxy function for casting from one type to another e.g. PROXY_CAST(IFoo, IBar) -> IBar * cast_IFoo_to_IBar(IFoo * +/// from) { return static_cast(from); } #define PROXY_CAST(type_from, type_to) PROXY_CAST_NAMED(type_from, type_from, type_to, type_to) - + /// proxy function macro. e.g. PROXY(subj, int, foo, bool) -> int subj_foo(subj * x, bool _1) { return x->foo(_1); } -#define PROXY(type_subject, type_return, method, ...) __PROXY_IMPL(type_subject, type_return, method, type_subject##_##method, __VA_ARGS__) +#define PROXY(type_subject, type_return, method, ...) \ + __PROXY_IMPL(type_subject, type_return, method, type_subject##_##method, __VA_ARGS__) -/// proxy function macro. e.g. PROXY_RESULT_PTR(subj, int, foo, bool) -> void subj_foo(subj * x, bool _1, int * result) { *result = x->foo(_1); } -#define PROXY_PTR(type_subject, type_return, method, ...) __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, type_subject##_##method, __VA_ARGS__) +/// proxy function macro. e.g. PROXY_RESULT_PTR(subj, int, foo, bool) -> void subj_foo(subj * x, bool _1, int * result) +/// { *result = x->foo(_1); } +#define PROXY_PTR(type_subject, type_return, method, ...) \ + __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, type_subject##_##method, __VA_ARGS__) -/// proxy function macro for an overload. output is similar to PROXY macro, except the function name is post-fixed by overload argument -#define PROXY_OVERLOAD(type_subject, type_return, method, overload, ...) __PROXY_IMPL(type_subject, type_return, method, type_subject##_##method##overload, __VA_ARGS__) +/// proxy function macro for an overload. output is similar to PROXY macro, except the function name is post-fixed by +/// overload argument +#define PROXY_OVERLOAD(type_subject, type_return, method, overload, ...) \ + __PROXY_IMPL(type_subject, type_return, method, type_subject##_##method##overload, __VA_ARGS__) -/// proxy function macro for an overload. output is similar to PROXY_PTR macro, except the function name is post-fixed by overload argument -#define PROXY_OVERLOAD_PTR(type_subject, type_return, method, overload, ...) __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, type_subject##_##method##overload, __VA_ARGS__) +/// proxy function macro for an overload. output is similar to PROXY_PTR macro, except the function name is post-fixed +/// by overload argument +#define PROXY_OVERLOAD_PTR(type_subject, type_return, method, overload, ...) \ + __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, type_subject##_##method##overload, __VA_ARGS__) /// proxy function macro. e.g. PROXY(subj, int, foo, bool) -> int subj_foo(subj * x, bool _1) { return x->foo(_1); } -#define PROXY_NAMED(type_subject, name_subject, type_return, method, ...) __PROXY_IMPL(type_subject, type_return, method, name_subject##_##method, __VA_ARGS__) +#define PROXY_NAMED(type_subject, name_subject, type_return, method, ...) \ + __PROXY_IMPL(type_subject, type_return, method, name_subject##_##method, __VA_ARGS__) -/// proxy function macro. e.g. PROXY_RESULT_PTR(subj, int, foo, bool) -> void subj_foo(subj * x, bool _1, int * result) { *result = x->foo(_1); } -#define PROXY_NAMED_PTR(type_subject, name_subject, type_return, method, ...) __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, name_subject##_##method, __VA_ARGS__) +/// proxy function macro. e.g. PROXY_RESULT_PTR(subj, int, foo, bool) -> void subj_foo(subj * x, bool _1, int * result) +/// { *result = x->foo(_1); } +#define PROXY_NAMED_PTR(type_subject, name_subject, type_return, method, ...) \ + __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, name_subject##_##method, __VA_ARGS__) -/// proxy function macro for an overload. output is similar to PROXY macro, except the function name is post-fixed by overload argument -#define PROXY_NAMED_OVERLOAD(type_subject, name_subject, type_return, method, overload, ...) __PROXY_IMPL(type_subject, type_return, method, name_subject##_##method##overload, __VA_ARGS__) +/// proxy function macro for an overload. output is similar to PROXY macro, except the function name is post-fixed by +/// overload argument +#define PROXY_NAMED_OVERLOAD(type_subject, name_subject, type_return, method, overload, ...) \ + __PROXY_IMPL(type_subject, type_return, method, name_subject##_##method##overload, __VA_ARGS__) -/// proxy function macro for an overload. output is similar to PROXY_PTR macro, except the function name is post-fixed by overload argument -#define PROXY_NAMED_OVERLOAD_PTR(type_subject, name_subject, type_return, method, overload, ...) __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, name_subject##_##method##overload, __VA_ARGS__) +/// proxy function macro for an overload. output is similar to PROXY_PTR macro, except the function name is post-fixed +/// by overload argument +#define PROXY_NAMED_OVERLOAD_PTR(type_subject, name_subject, type_return, method, overload, ...) \ + __PROXY_IMPL_RESULT_PTR(type_subject, type_return, method, name_subject##_##method##overload, __VA_ARGS__) /// proxy for event dispatcher functions and function to get the event dispatcher -#define PROXY_EVENT_DISPATCHER(type_subject, type_handler, method) \ +#define PROXY_EVENT_DISPATCHER(type_subject, type_handler, method) \ PROXY(type_subject, IEventDispatcher&, method); /// proxy for event dispatcher functions and function to get the event dispatcher wit specific handler name -#define PROXY_EVENT_DISPATCHER_NAMED(type_subject, handler_type, handler_name, method) \ +#define PROXY_EVENT_DISPATCHER_NAMED(type_subject, handler_type, handler_name, method) \ PROXY(type_subject, IEventDispatcher&, method); /// proxy for event dispatcher functions and function to get the event dispatcher -#define PROXY_INDEXED_EVENT_DISPATCHER(type_subject, type_handler, method) \ +#define PROXY_INDEXED_EVENT_DISPATCHER(type_subject, type_handler, method) \ PROXY(type_subject, IIndexedEventDispatcher&, method); -/// start of event handler proxy class -#define PROXY_EVENT_HANDLER_BEGIN(handler_type) \ - class handler_type##Impl final : handler_type { +/// start of event handler proxy class +#define PROXY_EVENT_HANDLER_BEGIN(handler_type) \ + class handler_type##Impl final : handler_type \ + { /// end of event handler proxy class + functions for creating/destroying proxy -#define PROXY_EVENT_HANDLER_END(handler_type, ...) \ - public: \ - handler_type##Impl(_EXPAND_ARG(void**, __VA_ARGS__)) : \ - _EXPAND_INIT(__VA_ARGS__) { } \ - }; \ - extern "C" SDK_EXPORT handler_type##Impl* __CDECL handler_type##Impl_create(_EXPAND_ARG(void**, __VA_ARGS__)) \ - { \ - return new handler_type##Impl(_EXPAND_ARG(,##__VA_ARGS__)); \ - } \ - extern "C" SDK_EXPORT void __CDECL handler_type##Impl_delete(handler_type##Impl* handler) \ - { \ - delete handler; \ +#define PROXY_EVENT_HANDLER_END(handler_type, ...) \ +public: \ + handler_type##Impl(_EXPAND_ARG(void**, __VA_ARGS__)) : \ + _EXPAND_INIT(__VA_ARGS__) \ + { \ + } \ + } \ + ; \ + extern "C" SDK_EXPORT handler_type##Impl* __CDECL handler_type##Impl_create(_EXPAND_ARG(void**, __VA_ARGS__)) \ + { \ + return new handler_type##Impl(_EXPAND_ARG(, ##__VA_ARGS__)); \ + } \ + extern "C" SDK_EXPORT void __CDECL handler_type##Impl_delete(handler_type##Impl* handler) \ + { \ + delete handler; \ } /// event handler function in event handler proxy class -#define PROXY_EVENT_HANDLER_EVENT(type_return, name, ...) \ - private: \ - typedef type_return(API_CALLTYPE * name##_fn)(_EXPAND_PARAM(, , __VA_ARGS__)); \ - void** name##_ = nullptr; \ - public: \ - type_return name(_EXPAND_PARAM(, , __VA_ARGS__)) override \ - { \ - return ((name##_fn)name##_)(_EXPAND_ARG(,##__VA_ARGS__)); \ +#define PROXY_EVENT_HANDLER_EVENT(type_return, name, ...) \ +private: \ + typedef type_return(API_CALLTYPE* name##_fn)(_EXPAND_PARAM(, , __VA_ARGS__)); \ + void** name##_ = nullptr; \ + \ +public: \ + type_return name(_EXPAND_PARAM(, , __VA_ARGS__)) override \ + { \ + return ((name##_fn)name##_)(_EXPAND_ARG(, ##__VA_ARGS__)); \ } diff --git a/src/sampsharp-component/sampsharp-component.cpp b/src/sampsharp-component/sampsharp-component.cpp index 93917c69..396086bf 100644 --- a/src/sampsharp-component/sampsharp-component.cpp +++ b/src/sampsharp-component/sampsharp-component.cpp @@ -8,12 +8,12 @@ #define CFG_ENTRY_POINT_METHOD "sampsharp.entry_point_method" #define CFG_DISABLE_CRASH_HANDLER "sampsharp.disable_crash_handler" -static void __CDECL __setOnCleanup(void **cb) +static void __CDECL __setOnCleanup(void** cb) { SampSharpComponent::getInstance()->setOnCleanup((on_cleanup_fn)cb); } -static void __CDECL __setOnFreeComponent(void **cb) +static void __CDECL __setOnFreeComponent(void** cb) { SampSharpComponent::getInstance()->setOnFreeComponent((on_free_component_fn)cb); } @@ -25,7 +25,7 @@ StringView SampSharpComponent::componentName() const SemanticVersion SampSharpComponent::componentVersion() const { - return { VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILD }; + return {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILD}; } void SampSharpComponent::onLoad(ICore* c) @@ -33,25 +33,28 @@ void SampSharpComponent::onLoad(ICore* c) core_ = c; bool disableCrashHandler = *c->getConfig().getBool(CFG_DISABLE_CRASH_HANDLER); - if(!disableCrashHandler) { + if (!disableCrashHandler) + { sampsharp::crash::install(c); } } void SampSharpComponent::provideConfiguration(ILogger& logger, IEarlyConfig& config, const bool defaults) { - #define initConfigString(key, value) \ - if(defaults || config.getType(key) == ConfigOptionType_None) { \ - config.setString(key, value); \ - } - +#define initConfigString(key, value) \ + if (defaults || config.getType(key) == ConfigOptionType_None) \ + { \ + config.setString(key, value); \ + } + initConfigString(CFG_DIRECTORY, "gamemode"); initConfigString(CFG_ASSEMBLY, "GameMode"); initConfigString(CFG_ENTRY_POINT_TYPE, "SampSharp.Entrypoint"); initConfigString(CFG_ENTRY_POINT_METHOD, "Initialize"); - if(defaults || config.getType(CFG_DISABLE_CRASH_HANDLER) == ConfigOptionType_None) { - config.setBool(CFG_DISABLE_CRASH_HANDLER, false); + if (defaults || config.getType(CFG_DISABLE_CRASH_HANDLER) == ConfigOptionType_None) + { + config.setBool(CFG_DISABLE_CRASH_HANDLER, false); } } @@ -67,33 +70,38 @@ void SampSharpComponent::onInit(IComponentList* components) std::string entry_point = entry_point_type.to_string() + ", " + assembly.to_string(); const auto full_entry_point = StringView(entry_point); - const char * error = nullptr; - - if(!managed_host_.initialize(&error)) + const char* error = nullptr; + + if (!managed_host_.initialize(&error)) { - core_->logLn(Error, "Failed to initialize the .NET host framework resolver. Has the .NET runtime been installed?"); + core_->logLn(Error, + "Failed to initialize the .NET host framework resolver. Has the .NET runtime been installed?"); core_->logLn(Error, "Error message: %s", error); return; } - if(!managed_host_.loadFor(directory, assembly, &error)) + if (!managed_host_.loadFor(directory, assembly, &error)) { - core_->logLn(Error, "Failed to initialize the .NET runtime for '%s/%s'. Is the '*.runtimeconfig.json' file available? Is the .NET runtime available?", directory.to_string().c_str(), assembly.to_string().c_str()); + core_->logLn(Error, + "Failed to initialize the .NET runtime for '%s/%s'. Is the '*.runtimeconfig.json' file available? " + "Is the .NET runtime available?", + directory.to_string().c_str(), assembly.to_string().c_str()); core_->logLn(Error, "Error message: %s", error); return; } on_init_fn on_init; - if(!managed_host_.getEntryPoint(full_entry_point, entry_point_method, reinterpret_cast(&on_init), &error)) + if (!managed_host_.getEntryPoint(full_entry_point, entry_point_method, reinterpret_cast(&on_init), &error)) { - core_->logLn(Error, "The entrypoint '%s.%s, %s' could not be found.", entry_point_type.to_string().c_str(), entry_point_method.to_string().c_str(), assembly.to_string().c_str()); + core_->logLn(Error, "The entrypoint '%s.%s, %s' could not be found.", entry_point_type.to_string().c_str(), + entry_point_method.to_string().c_str(), assembly.to_string().c_str()); core_->logLn(Error, "Error message: %s", error); return; } - SampSharpInfo info { VERSION_API, componentVersion() }; - SampSharpInitParams init { core_, components, &info, __setOnCleanup, __setOnFreeComponent }; - + SampSharpInfo info{VERSION_API, componentVersion()}; + SampSharpInitParams init{core_, components, &info, __setOnCleanup, __setOnFreeComponent}; + on_init(init); } @@ -107,11 +115,11 @@ void SampSharpComponent::free() { on_cleanup_(); } - + delete this; } -void SampSharpComponent::onFree(IComponent *component) +void SampSharpComponent::onFree(IComponent* component) { if (on_free_component_) { diff --git a/src/sampsharp-component/sampsharp-component.hpp b/src/sampsharp-component/sampsharp-component.hpp index 40095753..7b9f681f 100644 --- a/src/sampsharp-component/sampsharp-component.hpp +++ b/src/sampsharp-component/sampsharp-component.hpp @@ -7,58 +7,61 @@ struct SampSharpInfo { - SampSharpInfo(int api_version, SemanticVersion version) : - size(sizeof(SampSharpInfo)), + SampSharpInfo(int api_version, SemanticVersion version) : + size(sizeof(SampSharpInfo)), api_version(api_version), - version(version) { } + version(version) + { + } // sizeof(SampSharpInfo) for backwards compatibility - size_t size; + size_t size; // version of SampSharp component <> hosted API. Version mismatch will cause launch failure. - int api_version; + int api_version; // version of the SampSharp component - SemanticVersion version; + SemanticVersion version; }; -typedef void(API_CALLTYPE *on_cleanup_fn)(); -typedef void(API_CALLTYPE *on_free_component_fn)(IComponent *component); - -typedef void(API_CALLTYPE *configure_callback_fn)(void **cb); +typedef void(API_CALLTYPE* on_cleanup_fn)(); +typedef void(API_CALLTYPE* on_free_component_fn)(IComponent* component); +typedef void(API_CALLTYPE* configure_callback_fn)(void** cb); struct SampSharpInitParams { - SampSharpInitParams(ICore * core, IComponentList * componentList, SampSharpInfo * info, configure_callback_fn setOnCleanup, configure_callback_fn setOnFreeComponent) : + SampSharpInitParams(ICore* core, IComponentList* componentList, SampSharpInfo* info, + configure_callback_fn setOnCleanup, configure_callback_fn setOnFreeComponent) : size(sizeof(SampSharpInitParams)), info(info), core(core), componentList(componentList), setOnCleanup(setOnCleanup), - setOnFreeComponent(setOnFreeComponent) { } + setOnFreeComponent(setOnFreeComponent) + { + } // sizeof(SampSharpInitParams) for backwards compatibility - size_t size; - SampSharpInfo * info; - ICore * core; - IComponentList * componentList; + size_t size; + SampSharpInfo* info; + ICore* core; + IComponentList* componentList; configure_callback_fn setOnCleanup; configure_callback_fn setOnFreeComponent; }; -typedef void (CORECLR_DELEGATE_CALLTYPE *on_init_fn)(SampSharpInitParams); +typedef void(CORECLR_DELEGATE_CALLTYPE* on_init_fn)(SampSharpInitParams); struct ISampSharpComponent : IComponent { PROVIDE_UID(0x0B61929D1E94A319); }; -class SampSharpComponent final - : public ISampSharpComponent +class SampSharpComponent final : public ISampSharpComponent { private: - ICore * core_ = nullptr; - ManagedHost managed_host_ {}; - inline static SampSharpComponent * instance_ = nullptr; + ICore* core_ = nullptr; + ManagedHost managed_host_{}; + inline static SampSharpComponent* instance_ = nullptr; on_cleanup_fn on_cleanup_ = nullptr; on_free_component_fn on_free_component_ = nullptr; @@ -67,23 +70,23 @@ class SampSharpComponent final SemanticVersion componentVersion() const override; - void onLoad(ICore * c) override; + void onLoad(ICore* c) override; + + void provideConfiguration(ILogger& logger, IEarlyConfig& config, bool defaults) override; - void provideConfiguration(ILogger & logger, IEarlyConfig & config, bool defaults) override; - - void onInit(IComponentList * components) override; + void onInit(IComponentList* components) override; void onReady() override; void free() override; - void onFree(IComponent *component) override; + void onFree(IComponent* component) override; void reset() override; void setOnCleanup(on_cleanup_fn cb) { on_cleanup_ = cb; } void setOnFreeComponent(on_free_component_fn cb) { on_free_component_ = cb; } - - static SampSharpComponent * getInstance(); + + static SampSharpComponent* getInstance(); };