+ propertySeekCount++;
+ textPropertySize = 0;
+ textSeekCount = 0;
+ propertyName.clear();
+
+ }
+
+ return processResult;
+
+}
+
+map<string, string> SplitValues(string inputData){
+
+ map<string,string> finalSplitValues;
+ map<int,int> splitPoints;
+ map<int,int> splitLength;
+ size_t intPropertyLen = inputData.size();
+ int intSplitsFound = 0;
+ int intSplitSize = 0;
+ int intSplitSeek = 0;
+ int intPrevSplitFound = 0;
+
+ // Get the split points.
+
+ for (int i = 0; i <= intPropertyLen; i++){
+
+ intSplitSize++;
+
+ inputData.substr(intPrevSplitFound, intSplitSize);
+
+ if (inputData.substr(i, 1) == ";" &&
+ inputData.substr((i - 1), 1) != "\\"){
+
+ if (intSplitsFound > 0){
+
+ // Split the value into two.
+
+ PropertyNameValue nVData = SplitNameValue(inputData.substr(intPrevSplitFound, (intSplitSize - 1)));
+
+ if (finalSplitValues.find(nVData.name) != finalSplitValues.end()){
+ finalSplitValues.insert(make_pair(nVData.name, nVData.value));
+ } else {
+ finalSplitValues[nVData.name] = nVData.value;
+ }
+
+ }
+
+ intPrevSplitFound = i + 1;
+ intSplitSize = 0;
+ intSplitsFound++;
+
+ }
+
+ }
+
+ if (intSplitsFound > 0){
+
+ PropertyNameValue nVData = SplitNameValue(inputData.substr(intPrevSplitFound, (intSplitSize - 1)));
+
+ if (finalSplitValues.find(nVData.name) != finalSplitValues.end()){
+ finalSplitValues.insert(make_pair(nVData.name, nVData.value));
+ } else {
+ finalSplitValues[nVData.name] = nVData.value;
+ }
+
+ }
+
+ return finalSplitValues;
+
+}
+
+PropertyNameValue SplitNameValue(string inputData){
+
+ PropertyNameValue finalNameValue;
+ int inputDataLength = inputData.size();
+ int seekCount = 0;
+ bool quoteMode = false;
+ bool dataFound = false;
+
+ while (seekCount < inputDataLength){
+
+ if (inputData[seekCount] == '='){
+
+ finalNameValue.name = inputData.substr(0, seekCount);
+
+ try{
+ finalNameValue.value = inputData.substr((seekCount + 1));
+ }
+
+ catch (const out_of_range &oor){
+ // Do nothing. Have an empty final value.
+ }
+
+ dataFound = true;
+ break;
+ }
+
+ seekCount++;
+
+ }
+
+ if (dataFound == false){
+
+ finalNameValue.name = inputData;
+
+ }
+
+ // Check if the value has quotes at the start and end.
+ // Remove them if this is the case.
+
+ if (finalNameValue.value.front() == '\"' &&
+ finalNameValue.value.back() == '\"'){
+
+ finalNameValue.value.erase(0, 1);
+ finalNameValue.value.erase((finalNameValue.value.size() - 1), 1);