Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,18 @@ if(WHOA_STORM_FLAVOR MATCHES "(SC1|WC2|D1|D2)")
add_definitions(-DWHOA_RECT_USES_SCREEN_COORDINATES)
add_definitions(-DWHOA_SSTRHASH64_SUBTRACTS)
add_definitions(-DWHOA_SUPPORTS_KOREAN_CODEPAGE)
add_definitions(-DWHOA_DESTROY_HAS_RETVAL)
add_definitions(-DWHOA_SSTRCHR_IS_APICALL)
add_definitions(-DWHOA_SUNIGET_IS_APICALL)
elseif(WHOA_STORM_FLAVOR STREQUAL "WOW")
message(STATUS "Building Storm with World of Warcraft flavoring")
add_definitions(-DWHOA_FLAVOR_WOW)
add_definitions(-DWHOA_DISPLAY_ERR_EXTRA_ARG)

# Not sure which version this was changed
if(WHOA_WOW_VERSION LESS_EQUAL 3368)
add_definitions(-DWHOA_SUNIGET_IS_APICALL)
endif()
else()
message(STATUS "Building Storm with default flavoring")
add_definitions(-DWHOA_FLAVOR_GENERIC)
Expand Down
4 changes: 2 additions & 2 deletions storm/Core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include <Windows.h>
#endif

