Skip to content

Commit

Permalink
📐 Reformated code
Browse files Browse the repository at this point in the history
  • Loading branch information
AnotherFoxGuy committed Oct 9, 2017
1 parent e93acbd commit fc925b5
Show file tree
Hide file tree
Showing 48 changed files with 5,300 additions and 5,597 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ bin/*
_build

cmake-build-debug/

\.idea/
118 changes: 59 additions & 59 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ensure cmake features we need
CMAKE_MINIMUM_REQUIRED( VERSION 2.6.0 )
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
if (COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif (COMMAND cmake_policy)
# done with cmake check

project(rorserver)
Expand All @@ -11,45 +11,45 @@ project(rorserver)
SET(RUNTIME_OUTPUT_DIRECTORY "${rorserver_SOURCE_DIR}/bin/")
SET(LIBRARY_OUTPUT_DIRECTORY "${rorserver_SOURCE_DIR}/lib/")
SET(ARCHIVE_OUTPUT_DIRECTORY "${rorserver_SOURCE_DIR}/lib/")
SET(EXECUTABLE_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})
SET(LIBRARY_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})
SET(EXECUTABLE_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})
SET(LIBRARY_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})

# hide some settings
mark_as_advanced(
CMAKE_DEBUG_POSTFIX
CMAKE_BACKWARDS_COMPATIBILITY
EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH
CMAKE_DEBUG_POSTFIX
CMAKE_BACKWARDS_COMPATIBILITY
EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH
)

if(WIN32)
# add multi processor compilation flags
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /GL /Ox /Ob2 /Oi /Ot /Oy /fp:fast /GS- /MP /Zi")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MP /Zi")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MP /Od /Zi")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP /Od /Zi")
# some general flags
add_definitions("-D_CRT_SECURE_NO_WARNINGS")

set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /DEBUG ")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /LTCG /OPT:REF")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /DEBUG /LTCG /OPT:REF")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /LTCG /OPT:REF")
ELSEIF(UNIX)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og -g -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -ffast-math -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -ffast-math -g")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -ffast-math -DNDEBUG")

set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")

# add additional gdb debugging stuff
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Og -ggdb")
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} -Og -ggdb")
endif(WIN32)
if (WIN32)
# add multi processor compilation flags
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /GL /Ox /Ob2 /Oi /Ot /Oy /fp:fast /GS- /MP /Zi")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MP /Zi")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MP /Od /Zi")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP /Od /Zi")
# some general flags
add_definitions("-D_CRT_SECURE_NO_WARNINGS")

set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /DEBUG ")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /LTCG /OPT:REF")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /DEBUG /LTCG /OPT:REF")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /LTCG /OPT:REF")
ELSEIF (UNIX)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og -g -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -ffast-math -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -ffast-math -g")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -ffast-math -DNDEBUG")

set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")

# add additional gdb debugging stuff
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Og -ggdb")
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} -Og -ggdb")
endif (WIN32)

# fix executable paths for windows
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${RUNTIME_OUTPUT_DIRECTORY})
Expand All @@ -58,41 +58,41 @@ SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${RUNTIME_OUTPUT_DIRECTORY})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${RUNTIME_OUTPUT_DIRECTORY})

# some additional compiler flags
IF(NOT WIN32)
ADD_DEFINITIONS(-Wall)
endif()
IF (NOT WIN32)
ADD_DEFINITIONS(-Wall)
endif ()

#options
option(RORSERVER_GUI "build server GUI, experimental" FALSE)
option(RORSERVER_WITH_ANGELSCRIPT "adds scripting support" FALSE)
option(RORSERVER_WITH_WEBSERVER "adds the webserver" FALSE)


IF(NOT WIN32)
option(RORSERVER_CRASHHANDLER "enables linux startup script crashhandling" FALSE)
IF (NOT WIN32)
option(RORSERVER_CRASHHANDLER "enables linux startup script crashhandling" FALSE)

FIND_PROGRAM(GDB_EXECUTABLE gdb)
IF(NOT GDB_EXECUTABLE)
message("gdb not found, crashhandler disabled")
set(RORSERVER_CRASHHANDLER FALSE)
ENDIF()
mark_as_advanced(GDB_EXECUTABLE)
endif()
FIND_PROGRAM(GDB_EXECUTABLE gdb)
IF (NOT GDB_EXECUTABLE)
message("gdb not found, crashhandler disabled")
set(RORSERVER_CRASHHANDLER FALSE)
ENDIF ()
mark_as_advanced(GDB_EXECUTABLE)
endif ()


add_subdirectory("dependencies/socketw")
add_subdirectory("dependencies/jsoncpp")

add_subdirectory("source/server")

if(RORSERVER_WITH_ANGELSCRIPT)
add_subdirectory("dependencies/angelscript")
endif(RORSERVER_WITH_ANGELSCRIPT)
if (RORSERVER_WITH_ANGELSCRIPT)
add_subdirectory("dependencies/angelscript")
endif (RORSERVER_WITH_ANGELSCRIPT)

if(RORSERVER_GUI)
add_subdirectory("source/gui")
endif(RORSERVER_GUI)
if (RORSERVER_GUI)
add_subdirectory("source/gui")
endif (RORSERVER_GUI)

if(RORSERVER_WITH_WEBSERVER)
add_subdirectory("dependencies/ctemplate")
endif(RORSERVER_WITH_WEBSERVER)
if (RORSERVER_WITH_WEBSERVER)
add_subdirectory("dependencies/ctemplate")
endif (RORSERVER_WITH_WEBSERVER)
177 changes: 82 additions & 95 deletions source/common/UnicodeStrings.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@

// ############################################# //
// PUBLIC DOMAIN //
// This file is not covered by GPLv3 license //
// of the host project (Rigs of Rods), but //
// separately released to public domain //
// under license CC0 by Creative Commons. //
// //
// This notice can be freely removed. //
// ############################################# //
// ############################################# //
// PUBLIC DOMAIN //
// This file is not covered by GPLv3 license //
// of the host project (Rigs of Rods), but //
// separately released to public domain //
// under license CC0 by Creative Commons. //
// //
// This notice can be freely removed. //
// ############################################# //

/// @file UnicodeStrings.h
/// @author Petr Ohlidal
Expand Down Expand Up @@ -69,111 +69,98 @@ namespace Str {
// 4byte | 11110xxx | 11111000 | 11110000
// cont. | 10xxxxxx | 11000000 | 10000000

static const char UTF8_SIG_LEAD_1b = '\x00';
static const char UTF8_SIG_LEAD_2b = '\xC0';
static const char UTF8_SIG_LEAD_3b = '\xE0';
static const char UTF8_SIG_LEAD_4b = '\xF0';
static const char UTF8_SIG_CONT = '\x80';
static const char UTF8_MASK_LEAD_1b = '\x80';
static const char UTF8_MASK_LEAD_2b = '\xE0';
static const char UTF8_MASK_LEAD_3b = '\xF0';
static const char UTF8_MASK_LEAD_4b = '\xF8';
static const char UTF8_MASK_CONT = '\xC0';
static const char* UTF8_REPLACEMENT_CHAR = u8"\uFFFD"; // The � REPLACEMENT CHARACTER

inline bool IsUtf8Lead1b(const char c) { return (c & UTF8_MASK_LEAD_1b) == UTF8_SIG_LEAD_1b; }
inline bool IsUtf8Lead2b(const char c) { return (c & UTF8_MASK_LEAD_2b) == UTF8_SIG_LEAD_2b; }
inline bool IsUtf8Lead3b(const char c) { return (c & UTF8_MASK_LEAD_3b) == UTF8_SIG_LEAD_3b; }
inline bool IsUtf8Lead4b(const char c) { return (c & UTF8_MASK_LEAD_4b) == UTF8_SIG_LEAD_4b; }
inline bool IsUtf8Cont (const char c) { return (c & UTF8_MASK_CONT) == UTF8_SIG_CONT; }
static const char UTF8_SIG_LEAD_1b = '\x00';
static const char UTF8_SIG_LEAD_2b = '\xC0';
static const char UTF8_SIG_LEAD_3b = '\xE0';
static const char UTF8_SIG_LEAD_4b = '\xF0';
static const char UTF8_SIG_CONT = '\x80';
static const char UTF8_MASK_LEAD_1b = '\x80';
static const char UTF8_MASK_LEAD_2b = '\xE0';
static const char UTF8_MASK_LEAD_3b = '\xF0';
static const char UTF8_MASK_LEAD_4b = '\xF8';
static const char UTF8_MASK_CONT = '\xC0';
static const char *UTF8_REPLACEMENT_CHAR = u8"\uFFFD"; // The � REPLACEMENT CHARACTER

inline bool IsUtf8Lead1b(const char c) { return (c & UTF8_MASK_LEAD_1b) == UTF8_SIG_LEAD_1b; }

inline bool IsUtf8Lead2b(const char c) { return (c & UTF8_MASK_LEAD_2b) == UTF8_SIG_LEAD_2b; }

inline bool IsUtf8Lead3b(const char c) { return (c & UTF8_MASK_LEAD_3b) == UTF8_SIG_LEAD_3b; }

inline bool IsUtf8Lead4b(const char c) { return (c & UTF8_MASK_LEAD_4b) == UTF8_SIG_LEAD_4b; }

inline bool IsUtf8Cont(const char c) { return (c & UTF8_MASK_CONT) == UTF8_SIG_CONT; }

/// Mercilessly replaces all invalid code units with supplied sequence.
/// OctetIterator_T can be either STL iterator or plain old `const char*`.
/// @param OctetIterator_T start Start of source string. Required.
/// @param OctetIterator_T end End of source. Required.
/// @param const char* sub Substitute sequence; default: U+FFFD � REPLACEMENT CHARACTER.
template <typename OctetIterator_T>
std::string SanitizeUtf8(OctetIterator_T start, OctetIterator_T end, const char* sub = UTF8_REPLACEMENT_CHAR)
{
std::string res;
char buffer[] = {'\0', '\0', '\0', '\0', '\0'}; // 4 octets + NULL terminator
int buffer_next = 0; // Next available octet slot
int buffer_max = 0; // Current character's declared number of octets.
for (OctetIterator_T pos = start; pos != end; ++pos)
{
if (buffer_next == 0) // We're at lead byte and must detect.
{
if (IsUtf8Lead1b(*pos))
{
res += *pos;
}
else if (IsUtf8Cont(*pos))
{
res += sub;
}
else
{
buffer_max = (IsUtf8Lead2b(*pos)) ? 2 : buffer_max;
buffer_max = (IsUtf8Lead3b(*pos)) ? 3 : buffer_max;
buffer_max = (IsUtf8Lead4b(*pos)) ? 4 : buffer_max;
buffer[buffer_next++] = *pos;
}
}
else
{
if (IsUtf8Cont(*pos))
template<typename OctetIterator_T>
std::string SanitizeUtf8(OctetIterator_T start, OctetIterator_T end, const char *sub = UTF8_REPLACEMENT_CHAR) {
std::string res;
char buffer[] = {'\0', '\0', '\0', '\0', '\0'}; // 4 octets + NULL terminator
int buffer_next = 0; // Next available octet slot
int buffer_max = 0; // Current character's declared number of octets.
for (OctetIterator_T pos = start; pos != end; ++pos) {
if (buffer_next == 0) // We're at lead byte and must detect.
{
buffer[buffer_next++] = *pos;
if (buffer_next == buffer_max)
{
buffer[buffer_max] = '\0';
res += buffer;
if (IsUtf8Lead1b(*pos)) {
res += *pos;
} else if (IsUtf8Cont(*pos)) {
res += sub;
} else {
buffer_max = (IsUtf8Lead2b(*pos)) ? 2 : buffer_max;
buffer_max = (IsUtf8Lead3b(*pos)) ? 3 : buffer_max;
buffer_max = (IsUtf8Lead4b(*pos)) ? 4 : buffer_max;
buffer[buffer_next++] = *pos;
}
} else {
if (IsUtf8Cont(*pos)) {
buffer[buffer_next++] = *pos;
if (buffer_next == buffer_max) {
buffer[buffer_max] = '\0';
res += buffer;
buffer_next = 0;
}
} else {
res += sub;
buffer_next = 0;
}
}
else
{
res += sub;
buffer_next = 0;
}
}
}

if (buffer_next != 0)
{
res += sub;
}

return res; // We rely on C++11's move semantics -> no copy here.
}
if (buffer_next != 0) {
res += sub;
}

return res; // We rely on C++11's move semantics -> no copy here.
}

/// Convenience overload for plain old NULL-terminated C-strings
inline std::string SanitizeUtf8(const char* str, const char* sub = UTF8_REPLACEMENT_CHAR)
{
return SanitizeUtf8(str, str + strlen(str), sub);
}
inline std::string SanitizeUtf8(const char *str, const char *sub = UTF8_REPLACEMENT_CHAR) {
return SanitizeUtf8(str, str + strlen(str), sub);
}

/// Replicates behavior of `isspace()` under "C" locale - to be independent and faster.
inline bool IsWhitespaceAscii(char c)
{
return (c == ' ') // (0x20) space (SPC)
|| (c == '\t') // (0x09) horizontal tab (TAB)
|| (c == '\n') // (0x0a) newline (LF)
|| (c == '\v') // (0x0b) vertical tab (VT)
|| (c == '\f') // (0x0c) feed (FF)
|| (c == '\r'); // (0x0d) carriage return (CR)
}
inline bool IsWhitespaceAscii(char c) {
return (c == ' ') // (0x20) space (SPC)
|| (c == '\t') // (0x09) horizontal tab (TAB)
|| (c == '\n') // (0x0a) newline (LF)
|| (c == '\v') // (0x0b) vertical tab (VT)
|| (c == '\f') // (0x0c) feed (FF)
|| (c == '\r'); // (0x0d) carriage return (CR)
}

// TODO: implement `TrimUtf8()`!
/// @param start Pointer to first character
/// @param end Pointer to after-the-last character
inline void TrimAscii(char*& start, char*& end)
{
while ((start != end) && IsWhitespaceAscii(*start))
++start;

while ((start != (end - 1)) && IsWhitespaceAscii(*(end - 1)))
--end;
}
inline void TrimAscii(char *&start, char *&end) {
while ((start != end) && IsWhitespaceAscii(*start))
++start;

while ((start != (end - 1)) && IsWhitespaceAscii(*(end - 1)))
--end;
}

} // namespace Str

0 comments on commit fc925b5

Please sign in to comment.