X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcommon%2Ftext.cpp;h=d223993cb34bc556b343f2213df0d9369e7511a8;hb=ae6657a9d645df0ffbbf7ddac8535b794f98b266;hp=df64411c7b6f59ab23a1b6ece14d0737df441f37;hpb=42cc19d39aad2a362b878f7e56a0ebb7cf94bd4c;p=xestiacalendar%2F.git diff --git a/source/common/text.cpp b/source/common/text.cpp index df64411..d223993 100644 --- a/source/common/text.cpp +++ b/source/common/text.cpp @@ -185,4 +185,75 @@ PropertyNameValue SplitNameValue(string InputData){ return FinalNameValue; +} + +bool HexToInt(std::string *HexString, int *Number){ + + // Check that each character in the string is a number + // or a letter (a-f/A-F). + + char Char = 0; + int CharNum = 0; + + for (int CharSeek = 0; + CharSeek < HexString->size(); CharSeek++){ + + // Check if character is a number (0-9). + + Char = HexString->at(CharSeek); + CharNum = Char; + + if (CharNum >= 48 && + CharNum <= 57){ + + continue; + + } + + // Check if character is a letter (A-F) + + if (CharNum >= 65 && + CharNum <= 70){ + + continue; + + } + + // Check if character is a letter (a-f). + + if (CharNum >= 97 && + CharNum <= 102){ + + continue; + + } + + // Exit from subroutine as character is invalid. + + return false; + + } + + // Convert a Hex value that is in string to integer. + + try { + + *Number = stoi((*HexString), nullptr, 16); + + } + + catch (const std::invalid_argument &err){ + + return false; + + } + + catch (const std::out_of_range &err){ + + return false; + + } + + return true; + } \ No newline at end of file