int32_t STORMAPI StormDestroy() {
STORM_DESTROY_RETTYPE STORMAPI StormDestroy() {
// Combined list of all destroy calls found in every game (as documentation)

// SErrSetBlizzardErrorFunction(nullptr); // SC 1.17
Expand All @@ -31,7 +31,7 @@ int32_t STORMAPI StormDestroy() {
// SErrDestroy(); // WoW 3.3.5 (mac)
// SLogDestroy(); // WoW 3.3.5 (mac)
STransDestroy(); // SC 1.17
return 1;
return (STORM_DESTROY_RETTYPE)1;
}

// NOTE: If squall is built as a DLL in the future, this should be updated to return hinstDLL from DllMain instead.
Expand Down
8 changes: 7 additions & 1 deletion storm/Core.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@ typedef void* LPOVERLAPPED;
typedef void* HINSTANCE;
#endif

int32_t STORMAPI StormDestroy();
#if defined(WHOA_DESTROY_HAS_RETVAL)
#define STORM_DESTROY_RETTYPE int32_t
#else
#define STORM_DESTROY_RETTYPE void
#endif

STORM_DESTROY_RETTYPE STORMAPI StormDestroy();

HINSTANCE STORMAPI StormGetInstance();

Expand Down
16 changes: 8 additions & 8 deletions storm/String.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ void STORMAPI SStrInitialize() {
}
}

char* STORMAPI SStrChr(char* string, char search) {
char* SSTRCHR_CALL SStrChr(char* string, char search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE_END;
Expand All @@ -240,7 +240,7 @@ char* STORMAPI SStrChr(char* string, char search) {
return string;
}

const char* STORMAPI SStrChr(const char* string, char search) {
const char* SSTRCHR_CALL SStrChr(const char* string, char search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE_END;
Expand Down Expand Up @@ -273,7 +273,7 @@ const char* STORMAPI SStrChrBidir(const char* string, char search, int32_t rever
}
}

char* STORMAPI SStrChrR(char* string, char search) {
char* SSTRCHR_CALL SStrChrR(char* string, char search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE_END;
Expand All @@ -289,7 +289,7 @@ char* STORMAPI SStrChrR(char* string, char search) {
return result;
}

const char* STORMAPI SStrChrR(const char* string, char search) {
const char* SSTRCHR_CALL SStrChrR(const char* string, char search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE_END;
Expand Down Expand Up @@ -577,7 +577,7 @@ size_t STORMCDECL SStrVPrintf(char* dest, size_t maxchars, const char* format, v
return ISStrVPrintf(dest, maxchars, format, arglist);
}

char* STORMAPI SStrStr(char* string, const char* search) {
char* SSTRCHR_CALL SStrStr(char* string, const char* search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE(search);
Expand All @@ -593,7 +593,7 @@ char* STORMAPI SStrStr(char* string, const char* search) {
return nullptr;
}

const char* STORMAPI SStrStr(const char* string, const char* search) {
const char* SSTRCHR_CALL SStrStr(const char* string, const char* search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE(search);
Expand All @@ -609,7 +609,7 @@ const char* STORMAPI SStrStr(const char* string, const char* search) {
return nullptr;
}

char* STORMAPI SStrStrI(char* string, const char* search) {
char* SSTRCHR_CALL SStrStrI(char* string, const char* search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE(search);
Expand All @@ -625,7 +625,7 @@ char* STORMAPI SStrStrI(char* string, const char* search) {
return nullptr;
}

const char* STORMAPI SStrStrI(const char* string, const char* search) {
const char* SSTRCHR_CALL SStrStrI(const char* string, const char* search) {
STORM_VALIDATE_BEGIN;
STORM_VALIDATE(string);
STORM_VALIDATE(search);
Expand Down
22 changes: 14 additions & 8 deletions storm/String.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,21 @@

#define SSTR_HASH_CASESENSITIVE 1

char* STORMAPI SStrChr(char* string, char search);
#if defined(WHOA_SSTRCHR_IS_APICALL)
#define SSTRCHR_CALL STORMAPI
#else
#define SSTRCHR_CALL
#endif

char* SSTRCHR_CALL SStrChr(char* string, char search);

const char* STORMAPI SStrChr(const char* string, char search);
const char* SSTRCHR_CALL SStrChr(const char* string, char search);

const char* STORMAPI SStrChrBidir(const char* string, char search, int32_t reverse);

char* STORMAPI SStrChrR(char* string, char search);
char* SSTRCHR_CALL SStrChrR(char* string, char search);

const char* STORMAPI SStrChrR(const char* string, char search);
const char* SSTRCHR_CALL SStrChrR(const char* string, char search);

int32_t STORMAPI SStrCmp(const char* string1, const char* string2, size_t maxchars = STORM_MAX_STR);

Expand Down Expand Up @@ -46,13 +52,13 @@ size_t STORMCDECL SStrPrintf(char* dest, size_t maxchars, const char* format, ..

size_t STORMCDECL SStrVPrintf(char* dest, size_t maxchars, const char* format, va_list arglist);

char* STORMAPI SStrStr(char* string, const char* search);
char* SSTRCHR_CALL SStrStr(char* string, const char* search);

const char* STORMAPI SStrStr(const char* string, const char* search);
const char* SSTRCHR_CALL SStrStr(const char* string, const char* search);

char* STORMAPI SStrStrI(char* string, const char* search);
char* SSTRCHR_CALL SStrStrI(char* string, const char* search);

const char* STORMAPI SStrStrI(const char* string, const char* search);
const char* SSTRCHR_CALL SStrStrI(const char* string, const char* search);

void STORMAPI SStrTokenize(const char** string, char* buffer, size_t bufferchars, const char* whitespace, int32_t* quoted);

Expand Down
2 changes: 1 addition & 1 deletion storm/Unicode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ int32_t STORMAPI SUniFindUTF8ChrStart(const char* utf8String, int32_t index) {
return FindUTF8Character(utf8String, index, -1);
}

uint32_t STORMAPI SUniSGetUTF8(const uint8_t* strptr, int32_t* chars) {
uint32_t SUNIGET_CALL SUniSGetUTF8(const uint8_t* strptr, int32_t* chars) {
if (chars) {
*chars = 0;
}
Expand Down
8 changes: 7 additions & 1 deletion storm/Unicode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
#include "Core.hpp"
#include <cstddef>

#if defined(WHOA_SUNIGET_IS_APICALL)
#define SUNIGET_CALL STORMAPI
#else
#define SUNIGET_CALL
#endif

ptrdiff_t STORMAPI SUniConvertUTF16ToDos(char* dest, const char16_t* source, uint32_t destsize);

ptrdiff_t STORMAPI SUniConvertUTF16ToMac(char* dest, const char16_t* source, uint32_t destsize);
Expand All @@ -22,7 +28,7 @@ int32_t STORMAPI SUniFindAfterUTF8Chr(const char* utf8String, int32_t index);
// Assumes index is within the bounds of utf8String
int32_t STORMAPI SUniFindUTF8ChrStart(const char* utf8String, int32_t index);

uint32_t STORMAPI SUniSGetUTF8(const uint8_t* strptr, int32_t* chars);
uint32_t SUNIGET_CALL SUniSGetUTF8(const uint8_t* strptr, int32_t* chars);

void STORMAPI SUniSPutUTF8(uint32_t c, char* strptr);

Expand Down
15 changes: 12 additions & 3 deletions test/Core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,27 @@

#if defined(WHOA_SYSTEM_WIN)
#include <Windows.h>
#endif

#if defined(WHOA_TEST_STORMDLL)
#define EXPECTED_MODULE_NAME "Storm.dll"
#else
#define EXPECTED_MODULE_NAME "StormTest.exe"
#endif

#if defined(WHOA_DESTROY_HAS_RETVAL)
#define CHECK_DESTROY(x) CHECK(x == 1);
#else
#define CHECK_DESTROY(x) x;
#endif

TEST_CASE("StormDestroy", "[core]") {

#if defined(WHOA_DESTROY_HAS_RETVAL)
SECTION("always returns 1") {
CHECK(StormDestroy() == 1);
}
#endif

SECTION("SEvt") {
EventHandlerTest test;
Expand All @@ -29,7 +38,7 @@ TEST_CASE("StormDestroy", "[core]") {
CHECK(SEvtDispatch(1, 1, 1, nullptr) == 1);
CHECK(test.NumCalls() == 2);

CHECK(StormDestroy() == 1);
CHECK_DESTROY(StormDestroy());

// Can't increment calls since the handler was destroyed
CHECK(SEvtDispatch(1, 1, 1, nullptr) == 0);
Expand All @@ -40,7 +49,7 @@ TEST_CASE("StormDestroy", "[core]") {
// not ideal but it's official behaviour
SEvtBreakHandlerChain(nullptr);

CHECK(StormDestroy() == 1);
CHECK_DESTROY(StormDestroy());

SEvtRegisterHandler(0, 0, 0, 0, &TestEventHandler1);
CHECK(SEvtDispatch(0, 0, 0, nullptr) == 0);
Expand All @@ -54,7 +63,7 @@ TEST_CASE("StormDestroy", "[core]") {
SRgnCreate(&rgn);
REQUIRE(rgn != nullptr); // valid handle

CHECK(StormDestroy() == 1);
CHECK_DESTROY(StormDestroy());

// fails to duplicate because handle is invalid
HSRGN newrgn;
Expand Down