diff --git a/programs/nstool/source/SdkApiString.cpp b/programs/nstool/source/SdkApiString.cpp new file mode 100644 index 0000000..2268fd6 --- /dev/null +++ b/programs/nstool/source/SdkApiString.cpp @@ -0,0 +1,87 @@ +#include +#include "SdkApiString.h" + +SdkApiString::SdkApiString(const std::string& full_str) : + SdkApiString(API_MIDDLEWARE, "", "") +{ + resolveApiString(full_str); +} + +SdkApiString::SdkApiString(ApiType type, const std::string& vender_name, const std::string& module_name) : + mApiType(type), + mVenderName(vender_name), + mModuleName(module_name) +{ + +} + +void SdkApiString::operator=(const SdkApiString& other) +{ + mApiType = other.mApiType; + mVenderName = other.mVenderName; + mModuleName = other.mModuleName; +} + +SdkApiString::ApiType SdkApiString::getApiType() const +{ + return mApiType; +} + +void SdkApiString::setApiType(ApiType type) +{ + mApiType = type; +} + +const std::string& SdkApiString::getVenderName() const +{ + return mVenderName; +} + +void SdkApiString::setVenderName(const std::string& name) +{ + mVenderName = name; +} + +const std::string& SdkApiString::getModuleName() const +{ + return mModuleName; +} + +void SdkApiString::setModuleName(const std::string& name) +{ + mModuleName = name; +} + +void SdkApiString::resolveApiString(const std::string& full_str) +{ + std::stringstream list_stream(full_str); + std::string api_type, vender, module; + + std::getline(list_stream, api_type, kSplitChar); + std::getline(list_stream, vender, kSplitChar); + std::getline(list_stream, module); + + + if (api_type == kSdkMiddleWareApiString) + { + if (vender == kVenderNintendo && module.find(kSdkVersionString) != std::string::npos) + { + mApiType = API_SDK_VERSION; + } + else + { + mApiType = API_MIDDLEWARE; + } + } + else if (api_type == kSdkDebugApiString) + { + mApiType = API_DEBUG; + } + else if (api_type == kSdkPrivateApiString) + { + mApiType = API_PRIVATE; + } + + mVenderName = vender; + mModuleName = module; +} \ No newline at end of file diff --git a/programs/nstool/source/SdkApiString.h b/programs/nstool/source/SdkApiString.h new file mode 100644 index 0000000..5c794df --- /dev/null +++ b/programs/nstool/source/SdkApiString.h @@ -0,0 +1,43 @@ +#pragma once +#include + +class SdkApiString +{ +public: + enum ApiType + { + API_MIDDLEWARE, + API_DEBUG, + API_PRIVATE, + API_SDK_VERSION + }; + + SdkApiString(const std::string& full_str); + SdkApiString(ApiType type, const std::string& vender_name, const std::string& module_name); + + void operator=(const SdkApiString& other); + + ApiType getApiType() const; + void setApiType(ApiType type); + + const std::string& getVenderName() const; + void setVenderName(const std::string& name); + + const std::string& getModuleName() const; + void setModuleName(const std::string& name); +private: + const std::string kModuleName = "SdkApiString"; + + const char kSplitChar = '+'; + const std::string kSdkMiddleWareApiString = "SDK MW"; + const std::string kSdkDebugApiString = "SDK Debug"; + const std::string kSdkPrivateApiString = "SDK Private"; + const std::string kVenderNintendo = "Nintendo"; + const std::string kSdkVersionString = "NintendoSdk_nnSdk-"; + + ApiType mApiType; + std::string mVenderName; + std::string mModuleName; + + void resolveApiString(const std::string& full_str); +}; \ No newline at end of file