diff --git a/app/src/main/cpp/StringRepository.cpp b/app/src/main/cpp/StringRepository.cpp index c372323..7fc89c1 100644 --- a/app/src/main/cpp/StringRepository.cpp +++ b/app/src/main/cpp/StringRepository.cpp @@ -84,6 +84,20 @@ void StringRepository::releaseString(StringHandle) // do nothing } + +StringHandle StringRepository::concatenateString(StringHandle a, StringHandle b) +{ + ZoneScoped; + const char* texta = getString(a); + const char* textb = getString(b); + size_t length = strlen(texta) + strlen(textb); + char* textc = (char*)malloc(sizeof(char)*(length+1)); + snprintf(textc, length + 1, "%s%s", texta, textb); + nt_string_handle c = internString(textc); + free(textc); + return c; +} + void StringRepository::freeAll() { ZoneScoped; diff --git a/app/src/main/cpp/StringRepository.h b/app/src/main/cpp/StringRepository.h index 2365c0e..87d00df 100644 --- a/app/src/main/cpp/StringRepository.h +++ b/app/src/main/cpp/StringRepository.h @@ -41,6 +41,11 @@ public: /// @brief Frees a string void releaseString(StringHandle handle); + /// @brief Adds a string to the string repository + /// @param a the first string + /// @param b the second string + StringHandle concatenateString(StringHandle a, StringHandle b); + /// @brief Frees all strings inside the repository void freeAll();