+ int textSeekCount = 0;
+ int textPropertySize = 0;
+ int propertySeekCount = 0;
+ string propertyName = "";
+ int propertyNameSize = 0;
+ char bufferChar = 0;
+
+ for (vector<string>::iterator iter = textProperties->begin();
+ iter != textProperties->end(); iter++){
+
+ textPropertySize = iter->size();
+
+ if (textPropertySize == 0){
+
+ // Text property size is 0. Go to the next
+ // pair.
+
+ continue;
+
+ }
+
+ // Get the property data up to the first semi-colon.
+
+ while (textSeekCount < textPropertySize){
+
+ bufferChar = (*iter)[textSeekCount];
+
+ if (bufferChar == ';'){
+ break;
+ }
+
+ propertyName += bufferChar;
+
+ textSeekCount++;
+
+ }
+
+ if (*iter == property || propertyName == property){
+
+ processResult.insert(make_pair((*textProperties)[propertySeekCount],
+ (*textValues)[propertySeekCount]));
+
+ // Check to continue if one is found.
+
+ if (searchMultiple == false){
+
+ // Found one, don't search for anymore.
+
+ break;
+
+ }
+
+ }
+
+ 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;
+ }