🎨 Removed duplicate code
This commit is contained in:
		| @@ -13,7 +13,6 @@ OUTPUT_DIRECTORY = docs | |||||||
| INPUT = include | INPUT = include | ||||||
| RECURSIVE = YES | RECURSIVE = YES | ||||||
| GENERATE_LATEX = NO | GENERATE_LATEX = NO | ||||||
| INLINE_SOURCES = YES |  | ||||||
| GENERATE_TREEVIEW = YES | GENERATE_TREEVIEW = YES | ||||||
| UML_LOOK = YES | UML_LOOK = YES | ||||||
| MULTILINE_CPP_IS_BRIEF = YES | MULTILINE_CPP_IS_BRIEF = YES | ||||||
|   | |||||||
| @@ -342,129 +342,10 @@ class moFileReader | |||||||
|      */ |      */ | ||||||
|     moFileReader::eErrorCode ParseData(const std::string &data) |     moFileReader::eErrorCode ParseData(const std::string &data) | ||||||
|     { |     { | ||||||
|         // Creating a file-description. |  | ||||||
|         moFileInfo moInfo; |  | ||||||
|  |  | ||||||
|         // Reference to the List inside moInfo. |  | ||||||
|         moFileInfo::moTranslationPairList &TransPairInfo = moInfo.m_translationPairInformation; |  | ||||||
|  |  | ||||||
|         // Opening the file. |         // Opening the file. | ||||||
|         std::stringstream stream(data); |         std::stringstream stream(data); | ||||||
|  |  | ||||||
|         // Read in all the 4 bytes of fire-magic, offsets and stuff... |         return ReadStream(stream); | ||||||
|         stream.read((char *)&moInfo.m_magicNumber, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_fileVersion, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_numStrings, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_offsetOriginal, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_offsetTranslation, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_sizeHashtable, 4); |  | ||||||
|         stream.read((char *)&moInfo.m_offsetHashtable, 4); |  | ||||||
|  |  | ||||||
|         if (stream.bad()) |  | ||||||
|         { |  | ||||||
|             m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |  | ||||||
|             printf("%s", m_error.c_str()); |  | ||||||
|             return moFileReader::EC_FILEINVALID; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Checking the Magic Number |  | ||||||
|         if (MagicNumber != moInfo.m_magicNumber) |  | ||||||
|         { |  | ||||||
|             if (MagicReversed != moInfo.m_magicNumber) |  | ||||||
|             { |  | ||||||
|                 m_error = "The Magic Number does not match in all cases!"; |  | ||||||
|                 printf("%s", m_error.c_str()); |  | ||||||
|                 return moFileReader::EC_MAGICNUMBER_NOMATCH; |  | ||||||
|             } |  | ||||||
|             else |  | ||||||
|             { |  | ||||||
|                 moInfo.m_reversed = true; |  | ||||||
|                 m_error           = "Magic Number is reversed. We do not support this yet!"; |  | ||||||
|                 return moFileReader::EC_MAGICNUMBER_REVERSED; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Now we search all Length & Offsets of the original strings |  | ||||||
|         for (int i = 0; i < moInfo.m_numStrings; i++) |  | ||||||
|         { |  | ||||||
|             moTranslationPairInformation _str; |  | ||||||
|             stream.read((char *)&_str.m_orLength, 4); |  | ||||||
|             stream.read((char *)&_str.m_orOffset, 4); |  | ||||||
|             if (stream.bad()) |  | ||||||
|             { |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |  | ||||||
|                 printf("%s", m_error.c_str()); |  | ||||||
|                 return moFileReader::EC_FILEINVALID; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             TransPairInfo.push_back(_str); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Get all Lengths & Offsets of the translated strings |  | ||||||
|         // Be aware: The Descriptors already exist in our list, so we just mod. refs from the deque. |  | ||||||
|         for (int i = 0; i < moInfo.m_numStrings; i++) |  | ||||||
|         { |  | ||||||
|             moTranslationPairInformation &_str = TransPairInfo[i]; |  | ||||||
|             stream.read((char *)&_str.m_trLength, 4); |  | ||||||
|             stream.read((char *)&_str.m_trOffset, 4); |  | ||||||
|             if (stream.bad()) |  | ||||||
|             { |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |  | ||||||
|                 printf("%s", m_error.c_str()); |  | ||||||
|                 return moFileReader::EC_FILEINVALID; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Normally you would read the hash-table here, but we don't use it. :) |  | ||||||
|  |  | ||||||
|         // Now to the interesting part, we read the strings-pairs now |  | ||||||
|         for (int i = 0; i < moInfo.m_numStrings; i++) |  | ||||||
|         { |  | ||||||
|             // We need a length of +1 to catch the trailing \0. |  | ||||||
|             int orLength = TransPairInfo[i].m_orLength + 1; |  | ||||||
|             int trLength = TransPairInfo[i].m_trLength + 1; |  | ||||||
|  |  | ||||||
|             int orOffset = TransPairInfo[i].m_orOffset; |  | ||||||
|             int trOffset = TransPairInfo[i].m_trOffset; |  | ||||||
|  |  | ||||||
|             // Original |  | ||||||
|             char *original = new char[orLength]; |  | ||||||
|             memset(original, 0, sizeof(char) * orLength); |  | ||||||
|  |  | ||||||
|             stream.seekg(orOffset); |  | ||||||
|             stream.read(original, orLength); |  | ||||||
|  |  | ||||||
|             if (stream.bad()) |  | ||||||
|             { |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |  | ||||||
|                 printf("%s", m_error.c_str()); |  | ||||||
|                 return moFileReader::EC_FILEINVALID; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Translation |  | ||||||
|             char *translation = new char[trLength]; |  | ||||||
|             memset(translation, 0, sizeof(char) * trLength); |  | ||||||
|  |  | ||||||
|             stream.seekg(trOffset); |  | ||||||
|             stream.read(translation, trLength); |  | ||||||
|  |  | ||||||
|             if (stream.bad()) |  | ||||||
|             { |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |  | ||||||
|                 printf("%s", m_error.c_str()); |  | ||||||
|                 return moFileReader::EC_FILEINVALID; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Store it in the map. |  | ||||||
|             m_lookup[std::string(original)] = std::string(translation); |  | ||||||
|  |  | ||||||
|             // Cleanup... |  | ||||||
|             delete[] original; |  | ||||||
|             delete[] translation; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Done :) |  | ||||||
|         return moFileReader::EC_SUCCESS; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** \brief Reads a .mo-file |     /** \brief Reads a .mo-file | ||||||
| @@ -477,12 +358,6 @@ class moFileReader | |||||||
|      */ |      */ | ||||||
|     eErrorCode ReadFile(const char *filename) |     eErrorCode ReadFile(const char *filename) | ||||||
|     { |     { | ||||||
|         // Creating a file-description. |  | ||||||
|         moFileInfo moInfo; |  | ||||||
|  |  | ||||||
|         // Reference to the List inside moInfo. |  | ||||||
|         moFileInfo::moTranslationPairList &TransPairInfo = moInfo.m_translationPairInformation; |  | ||||||
|  |  | ||||||
|         // Opening the file. |         // Opening the file. | ||||||
|         std::ifstream stream(filename, std::ios_base::binary | std::ios_base::in); |         std::ifstream stream(filename, std::ios_base::binary | std::ios_base::in); | ||||||
|         if (!stream.is_open()) |         if (!stream.is_open()) | ||||||
| @@ -491,6 +366,25 @@ class moFileReader | |||||||
|             return moFileReader::EC_FILENOTFOUND; |             return moFileReader::EC_FILENOTFOUND; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         eErrorCode res = ReadStream(stream); | ||||||
|  |         stream.close(); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** \brief Reads data from a stream | ||||||
|  |      * \param[in] stream | ||||||
|  |      * \return SUCCESS on success or one of the other error-codes in eErrorCode on error. | ||||||
|  |      * | ||||||
|  |      */ | ||||||
|  |     template <typename T> eErrorCode ReadStream(T &stream) | ||||||
|  |     { | ||||||
|  |         // Creating a file-description. | ||||||
|  |         moFileInfo moInfo; | ||||||
|  |  | ||||||
|  |         // Reference to the List inside moInfo. | ||||||
|  |         moFileInfo::moTranslationPairList &TransPairInfo = moInfo.m_translationPairInformation; | ||||||
|  |  | ||||||
|         // Read in all the 4 bytes of fire-magic, offsets and stuff... |         // Read in all the 4 bytes of fire-magic, offsets and stuff... | ||||||
|         stream.read((char *)&moInfo.m_magicNumber, 4); |         stream.read((char *)&moInfo.m_magicNumber, 4); | ||||||
|         stream.read((char *)&moInfo.m_fileVersion, 4); |         stream.read((char *)&moInfo.m_fileVersion, 4); | ||||||
| @@ -502,7 +396,6 @@ class moFileReader | |||||||
|  |  | ||||||
|         if (stream.bad()) |         if (stream.bad()) | ||||||
|         { |         { | ||||||
|             stream.close(); |  | ||||||
|             m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |             m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; | ||||||
|             return moFileReader::EC_FILEINVALID; |             return moFileReader::EC_FILEINVALID; | ||||||
|         } |         } | ||||||
| @@ -531,7 +424,6 @@ class moFileReader | |||||||
|             stream.read((char *)&_str.m_orOffset, 4); |             stream.read((char *)&_str.m_orOffset, 4); | ||||||
|             if (stream.bad()) |             if (stream.bad()) | ||||||
|             { |             { | ||||||
|                 stream.close(); |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; | ||||||
|                 return moFileReader::EC_FILEINVALID; |                 return moFileReader::EC_FILEINVALID; | ||||||
|             } |             } | ||||||
| @@ -548,7 +440,6 @@ class moFileReader | |||||||
|             stream.read((char *)&_str.m_trOffset, 4); |             stream.read((char *)&_str.m_trOffset, 4); | ||||||
|             if (stream.bad()) |             if (stream.bad()) | ||||||
|             { |             { | ||||||
|                 stream.close(); |  | ||||||
|                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; |                 m_error = "Stream bad during reading. The .mo-file seems to be invalid or has bad descriptions!"; | ||||||
|                 return moFileReader::EC_FILEINVALID; |                 return moFileReader::EC_FILEINVALID; | ||||||
|             } |             } | ||||||
| @@ -617,7 +508,6 @@ class moFileReader | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Done :) |         // Done :) | ||||||
|         stream.close(); |  | ||||||
|         return moFileReader::EC_SUCCESS; |         return moFileReader::EC_SUCCESS; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user