diff --git a/media-layer/core/src/base.cpp b/media-layer/core/src/base.cpp index 2be4af6b..be187143 100644 --- a/media-layer/core/src/base.cpp +++ b/media-layer/core/src/base.cpp @@ -30,7 +30,7 @@ int media_SDL_PollEvent(SDL_Event *event) { return ret; } -int media_SDL_PushEvent(SDL_Event *event) { +int media_SDL_PushEvent(const SDL_Event *event) { queue.push_back(*event); return 1; } diff --git a/media-layer/include/SDL/SDL.h b/media-layer/include/SDL/SDL.h index 4cd12b1f..c9697ba0 100644 --- a/media-layer/include/SDL/SDL.h +++ b/media-layer/include/SDL/SDL.h @@ -13,7 +13,7 @@ extern "C" { int media_SDL_Init(uint32_t flags); int media_SDL_PollEvent(SDL_Event *event); -int media_SDL_PushEvent(SDL_Event *event); +int media_SDL_PushEvent(const SDL_Event *event); void media_SDL_WM_SetCaption(const char *title, const char *icon); typedef enum { diff --git a/media-layer/trampoline/src/GLESv1_CM.cpp b/media-layer/trampoline/src/GLESv1_CM.cpp index a8ecc88b..2ac594e3 100644 --- a/media-layer/trampoline/src/GLESv1_CM.cpp +++ b/media-layer/trampoline/src/GLESv1_CM.cpp @@ -65,16 +65,19 @@ struct gl_state_t { } } } + [[nodiscard]] bool get_array_enabled_const(const GLenum array) const { + return const_cast(this)->get_array_enabled(array); + } #ifndef MEDIA_LAYER_TRAMPOLINE_GUEST - void send_array_to_driver(const GLenum array) { - const bool state = get_array_enabled(array); + void send_array_to_driver(const GLenum array) const { + const bool state = get_array_enabled_const(array); if (state) { media_glEnableClientState(array); } else { media_glDisableClientState(array); } } - void send_to_driver() { + void send_to_driver() const { send_array_to_driver(GL_VERTEX_ARRAY); send_array_to_driver(GL_COLOR_ARRAY); send_array_to_driver(GL_TEXTURE_COORD_ARRAY); @@ -121,7 +124,7 @@ void _media_restore_gl_state() { #define CALL_GL_POINTER(unique_id, name) \ CALL(unique_id, name, unused, ()) \ media_glBindBuffer(GL_ARRAY_BUFFER, args.next()); \ - gl_array_details_t state = args.next(); \ + const gl_array_details_t &state = args.next(); \ func(state.size, state.type, state.stride, (const void *) uintptr_t(state.pointer)); \ return 0; \ } @@ -153,7 +156,7 @@ CALL(15, media_glDrawArrays, void, (GLenum mode, GLint first, GLsizei count)) #ifdef MEDIA_LAYER_TRAMPOLINE_GUEST trampoline(true, gl_state, mode, first, count); #else - gl_state_t gl_state = args.next(); + const gl_state_t &gl_state = args.next(); gl_state.send_to_driver(); GLenum mode = args.next(); GLint first = args.next(); @@ -167,7 +170,7 @@ CALL(70, media_glMultiDrawArrays, void, (GLenum mode, const GLint *first, const #ifdef MEDIA_LAYER_TRAMPOLINE_GUEST trampoline(true, gl_state, mode, copy_array(drawcount, first), copy_array(drawcount, count)); #else - gl_state_t gl_state = args.next(); + const gl_state_t &gl_state = args.next(); gl_state.send_to_driver(); GLenum mode = args.next(); uint32_t drawcount; @@ -578,7 +581,7 @@ CALL(47, media_glAlphaFunc, void, (GLenum func, GLclampf ref)) } #ifdef MEDIA_LAYER_TRAMPOLINE_HOST -static int get_glGetFloatv_params_size(GLenum pname) { +static int get_glGetFloatv_params_size(const GLenum pname) { switch (pname) { case GL_MODELVIEW_MATRIX: case GL_PROJECTION_MATRIX: { @@ -588,7 +591,7 @@ static int get_glGetFloatv_params_size(GLenum pname) { return 2; } default: { - ERR("Unsupported media_glGetFloatv Property: %u", pname); + ERR("Unsupported glGetFloatv Property: %u", pname); } } } @@ -598,7 +601,7 @@ CALL(48, media_glGetFloatv, void, (GLenum pname, GLfloat *params)) trampoline(false, pname, uint32_t(params)); #else GLenum pname = args.next(); - int size = get_glGetFloatv_params_size(pname); + const int size = get_glGetFloatv_params_size(pname); GLfloat *params = new GLfloat[size]; func(pname, params); writer(args.next(), params, size * sizeof(GLfloat)); @@ -718,7 +721,7 @@ CALL(58, media_glIsEnabled, GLboolean, (GLenum cap)) } #ifdef MEDIA_LAYER_TRAMPOLINE_HOST -static int get_glGetIntegerv_params_size(GLenum pname) { +static int get_glGetIntegerv_params_size(const GLenum pname) { switch (pname) { case GL_TEXTURE_BINDING_2D: case GL_PACK_ALIGNMENT: @@ -729,7 +732,7 @@ static int get_glGetIntegerv_params_size(GLenum pname) { return 4; } default: { - ERR("Unsupported media_glGetIntegerv Property: %u", pname); + ERR("Unsupported glGetIntegerv Property: %u", pname); } } } @@ -743,7 +746,7 @@ CALL(61, media_glGetIntegerv, void, (GLenum pname, GLint *params)) trampoline(false, pname, uint32_t(params)); #else GLenum pname = args.next(); - int size = get_glGetIntegerv_params_size(pname); + const int size = get_glGetIntegerv_params_size(pname); GLint *params = new GLint[size]; func(pname, params); writer(args.next(), params, size * sizeof(GLint)); @@ -810,7 +813,7 @@ CALL(72, media_glNormalPointer, void, (GLenum type, GLsizei stride, const void * } #else media_glBindBuffer(GL_ARRAY_BUFFER, args.next()); - gl_array_details_t state = args.next(); + const gl_array_details_t &state = args.next(); func(state.type, state.stride, (const void *) uintptr_t(state.pointer)); return 0; #endif diff --git a/media-layer/trampoline/src/guest/guest.h b/media-layer/trampoline/src/guest/guest.h index d85eb72c..2dcf3787 100644 --- a/media-layer/trampoline/src/guest/guest.h +++ b/media-layer/trampoline/src/guest/guest.h @@ -48,14 +48,6 @@ inline void _handle_trampoline_arg(unsigned char *&out, const copy_a } } } -// Variadic Templates -__attribute__((unused)) static void _add_to_trampoline_args(__attribute__((unused)) unsigned char *&out) { -} -template -void _add_to_trampoline_args(unsigned char *&out, const T &first, Args&&... args) { - _handle_trampoline_arg(out, first); - _add_to_trampoline_args(out, std::forward(args)...); -} // Main Trampoline Function template @@ -63,7 +55,7 @@ unsigned int _trampoline(const unsigned int id, const bool allow_early_return, A // Create Arguments static unsigned char out[MAX_TRAMPOLINE_ARGS_SIZE]; unsigned char *end = out; - _add_to_trampoline_args(end, std::forward(args)...); + (_handle_trampoline_arg(end, std::forward(args)), ...); // https://stackoverflow.com/a/25683817 const uint32_t length = end - out; // Call uint32_t ret = 0; diff --git a/media-layer/trampoline/src/host/host.h b/media-layer/trampoline/src/host/host.h index ca5acf9e..88107210 100644 --- a/media-layer/trampoline/src/host/host.h +++ b/media-layer/trampoline/src/host/host.h @@ -26,9 +26,9 @@ struct TrampolineArguments { // Read Next Value template - T next() { + const T &next() { block_pointer(T); - T ret = *(const T *) raw_args; + const T &ret = *(const T *) raw_args; raw_args += sizeof(T); return ret; } diff --git a/media-layer/trampoline/src/media-layer-core.cpp b/media-layer/trampoline/src/media-layer-core.cpp index 17226725..56d1fb82 100644 --- a/media-layer/trampoline/src/media-layer-core.cpp +++ b/media-layer/trampoline/src/media-layer-core.cpp @@ -29,11 +29,11 @@ CALL(1, media_SDL_PollEvent, int, (SDL_Event *event)) #endif } -CALL(2, media_SDL_PushEvent, int, (SDL_Event *event)) +CALL(2, media_SDL_PushEvent, int, (const SDL_Event *event)) #ifdef MEDIA_LAYER_TRAMPOLINE_GUEST return trampoline(false, *event); #else - SDL_Event event = args.next(); + const SDL_Event &event = args.next(); return func(&event); #endif } diff --git a/mods/include/mods/server/server_properties.h b/mods/include/mods/server/server_properties.h index b93960e9..f6266076 100644 --- a/mods/include/mods/server/server_properties.h +++ b/mods/include/mods/server/server_properties.h @@ -12,18 +12,17 @@ struct ServerProperty { ServerProperty(const std::string &key_, const std::string &def_, const std::string &comment_): key(key_), def(def_), - comment(comment_) { + comment(comment_) + { get_all().push_back(this); } }; -class ServerProperties { - std::map properties; - -public: +struct ServerProperties { void load(std::istream &stream); - [[nodiscard]] std::string get_string(const ServerProperty &property) const; [[nodiscard]] int get_int(const ServerProperty &property) const; [[nodiscard]] bool get_bool(const ServerProperty &property) const; -}; \ No newline at end of file +private: + std::map properties; +}; diff --git a/mods/src/server/server_properties.cpp b/mods/src/server/server_properties.cpp index 13caafde..8f178d25 100644 --- a/mods/src/server/server_properties.cpp +++ b/mods/src/server/server_properties.cpp @@ -7,14 +7,10 @@ std::vector &ServerProperty::get_all() { return out; } -static bool is_true(std::string const& val) { - return val == "true" || val == "yes" || val == "1"; -} - void ServerProperties::load(std::istream &stream) { std::string line; while (std::getline(stream, line)) { - if (line.length() > 0) { + if (!line.empty()) { if (line[0] == '#') { continue; } @@ -32,9 +28,16 @@ std::string ServerProperties::get_string(const ServerProperty &property) const { } int ServerProperties::get_int(const ServerProperty &property) const { - return std::stoi(get_string(property)); + try { + return std::stoi(get_string(property)); + } catch (...) { + return std::stoi(property.def); + } } +static bool is_true(const std::string &val) { + return val == "true" || val == "yes" || val == "1"; +} bool ServerProperties::get_bool(const ServerProperty &property) const { return is_true(get_string(property)); }