├── LICENSE ├── README.md ├── build ├── CMakeLists.txt └── bin │ └── CMakeLists.txt ├── include ├── moFileConfig.h └── moFileReader.h ├── misc ├── doxygen.conf ├── footer.html ├── header.html └── license.txt ├── src ├── mo.cpp └── moFileReader.cpp └── test ├── .gitignore ├── test.cpp ├── test.html ├── test.mo └── test.po /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 scorcher24 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | mofilereader 2 | ============ 3 | 4 | This API lets you read .mo-Files and use their content just as you would do with GNUs gettext. It is implemented in C++ with a very liberal license, allowing the programmer to use it in modern programs, without the need of linking against gettext and libiconv. 5 | 6 | You will need cmake to build it as a seperate application or library, or just include the few files into your project. Any C++ Compiler should suffice. 7 | This only fully supports utf-8, as I don't want this to be extensive. 8 | 9 | Optionally, you can also build an executable that is able to dump any .mo file to .html to peek into the contents of this file. 10 | 11 | Please report any issues you encounter, I can't fix them if I don't know about them! 12 | -------------------------------------------------------------------------------- /build/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------- 2 | # moFileReader Main Build Script 3 | # 4 | # Defined Variables: 5 | # - COMPILE_DLL 6 | # - ON : Compiles the code as a shared Library 7 | # - OFF : Compiles the code as a static Library 8 | # - BUILD_DEBUG 9 | # - ON : Compiles Debug-Information into the output 10 | # - OFF : Optimizes the compilation with O2. 11 | # 12 | # Run cmake with -DVARNAME=ON/OFF to benefit from those 13 | # possible settings. 14 | #------------------------------------------------------- 15 | cmake_minimum_required(VERSION 2.6) 16 | project(moFileReader) 17 | 18 | # Set Output Directories. 19 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../bin) 20 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../lib) 21 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ../lib) 22 | 23 | 24 | # The main include directory 25 | include_directories(BEFORE ../include) 26 | 27 | # executable build directory 28 | add_subdirectory(bin) 29 | 30 | # Let the user choose between static lib and dll 31 | # To use it, call cmake -DCOMPILE_DLL=ON 32 | option(COMPILE_DLL "Set this to ON if you want to compile the library as an DLL. When this is OFF, a static library is created (default)." OFF) 33 | 34 | # Dependency 35 | link_directories(../lib) 36 | 37 | if ( NOT COMPILE_DLL ) 38 | 39 | # Static build 40 | add_library(moFileReader.static STATIC ../src/moFileReader.cpp ../src/mo.cpp) 41 | 42 | else ( COMPILE_DLL ) 43 | 44 | # DLL 45 | add_definitions(-D_USRDLL -DMOFILE_EXPORTS) 46 | add_library(moFileReader SHARED ../src/moFileReader.cpp ../src/mo.cpp) 47 | 48 | endif () 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /build/bin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin) 2 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../../lib) 3 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ../../lib) 4 | 5 | add_executable(moReader ../../src/mo.cpp) 6 | 7 | if ( NOT COMPILE_DLL ) 8 | 9 | add_definitions(-D_CONSOLE) 10 | add_dependencies(moReader moFileReader.static) 11 | target_link_libraries(moReader moFileReader.static) 12 | 13 | else ( COMPILE_DLL ) 14 | 15 | add_definitions(-D_CONSOLE -DMOFILE_IMPORT) 16 | add_dependencies(moReader moFileReader) 17 | target_link_libraries(moReader moFileReader) 18 | 19 | endif () 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /include/moFileConfig.h: -------------------------------------------------------------------------------- 1 | /* 2 | * moFileReader - A simple .mo-File-Reader 3 | * Copyright (C) 2009 Domenico Gentner (scorcher24@gmail.com) 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions 8 | * are met: 9 | * 10 | * 1. Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * 13 | * 2. Redistributions in binary form must reproduce the above copyright 14 | * notice, this list of conditions and the following disclaimer in the 15 | * documentation and/or other materials provided with the distribution. 16 | * 17 | * 3. The names of its contributors may not be used to endorse or promote 18 | * products derived from this software without specific prior written 19 | * permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | */ 33 | #ifndef __MOFILECONFIG_H_INCLUDED__ 34 | #define __MOFILECONFIG_H_INCLUDED__ 35 | 36 | //------------------------------------------------------------- 37 | // Defines an export-macro when compiling as dll on woe32. 38 | //------------------------------------------------------------- 39 | #if defined(MOFILE_EXPORTS) && defined (WIN32) 40 | # define MOEXPORT __declspec(dllexport) 41 | #elif defined (MOFILE_IMPORT) && defined(WIN32) 42 | # define MOEXPORT __declspec(dllimport) 43 | #else 44 | # define MOEXPORT 45 | #endif 46 | 47 | //------------------------------------------------------------- 48 | // Path-Seperators are different on other OS. 49 | //------------------------------------------------------------- 50 | #ifdef WIN32 51 | # define moPATHSEP std::string("\\") 52 | #else 53 | # define moPATHSEP std::string("/") 54 | #endif 55 | 56 | //------------------------------------------------------------- 57 | // Defines the beginning of the namespace moFileLib. 58 | //------------------------------------------------------------- 59 | #define MO_BEGIN_NAMESPACE namespace moFileLib{ 60 | 61 | //------------------------------------------------------------- 62 | // Ends the current namespace. 63 | //------------------------------------------------------------- 64 | #define MO_END_NAMESPACE } 65 | 66 | 67 | 68 | #endif /* __MOFILECONFIG_H_INCLUDED__ */ 69 | 70 | 71 | -------------------------------------------------------------------------------- /include/moFileReader.h: -------------------------------------------------------------------------------- 1 | /* 2 | * moFileReader - A simple .mo-File-Reader 3 | * Copyright (C) 2009 Domenico Gentner (scorcher24@gmail.com) 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions 8 | * are met: 9 | * 10 | * 1. Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * 13 | * 2. Redistributions in binary form must reproduce the above copyright 14 | * notice, this list of conditions and the following disclaimer in the 15 | * documentation and/or other materials provided with the distribution. 16 | * 17 | * 3. The names of its contributors may not be used to endorse or promote 18 | * products derived from this software without specific prior written 19 | * permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | */ 33 | #ifndef __MOFILEREADER_H_INCLUDED__ 34 | #define __MOFILEREADER_H_INCLUDED__ 35 | 36 | #include 37 | #include 38 | #include 39 | #include // this is for memset when compiling with gcc. 40 | #include 41 | #include 42 | 43 | #ifndef __MOFILECONFIG_H_INCLUDED__ 44 | # include "moFileConfig.h" 45 | #endif 46 | 47 | /** \mainpage moFileReaderSDK 48 | * 49 | * 50 | *

Compilation with Visual C++ (Express and better)

51 | * 52 | * We provide a project for Visual C++ 2008. You can select 3 Types of Compilation: 53 | * 54 | *

Executable (Release or Debug)

55 | * 56 | * This will compile the code as an executable which can lookup strings from every .mo-File you load with it. 57 | * This can be handy if you want to have a peek into a file or test something etc. I recommend building the 58 | * release-executable only if you just want to use it. 59 | * 60 | *

Dynamic Loaded Library ( ReleaseDLL )

61 | * 62 | * This may be overkill, but perhaps you like it modular. This Configuration will create a dll and an import-library. 63 | * Do not forget to link against the import-library and please define MOFILE_IMPORT in your preprocessor-settings, 64 | * otherwise you will receive a bunch of linker-errors. 65 | * You will find all files in the directory "lib" in the Solutions Directory. 66 | * 67 | *

Static Library ( ReleaseLIB )

68 | * 69 | * This will compile the code as a static library with no Entry-Point. This is the recommended usage. 70 | * But please do not forget to link against moFileReader.static.lib. Otherwise you will receive linker-errors. 71 | * 72 | *

Compilation via cmake

73 | * 74 | * - Make sure you have cmake installed and in your path. If not, go to http://www.cmake.org and get it. 75 | * - Switch to a Shell or commandline 76 | * - Run cmake in $INSTALLDIR\\build. See cmake --help for possible generators. Here are the available Options: 77 | * - COMPILE_DLL Setting this to ON will compile the library as a shared module. By default, a static library is built. 78 | * . 79 | * Example: 80 | * \code 81 | * cmake -G"MinGW Makefiles" -DCOMPILE_DLL=ON 82 | * cmake -G"Visual Studio 9 2008" 83 | * // etc 84 | * \endcode 85 | * 86 | * cmake will compile the library and moReader[.exe]-binary, which can do lookups in moFiles and export moFiles as HTML. 87 | * See moReader[.exe] --help for details. 88 | * You will find the libraries in %%projectdir%%/lib and the binary in %%projectdir%%/bin 89 | * 90 | *

Compilation via provided batch-files (woe32 only)

91 | * 92 | * - Call compile_vc.bat or compile_mingw.bat with one of these options: 93 | * - DLL - Compiles as dynamic loaded module. 94 | * - LIB - Compiles as static library. 95 | * - EXE - Compiles the executable. 96 | * 97 | *

None of those?

98 | * 99 | * The last option is to simply add moFileReader.cpp, moFileReader.h and moFileConfig.h to your project. Thats all you have to do. 100 | * You can safely exclude mo.cpp, since this file keeps the entry-points of the .exe and .dll only. 101 | * 102 | *

Usage

103 | * 104 | * This is moFileReader, a simple gettext-replacement. The usage of this library is, hopefully, fairly simple: 105 | * \code 106 | * 107 | * // Instanciate the class 108 | * moFileLib::moFileReader reader; 109 | * 110 | * // Load a .mo-File. 111 | * if ( reader.ReadFile("myTranslationFile.mo") != moFileLib::moFileReader::EC_SUCCESS ) 112 | * { 113 | * // Error Handling 114 | * } 115 | * 116 | * // Now, you can lookup the strings you stored in the .mo-File: 117 | * std::cout << reader.Lookup("MyTranslationString") << std::endl; 118 | * 119 | * \endcode 120 | * Thats all! This small code has no dependencies, except the C/C++-runtime of your compiler, 121 | * so it should work on all machines where a C++-runtime is provided. 122 | * 123 | * \note We do not yet support .mo-Files with reversed magic-numbers, since I don't have 124 | * a file to test it and I hate to release stuff I wasn't able to test. 125 | * If you can provide such a file with reversed bytes, please compile %%projectdir%%/bin/i18n/de/moTest.po with 126 | * gettext or poEdit and send it to scorcher24 [at] gmail [dot] com. 127 | * 128 | *

Changelog

129 | * 130 | * - Version 0.1.2 131 | * - Generic improvements to the documentation. 132 | * - Generic improvements to the code 133 | * - Fixed a bug in mo.cpp which caused the application not to print the help 134 | * message if only --export or --lookup where missing. 135 | * - Added -h, --help and -? to moReader[.exe]. It will print the help-screen. 136 | * - Added --version and -v to moReader[.exe]. It will print some informations about the program. 137 | * - Added --license to moReader[.exe]. This will print its license. 138 | * - --export gives now a feedback about success or failure. 139 | * - The HTML-Dump-Method outputs now the whole table from the empty msgid in a nice html-table, not only a few hardcoded. 140 | * - I had an issue-report that the Error-Constants can collide with foreign code under certain conditions, 141 | * so I added a patch which renamed the error-constants to more compatible names. 142 | * 143 | * - Version 0.1.1 144 | * - Added the ability to export mo's as HTML. 145 | * - Fixed a bug causing a crash when passing an invalid value to moFileReader::Lookup(). 146 | * - Added a new file, moFileConfig.h, holding the macros for the project. 147 | * - Added the ability to be configured by cmake. 148 | * - Added some more inline-functions, which really enhance the singleton. 149 | * 150 | * - Version 0.1.0 151 | * - Initial Version and release to http://googlecode.com 152 | * 153 | * 154 | *

Credits

155 | * 156 | * Gettext is part of the GNU-Tools and (C) by the Free Software Foundation.\n 157 | * Visual C++ Express is a registered Trademark of Microsoft, One Microsoft Way, Redmond, USA.\n 158 | * moFileReader is using NSIS for creating the setup-package. \n 159 | * All other Trademarks are property of their respective owners. \n 160 | * \n 161 | * Thanks for using this piece of OpenSource-Software.\n 162 | * If you (dis)like it or have suggestions, questions, patches etc, please don't hesitate to write to my email-adress: scorcher24 [at] gmail [dot] com. 163 | * Submit patches and/or bugs on http://mofilereader.googlecode.com. You must register with googlemail to sign in. 164 | * Send your flames, dumb comments etc to /dev/null, thank you. 165 | */ 166 | 167 | 168 | 169 | /* 170 | About Warning 4251: 171 | http://support.microsoft.com/default.aspx?scid=KB;EN-US;16. 172 | 173 | I am aware of this warning and know how to deal with it. 174 | To avoid that derived projects are influenced by this warning 175 | I have deactivated it for your convinience. 176 | Note: This warning only occurs, when using this code as a DLL. 177 | */ 178 | #if defined(_MSC_VER) && ( defined(_EXPORT) || defined(MOFILE_IMPORT) ) 179 | # pragma warning (disable:4251) 180 | #endif /* _MSC_VER */ 181 | 182 | 183 | /** \namespace moFileLib 184 | * \brief This is the only namespace of this small sourcecode. 185 | */ 186 | MO_BEGIN_NAMESPACE 187 | 188 | const std::string g_css = \ 189 | "\ 190 | body {\ 191 | background-color: black;\ 192 | color: silver;\ 193 | }\ 194 | table {\ 195 | width: 80%;}\ 196 | th {\ 197 | background-color: orange;\ 198 | color: black;\ 199 | }\ 200 | hr { color: red;width: 80%; size: 5px; }\ 201 | a:link{color: gold;}\ 202 | a:visited{color: grey;}\ 203 | a:hover{color:blue;}\ 204 | .copyleft{\ 205 | font-size: 12px; \ 206 | text-align: center;\ 207 | }\ 208 | "; 209 | 210 | /** 211 | * \brief Keeps the Description of translated and original strings. 212 | * 213 | * 214 | * To load a String from the file, we need its offset and its length. 215 | * This struct helps us grouping this information. 216 | */ 217 | struct moTranslationPairInformation 218 | { 219 | /// \brief Constructor 220 | moTranslationPairInformation() 221 | : m_orLength(0), m_orOffset(0), 222 | m_trLength(0), m_trOffset(0) 223 | {} 224 | 225 | /// \brief Length of the Original String 226 | int m_orLength; 227 | 228 | /// \brief Offset of the Original String (absolute) 229 | int m_orOffset; 230 | 231 | /// \brief Length of the Translated String 232 | int m_trLength; 233 | 234 | /// \brief Offset of the Translated String (absolute) 235 | int m_trOffset; 236 | }; 237 | 238 | /** 239 | * \brief Describes the "Header" of a .mo-File. 240 | * 241 | * 242 | * The File info keeps the header of a .mo-file and 243 | * a list of the string-descriptions. 244 | * The typedef is for the type of the string-list. 245 | * The constructor ensures, that all members get a nice 246 | * initial value. 247 | */ 248 | struct moFileInfo 249 | { 250 | /// \brief Type for the list of all Translation-Pair-Descriptions. 251 | typedef std::deque moTranslationPairList; 252 | 253 | /// \brief Constructor 254 | moFileInfo() 255 | : m_magicNumber(0), m_fileVersion(0), m_numStrings(0), 256 | m_offsetOriginal(0), m_offsetTranslation(0), m_sizeHashtable(0), 257 | m_offsetHashtable(0), m_reversed(false) 258 | {} 259 | 260 | /// \brief The Magic Number, compare it to g_MagicNumber. 261 | int m_magicNumber; 262 | 263 | /// \brief The File Version, 0 atm according to the manpage. 264 | int m_fileVersion; 265 | 266 | /// \brief Number of Strings in the .mo-file. 267 | int m_numStrings; 268 | 269 | /// \brief Offset of the Table of the Original Strings 270 | int m_offsetOriginal; 271 | 272 | /// \brief Offset of the Table of the Translated Strings 273 | int m_offsetTranslation; 274 | 275 | /// \brief Size of 1 Entry in the Hashtable. 276 | int m_sizeHashtable; 277 | 278 | /// \brief The Offset of the Hashtable. 279 | int m_offsetHashtable; 280 | 281 | /** \brief Tells you if the bytes are reversed 282 | * \note When this is true, the bytes are reversed and the Magic number is like g_MagicReversed 283 | */ 284 | bool m_reversed; 285 | 286 | /// \brief A list containing offset and length of the strings in the file. 287 | moTranslationPairList m_translationPairInformation; 288 | }; 289 | 290 | /** 291 | * \brief This class is a gettext-replacement. 292 | * 293 | * 294 | * The usage is quite simple:\n 295 | * Tell the class which .mo-file it shall load via 296 | * moFileReader::ReadFile(). The method will attempt to load 297 | * the file, all translations will be stored in memory. 298 | * Afterwards you can lookup the strings with moFileReader::Lookup() just 299 | * like you would do with gettext. 300 | * Additionally, you can call moFileReader::ReadFile() for as much files as you 301 | * like. But please be aware, that if there are duplicated keys (original strings), 302 | * that they will replace each other in the lookup-table. There is no check done, if a 303 | * key already exists. 304 | * 305 | * \note If you add "Lookup" to the keywords of the gettext-parser (like poEdit), 306 | * it will recognize the Strings loaded with an instance of this class. 307 | * \note I strongly recommend poEdit from Vaclav Slavik for editing .po-Files, 308 | * get it at http://poedit.net for various systems :). 309 | */ 310 | class MOEXPORT moFileReader 311 | { 312 | protected: 313 | /// \brief Type for the map which holds the translation-pairs later. 314 | typedef std::map moLookupList; 315 | 316 | public: 317 | 318 | /// \brief The Magic Number describes the endianess of bytes on the system. 319 | static const long MagicNumber = 0x950412DE; 320 | 321 | /// \brief If the Magic Number is Reversed, we need to swap the bytes. 322 | static const long MagicReversed = 0xDE120495; 323 | 324 | /// \brief The possible errorcodes for methods of this class 325 | enum eErrorCode 326 | { 327 | /// \brief Indicated success 328 | EC_SUCCESS = 0, 329 | 330 | /// \brief Indicates an error 331 | EC_ERROR, 332 | 333 | /// \brief The given File was not found. 334 | EC_FILENOTFOUND, 335 | 336 | /// \brief The file is invalid. 337 | EC_FILEINVALID, 338 | 339 | /// \brief Empty Lookup-Table (returned by ExportAsHTML()) 340 | EC_TABLEEMPTY, 341 | 342 | /// \brief The magic number did not match 343 | EC_MAGICNUMBER_NOMATCH, 344 | 345 | /** 346 | * \brief The magic number is reversed. 347 | * \note This is an error until the class supports it. 348 | */ 349 | EC_MAGICNUMBER_REVERSED, 350 | }; 351 | 352 | /** \brief Reads a .mo-file 353 | * \param[in] _filename The path to the file to load. 354 | * \return SUCCESS on success or one of the other error-codes in eErrorCode on error. 355 | * 356 | * This is the core-feature. This method loads the .mo-file and stores 357 | * all translation-pairs in a map. You can access this map via the method 358 | * moFileReader::Lookup(). 359 | */ 360 | virtual moFileReader::eErrorCode ParseData(std::string data); 361 | 362 | /** \brief Reads a .mo-file 363 | * \param[in] _filename The path to the file to load. 364 | * \return SUCCESS on success or one of the other error-codes in eErrorCode on error. 365 | * 366 | * This is the core-feature. This method loads the .mo-file and stores 367 | * all translation-pairs in a map. You can access this map via the method 368 | * moFileReader::Lookup(). 369 | */ 370 | virtual eErrorCode ReadFile(const char* filename); 371 | 372 | /** \brief Returns the searched translation or returns the input. 373 | * \param[in,out] id The id of the translation to search for. 374 | * \return The value you passed in via _id or the translated string. 375 | */ 376 | virtual std::string Lookup( const char* id ) const; 377 | 378 | /// \brief Returns the Error Description. 379 | virtual const std::string& GetErrorDescription() const; 380 | 381 | /// \brief Empties the Lookup-Table. 382 | virtual void ClearTable(); 383 | 384 | /** \brief Returns the Number of Entries in our Lookup-Table. 385 | * \note The mo-File-table always contains an empty msgid, which contains informations 386 | * about the tranlsation-project. So the real number of strings is always minus 1. 387 | */ 388 | virtual unsigned int GetNumStrings() const; 389 | 390 | /** \brief Exports the whole content of the .mo-File as .html 391 | * \param[in] infile The .mo-File to export. 392 | * \param[in] filename Where to store the .html-file. If empty, the path and filename of the _infile with .html appended. 393 | * \param[in,out] css The css-script for the visual style of the 394 | * file, in case you don't like mine ;). 395 | * \see g_css for the possible and used css-values. 396 | */ 397 | static eErrorCode ExportAsHTML(const std::string infile, const std::string filename = "", const std::string css = g_css ); 398 | 399 | protected: 400 | /// \brief Keeps the last error as String. 401 | std::string m_error; 402 | 403 | /** \brief Swap the endianness of a 4 byte WORD. 404 | * \param[in] in The value to swap. 405 | * \return The swapped value. 406 | */ 407 | unsigned long SwapBytes(unsigned long in); 408 | 409 | private: 410 | // Holds the lookup-table 411 | moLookupList m_lookup; 412 | 413 | void MakeHtmlConform(std::string& _inout); 414 | bool GetPoEditorString(const char* _buffer, std::string& _name, std::string& _value); 415 | void Trim(std::string& _in); 416 | }; 417 | 418 | /** \brief Convience Class 419 | * 420 | * 421 | * This class derives from moFileReader and builds a singleton to access its methods 422 | * in a global manner. 423 | * \note This class is a Singleton. Please access it via moFileReaderSingleton::GetInstance() 424 | * or use the provided wrappers:\n 425 | * - moReadMoFile() 426 | * - _() 427 | * - moFileClearTable() 428 | * - moFileGetErrorDescription() 429 | * - moFileGetNumStrings(); 430 | */ 431 | class MOEXPORT moFileReaderSingleton : public moFileReader 432 | { 433 | private: 434 | // Private Contructor and Copy-Constructor to avoid 435 | // that this class is instanced. 436 | moFileReaderSingleton(); 437 | moFileReaderSingleton(const moFileReaderSingleton&); 438 | moFileReaderSingleton& operator=(const moFileReaderSingleton&); 439 | 440 | public: 441 | /** \brief Singleton-Accessor. 442 | * \return A static instance of moFileReaderSingleton. 443 | */ 444 | static moFileReaderSingleton& GetInstance(); 445 | }; 446 | 447 | /** \brief Reads the .mo-File. 448 | * \param[in] _filename The path to the file to use. 449 | * \see moFileReader::ReadFile() for details. 450 | */ 451 | inline moFileReader::eErrorCode moReadMoFile(const char* _filename) 452 | { 453 | moFileReader::eErrorCode r = moFileReaderSingleton::GetInstance().ReadFile(_filename); 454 | return r; 455 | } 456 | 457 | /** \brief Looks for the spec. string to translate. 458 | * \param[in] id The string-id to search. 459 | * \return The translation if found, otherwise it returns id. 460 | */ 461 | inline std::string _(const char* id) 462 | { 463 | std::string r = moFileReaderSingleton::GetInstance().Lookup(id); 464 | return r; 465 | } 466 | 467 | /// \brief Resets the Lookup-Table. 468 | inline void moFileClearTable() 469 | { 470 | moFileReaderSingleton::GetInstance().ClearTable(); 471 | } 472 | 473 | /// \brief Returns the last known error as string or an empty class. 474 | inline std::string moFileGetErrorDescription() 475 | { 476 | std::string r = moFileReaderSingleton::GetInstance().GetErrorDescription(); 477 | return r; 478 | } 479 | 480 | /// \brief Returns the number of entries loaded from the .mo-File. 481 | inline int moFileGetNumStrings() 482 | { 483 | int r = moFileReaderSingleton::GetInstance().GetNumStrings(); 484 | return r; 485 | } 486 | 487 | #if defined(_MSC_VER) 488 | # pragma warning (default:4251) 489 | #endif /* _MSC_VER */ 490 | 491 | MO_END_NAMESPACE 492 | 493 | #endif /* __MOFILEREADER_H_INCLUDED__ */ 494 | -------------------------------------------------------------------------------- /misc/doxygen.conf: -------------------------------------------------------------------------------- 1 | # Doxyfile 1.5.7.1 2 | # Doxyfile 1.5.7.1 3 | 4 | # This file describes the settings to be used by the documentation system 5 | # doxygen (www.doxygen.org) for a project 6 | # 7 | # All text after a hash (#) is considered a comment and will be ignored 8 | # The format is: 9 | # TAG = value [value, ...] 10 | # For lists items can also be appended using: 11 | # TAG += value [value, ...] 12 | # Values that contain spaces should be placed between quotes (" ") 13 | 14 | #--------------------------------------------------------------------------- 15 | # Project related configuration options 16 | #--------------------------------------------------------------------------- 17 | 18 | # This tag specifies the encoding used for all characters in the config file 19 | # that follow. The default is UTF-8 which is also the encoding used for all 20 | # text before the first occurrence of this tag. Doxygen uses libiconv (or the 21 | # iconv built into libc) for the transcoding. See 22 | # http://www.gnu.org/software/libiconv for the list of possible encodings. 23 | 24 | DOXYFILE_ENCODING = UTF-8 25 | 26 | # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 27 | # by quotes) that should identify the project. 28 | 29 | PROJECT_NAME = moFileReader 30 | 31 | # The PROJECT_NUMBER tag can be used to enter a project or revision number. 32 | # This could be handy for archiving the generated documentation or 33 | # if some version control system is used. 34 | 35 | PROJECT_NUMBER = 36 | 37 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 38 | # base path where the generated documentation will be put. 39 | # If a relative path is entered, it will be relative to the location 40 | # where doxygen was started. If left blank the current directory will be used. 41 | 42 | OUTPUT_DIRECTORY = . 43 | 44 | # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 45 | # 4096 sub-directories (in 2 levels) under the output directory of each output 46 | # format and will distribute the generated files over these directories. 47 | # Enabling this option can be useful when feeding doxygen a huge amount of 48 | # source files, where putting all generated files in the same directory would 49 | # otherwise cause performance problems for the file system. 50 | 51 | CREATE_SUBDIRS = NO 52 | 53 | # The OUTPUT_LANGUAGE tag is used to specify the language in which all 54 | # documentation generated by doxygen is written. Doxygen will use this 55 | # information to generate all constant output in the proper language. 56 | # The default language is English, other supported languages are: 57 | # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 58 | # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 59 | # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 60 | # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 61 | # Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 62 | # Spanish, Swedish, and Ukrainian. 63 | 64 | OUTPUT_LANGUAGE = English 65 | 66 | # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 67 | # include brief member descriptions after the members that are listed in 68 | # the file and class documentation (similar to JavaDoc). 69 | # Set to NO to disable this. 70 | 71 | BRIEF_MEMBER_DESC = YES 72 | 73 | # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 74 | # the brief description of a member or function before the detailed description. 75 | # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 76 | # brief descriptions will be completely suppressed. 77 | 78 | REPEAT_BRIEF = YES 79 | 80 | # This tag implements a quasi-intelligent brief description abbreviator 81 | # that is used to form the text in various listings. Each string 82 | # in this list, if found as the leading text of the brief description, will be 83 | # stripped from the text and the result after processing the whole list, is 84 | # used as the annotated text. Otherwise, the brief description is used as-is. 85 | # If left blank, the following values are used ("$name" is automatically 86 | # replaced with the name of the entity): "The $name class" "The $name widget" 87 | # "The $name file" "is" "provides" "specifies" "contains" 88 | # "represents" "a" "an" "the" 89 | 90 | ABBREVIATE_BRIEF = 91 | 92 | # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 93 | # Doxygen will generate a detailed section even if there is only a brief 94 | # description. 95 | 96 | ALWAYS_DETAILED_SEC = NO 97 | 98 | # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 99 | # inherited members of a class in the documentation of that class as if those 100 | # members were ordinary class members. Constructors, destructors and assignment 101 | # operators of the base classes will not be shown. 102 | 103 | INLINE_INHERITED_MEMB = NO 104 | 105 | # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 106 | # path before files name in the file list and in the header files. If set 107 | # to NO the shortest path that makes the file name unique will be used. 108 | 109 | FULL_PATH_NAMES = NO 110 | 111 | # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 112 | # can be used to strip a user-defined part of the path. Stripping is 113 | # only done if one of the specified strings matches the left-hand part of 114 | # the path. The tag can be used to show relative paths in the file list. 115 | # If left blank the directory from which doxygen is run is used as the 116 | # path to strip. 117 | 118 | STRIP_FROM_PATH = 119 | 120 | # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 121 | # the path mentioned in the documentation of a class, which tells 122 | # the reader which header file to include in order to use a class. 123 | # If left blank only the name of the header file containing the class 124 | # definition is used. Otherwise one should specify the include paths that 125 | # are normally passed to the compiler using the -I flag. 126 | 127 | STRIP_FROM_INC_PATH = 128 | 129 | # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 130 | # (but less readable) file names. This can be useful is your file systems 131 | # doesn't support long names like on DOS, Mac, or CD-ROM. 132 | 133 | SHORT_NAMES = NO 134 | 135 | # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 136 | # will interpret the first line (until the first dot) of a JavaDoc-style 137 | # comment as the brief description. If set to NO, the JavaDoc 138 | # comments will behave just like regular Qt-style comments 139 | # (thus requiring an explicit @brief command for a brief description.) 140 | 141 | JAVADOC_AUTOBRIEF = NO 142 | 143 | # If the QT_AUTOBRIEF tag is set to YES then Doxygen will 144 | # interpret the first line (until the first dot) of a Qt-style 145 | # comment as the brief description. If set to NO, the comments 146 | # will behave just like regular Qt-style comments (thus requiring 147 | # an explicit \brief command for a brief description.) 148 | 149 | QT_AUTOBRIEF = NO 150 | 151 | # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 152 | # treat a multi-line C++ special comment block (i.e. a block of //! or /// 153 | # comments) as a brief description. This used to be the default behaviour. 154 | # The new default is to treat a multi-line C++ comment block as a detailed 155 | # description. Set this tag to YES if you prefer the old behaviour instead. 156 | 157 | MULTILINE_CPP_IS_BRIEF = NO 158 | 159 | # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 160 | # member inherits the documentation from any documented member that it 161 | # re-implements. 162 | 163 | INHERIT_DOCS = YES 164 | 165 | # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 166 | # a new page for each member. If set to NO, the documentation of a member will 167 | # be part of the file/class/namespace that contains it. 168 | 169 | SEPARATE_MEMBER_PAGES = NO 170 | 171 | # The TAB_SIZE tag can be used to set the number of spaces in a tab. 172 | # Doxygen uses this value to replace tabs by spaces in code fragments. 173 | 174 | TAB_SIZE = 4 175 | 176 | # This tag can be used to specify a number of aliases that acts 177 | # as commands in the documentation. An alias has the form "name=value". 178 | # For example adding "sideeffect=\par Side Effects:\n" will allow you to 179 | # put the command \sideeffect (or @sideeffect) in the documentation, which 180 | # will result in a user-defined paragraph with heading "Side Effects:". 181 | # You can put \n's in the value part of an alias to insert newlines. 182 | 183 | ALIASES = 184 | 185 | # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 186 | # sources only. Doxygen will then generate output that is more tailored for C. 187 | # For instance, some of the names that are used will be different. The list 188 | # of all members will be omitted, etc. 189 | 190 | OPTIMIZE_OUTPUT_FOR_C = NO 191 | 192 | # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 193 | # sources only. Doxygen will then generate output that is more tailored for 194 | # Java. For instance, namespaces will be presented as packages, qualified 195 | # scopes will look different, etc. 196 | 197 | OPTIMIZE_OUTPUT_JAVA = NO 198 | 199 | # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 200 | # sources only. Doxygen will then generate output that is more tailored for 201 | # Fortran. 202 | 203 | OPTIMIZE_FOR_FORTRAN = NO 204 | 205 | # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 206 | # sources. Doxygen will then generate output that is tailored for 207 | # VHDL. 208 | 209 | OPTIMIZE_OUTPUT_VHDL = NO 210 | 211 | # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 212 | # to include (a tag file for) the STL sources as input, then you should 213 | # set this tag to YES in order to let doxygen match functions declarations and 214 | # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 215 | # func(std::string) {}). This also make the inheritance and collaboration 216 | # diagrams that involve STL classes more complete and accurate. 217 | 218 | BUILTIN_STL_SUPPORT = YES 219 | 220 | # If you use Microsoft's C++/CLI language, you should set this option to YES to 221 | # enable parsing support. 222 | 223 | CPP_CLI_SUPPORT = NO 224 | 225 | # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 226 | # Doxygen will parse them like normal C++ but will assume all classes use public 227 | # instead of private inheritance when no explicit protection keyword is present. 228 | 229 | SIP_SUPPORT = NO 230 | 231 | # For Microsoft's IDL there are propget and propput attributes to indicate getter 232 | # and setter methods for a property. Setting this option to YES (the default) 233 | # will make doxygen to replace the get and set methods by a property in the 234 | # documentation. This will only work if the methods are indeed getting or 235 | # setting a simple type. If this is not the case, or you want to show the 236 | # methods anyway, you should set this option to NO. 237 | 238 | IDL_PROPERTY_SUPPORT = YES 239 | 240 | # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 241 | # tag is set to YES, then doxygen will reuse the documentation of the first 242 | # member in the group (if any) for the other members of the group. By default 243 | # all members of a group must be documented explicitly. 244 | 245 | DISTRIBUTE_GROUP_DOC = NO 246 | 247 | # Set the SUBGROUPING tag to YES (the default) to allow class member groups of 248 | # the same type (for instance a group of public functions) to be put as a 249 | # subgroup of that type (e.g. under the Public Functions section). Set it to 250 | # NO to prevent subgrouping. Alternatively, this can be done per class using 251 | # the \nosubgrouping command. 252 | 253 | SUBGROUPING = YES 254 | 255 | # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 256 | # is documented as struct, union, or enum with the name of the typedef. So 257 | # typedef struct TypeS {} TypeT, will appear in the documentation as a struct 258 | # with name TypeT. When disabled the typedef will appear as a member of a file, 259 | # namespace, or class. And the struct will be named TypeS. This can typically 260 | # be useful for C code in case the coding convention dictates that all compound 261 | # types are typedef'ed and only the typedef is referenced, never the tag name. 262 | 263 | TYPEDEF_HIDES_STRUCT = NO 264 | 265 | # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 266 | # determine which symbols to keep in memory and which to flush to disk. 267 | # When the cache is full, less often used symbols will be written to disk. 268 | # For small to medium size projects (<1000 input files) the default value is 269 | # probably good enough. For larger projects a too small cache size can cause 270 | # doxygen to be busy swapping symbols to and from disk most of the time 271 | # causing a significant performance penality. 272 | # If the system has enough physical memory increasing the cache will improve the 273 | # performance by keeping more symbols in memory. Note that the value works on 274 | # a logarithmic scale so increasing the size by one will rougly double the 275 | # memory usage. The cache size is given by this formula: 276 | # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 277 | # corresponding to a cache size of 2^16 = 65536 symbols 278 | 279 | SYMBOL_CACHE_SIZE = 0 280 | 281 | #--------------------------------------------------------------------------- 282 | # Build related configuration options 283 | #--------------------------------------------------------------------------- 284 | 285 | # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 286 | # documentation are documented, even if no documentation was available. 287 | # Private class members and static file members will be hidden unless 288 | # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES 289 | 290 | EXTRACT_ALL = YES 291 | 292 | # If the EXTRACT_PRIVATE tag is set to YES all private members of a class 293 | # will be included in the documentation. 294 | 295 | EXTRACT_PRIVATE = NO 296 | 297 | # If the EXTRACT_STATIC tag is set to YES all static members of a file 298 | # will be included in the documentation. 299 | 300 | EXTRACT_STATIC = YES 301 | 302 | # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 303 | # defined locally in source files will be included in the documentation. 304 | # If set to NO only classes defined in header files are included. 305 | 306 | EXTRACT_LOCAL_CLASSES = YES 307 | 308 | # This flag is only useful for Objective-C code. When set to YES local 309 | # methods, which are defined in the implementation section but not in 310 | # the interface are included in the documentation. 311 | # If set to NO (the default) only methods in the interface are included. 312 | 313 | EXTRACT_LOCAL_METHODS = NO 314 | 315 | # If this flag is set to YES, the members of anonymous namespaces will be 316 | # extracted and appear in the documentation as a namespace called 317 | # 'anonymous_namespace{file}', where file will be replaced with the base 318 | # name of the file that contains the anonymous namespace. By default 319 | # anonymous namespace are hidden. 320 | 321 | EXTRACT_ANON_NSPACES = NO 322 | 323 | # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 324 | # undocumented members of documented classes, files or namespaces. 325 | # If set to NO (the default) these members will be included in the 326 | # various overviews, but no documentation section is generated. 327 | # This option has no effect if EXTRACT_ALL is enabled. 328 | 329 | HIDE_UNDOC_MEMBERS = NO 330 | 331 | # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 332 | # undocumented classes that are normally visible in the class hierarchy. 333 | # If set to NO (the default) these classes will be included in the various 334 | # overviews. This option has no effect if EXTRACT_ALL is enabled. 335 | 336 | HIDE_UNDOC_CLASSES = NO 337 | 338 | # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 339 | # friend (class|struct|union) declarations. 340 | # If set to NO (the default) these declarations will be included in the 341 | # documentation. 342 | 343 | HIDE_FRIEND_COMPOUNDS = NO 344 | 345 | # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 346 | # documentation blocks found inside the body of a function. 347 | # If set to NO (the default) these blocks will be appended to the 348 | # function's detailed documentation block. 349 | 350 | HIDE_IN_BODY_DOCS = NO 351 | 352 | # The INTERNAL_DOCS tag determines if documentation 353 | # that is typed after a \internal command is included. If the tag is set 354 | # to NO (the default) then the documentation will be excluded. 355 | # Set it to YES to include the internal documentation. 356 | 357 | INTERNAL_DOCS = NO 358 | 359 | # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 360 | # file names in lower-case letters. If set to YES upper-case letters are also 361 | # allowed. This is useful if you have classes or files whose names only differ 362 | # in case and if your file system supports case sensitive file names. Windows 363 | # and Mac users are advised to set this option to NO. 364 | 365 | CASE_SENSE_NAMES = NO 366 | 367 | # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 368 | # will show members with their full class and namespace scopes in the 369 | # documentation. If set to YES the scope will be hidden. 370 | 371 | HIDE_SCOPE_NAMES = NO 372 | 373 | # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 374 | # will put a list of the files that are included by a file in the documentation 375 | # of that file. 376 | 377 | SHOW_INCLUDE_FILES = YES 378 | 379 | # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 380 | # is inserted in the documentation for inline members. 381 | 382 | INLINE_INFO = YES 383 | 384 | # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 385 | # will sort the (detailed) documentation of file and class members 386 | # alphabetically by member name. If set to NO the members will appear in 387 | # declaration order. 388 | 389 | SORT_MEMBER_DOCS = YES 390 | 391 | # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 392 | # brief documentation of file, namespace and class members alphabetically 393 | # by member name. If set to NO (the default) the members will appear in 394 | # declaration order. 395 | 396 | SORT_BRIEF_DOCS = NO 397 | 398 | # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 399 | # hierarchy of group names into alphabetical order. If set to NO (the default) 400 | # the group names will appear in their defined order. 401 | 402 | SORT_GROUP_NAMES = NO 403 | 404 | # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 405 | # sorted by fully-qualified names, including namespaces. If set to 406 | # NO (the default), the class list will be sorted only by class name, 407 | # not including the namespace part. 408 | # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 409 | # Note: This option applies only to the class list, not to the 410 | # alphabetical list. 411 | 412 | SORT_BY_SCOPE_NAME = NO 413 | 414 | # The GENERATE_TODOLIST tag can be used to enable (YES) or 415 | # disable (NO) the todo list. This list is created by putting \todo 416 | # commands in the documentation. 417 | 418 | GENERATE_TODOLIST = YES 419 | 420 | # The GENERATE_TESTLIST tag can be used to enable (YES) or 421 | # disable (NO) the test list. This list is created by putting \test 422 | # commands in the documentation. 423 | 424 | GENERATE_TESTLIST = YES 425 | 426 | # The GENERATE_BUGLIST tag can be used to enable (YES) or 427 | # disable (NO) the bug list. This list is created by putting \bug 428 | # commands in the documentation. 429 | 430 | GENERATE_BUGLIST = YES 431 | 432 | # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 433 | # disable (NO) the deprecated list. This list is created by putting 434 | # \deprecated commands in the documentation. 435 | 436 | GENERATE_DEPRECATEDLIST= YES 437 | 438 | # The ENABLED_SECTIONS tag can be used to enable conditional 439 | # documentation sections, marked by \if sectionname ... \endif. 440 | 441 | ENABLED_SECTIONS = 442 | 443 | # The MAX_INITIALIZER_LINES tag determines the maximum number of lines 444 | # the initial value of a variable or define consists of for it to appear in 445 | # the documentation. If the initializer consists of more lines than specified 446 | # here it will be hidden. Use a value of 0 to hide initializers completely. 447 | # The appearance of the initializer of individual variables and defines in the 448 | # documentation can be controlled using \showinitializer or \hideinitializer 449 | # command in the documentation regardless of this setting. 450 | 451 | MAX_INITIALIZER_LINES = 30 452 | 453 | # Set the SHOW_USED_FILES tag to NO to disable the list of files generated 454 | # at the bottom of the documentation of classes and structs. If set to YES the 455 | # list will mention the files that were used to generate the documentation. 456 | 457 | SHOW_USED_FILES = YES 458 | 459 | # If the sources in your project are distributed over multiple directories 460 | # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 461 | # in the documentation. The default is NO. 462 | 463 | SHOW_DIRECTORIES = NO 464 | 465 | # Set the SHOW_FILES tag to NO to disable the generation of the Files page. 466 | # This will remove the Files entry from the Quick Index and from the 467 | # Folder Tree View (if specified). The default is YES. 468 | 469 | SHOW_FILES = YES 470 | 471 | # Set the SHOW_NAMESPACES tag to NO to disable the generation of the 472 | # Namespaces page. This will remove the Namespaces entry from the Quick Index 473 | # and from the Folder Tree View (if specified). The default is YES. 474 | 475 | SHOW_NAMESPACES = YES 476 | 477 | # The FILE_VERSION_FILTER tag can be used to specify a program or script that 478 | # doxygen should invoke to get the current version for each file (typically from 479 | # the version control system). Doxygen will invoke the program by executing (via 480 | # popen()) the command , where is the value of 481 | # the FILE_VERSION_FILTER tag, and is the name of an input file 482 | # provided by doxygen. Whatever the program writes to standard output 483 | # is used as the file version. See the manual for examples. 484 | 485 | FILE_VERSION_FILTER = 486 | 487 | # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 488 | # doxygen. The layout file controls the global structure of the generated output files 489 | # in an output format independent way. The create the layout file that represents 490 | # doxygen's defaults, run doxygen with the -l option. You can optionally specify a 491 | # file name after the option, if omitted DoxygenLayout.xml will be used as the name 492 | # of the layout file. 493 | 494 | LAYOUT_FILE = 495 | 496 | #--------------------------------------------------------------------------- 497 | # configuration options related to warning and progress messages 498 | #--------------------------------------------------------------------------- 499 | 500 | # The QUIET tag can be used to turn on/off the messages that are generated 501 | # by doxygen. Possible values are YES and NO. If left blank NO is used. 502 | 503 | QUIET = NO 504 | 505 | # The WARNINGS tag can be used to turn on/off the warning messages that are 506 | # generated by doxygen. Possible values are YES and NO. If left blank 507 | # NO is used. 508 | 509 | WARNINGS = YES 510 | 511 | # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 512 | # for undocumented members. If EXTRACT_ALL is set to YES then this flag will 513 | # automatically be disabled. 514 | 515 | WARN_IF_UNDOCUMENTED = YES 516 | 517 | # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 518 | # potential errors in the documentation, such as not documenting some 519 | # parameters in a documented function, or documenting parameters that 520 | # don't exist or using markup commands wrongly. 521 | 522 | WARN_IF_DOC_ERROR = YES 523 | 524 | # This WARN_NO_PARAMDOC option can be abled to get warnings for 525 | # functions that are documented, but have no documentation for their parameters 526 | # or return value. If set to NO (the default) doxygen will only warn about 527 | # wrong or incomplete parameter documentation, but not about the absence of 528 | # documentation. 529 | 530 | WARN_NO_PARAMDOC = YES 531 | 532 | # The WARN_FORMAT tag determines the format of the warning messages that 533 | # doxygen can produce. The string should contain the $file, $line, and $text 534 | # tags, which will be replaced by the file and line number from which the 535 | # warning originated and the warning text. Optionally the format may contain 536 | # $version, which will be replaced by the version of the file (if it could 537 | # be obtained via FILE_VERSION_FILTER) 538 | 539 | WARN_FORMAT = "$file:$line: $text" 540 | 541 | # The WARN_LOGFILE tag can be used to specify a file to which warning 542 | # and error messages should be written. If left blank the output is written 543 | # to stderr. 544 | 545 | WARN_LOGFILE = ./obj/doxygen.log 546 | 547 | #--------------------------------------------------------------------------- 548 | # configuration options related to the input files 549 | #--------------------------------------------------------------------------- 550 | 551 | # The INPUT tag can be used to specify the files and/or directories that contain 552 | # documented source files. You may enter file names like "myfile.cpp" or 553 | # directories like "/usr/src/myproject". Separate the files or directories 554 | # with spaces. 555 | 556 | INPUT = ./include/moFileReader.h 557 | 558 | # This tag can be used to specify the character encoding of the source files 559 | # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 560 | # also the default input encoding. Doxygen uses libiconv (or the iconv built 561 | # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 562 | # the list of possible encodings. 563 | 564 | INPUT_ENCODING = UTF-8 565 | 566 | # If the value of the INPUT tag contains directories, you can use the 567 | # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 568 | # and *.h) to filter out the source-files in the directories. If left 569 | # blank the following patterns are tested: 570 | # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 571 | # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 572 | 573 | FILE_PATTERNS = *.h 574 | 575 | # The RECURSIVE tag can be used to turn specify whether or not subdirectories 576 | # should be searched for input files as well. Possible values are YES and NO. 577 | # If left blank NO is used. 578 | 579 | RECURSIVE = NO 580 | 581 | # The EXCLUDE tag can be used to specify files and/or directories that should 582 | # excluded from the INPUT source files. This way you can easily exclude a 583 | # subdirectory from a directory tree whose root is specified with the INPUT tag. 584 | 585 | EXCLUDE = 586 | 587 | # The EXCLUDE_SYMLINKS tag can be used select whether or not files or 588 | # directories that are symbolic links (a Unix filesystem feature) are excluded 589 | # from the input. 590 | 591 | EXCLUDE_SYMLINKS = NO 592 | 593 | # If the value of the INPUT tag contains directories, you can use the 594 | # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 595 | # certain files from those directories. Note that the wildcards are matched 596 | # against the file with absolute path, so to exclude all test directories 597 | # for example use the pattern */test/* 598 | 599 | EXCLUDE_PATTERNS = 600 | 601 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 602 | # (namespaces, classes, functions, etc.) that should be excluded from the 603 | # output. The symbol name can be a fully qualified name, a word, or if the 604 | # wildcard * is used, a substring. Examples: ANamespace, AClass, 605 | # AClass::ANamespace, ANamespace::*Test 606 | 607 | EXCLUDE_SYMBOLS = 608 | 609 | # The EXAMPLE_PATH tag can be used to specify one or more files or 610 | # directories that contain example code fragments that are included (see 611 | # the \include command). 612 | 613 | EXAMPLE_PATH = 614 | 615 | # If the value of the EXAMPLE_PATH tag contains directories, you can use the 616 | # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 617 | # and *.h) to filter out the source-files in the directories. If left 618 | # blank all files are included. 619 | 620 | EXAMPLE_PATTERNS = 621 | 622 | # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 623 | # searched for input files to be used with the \include or \dontinclude 624 | # commands irrespective of the value of the RECURSIVE tag. 625 | # Possible values are YES and NO. If left blank NO is used. 626 | 627 | EXAMPLE_RECURSIVE = NO 628 | 629 | # The IMAGE_PATH tag can be used to specify one or more files or 630 | # directories that contain image that are included in the documentation (see 631 | # the \image command). 632 | 633 | IMAGE_PATH = 634 | 635 | # The INPUT_FILTER tag can be used to specify a program that doxygen should 636 | # invoke to filter for each input file. Doxygen will invoke the filter program 637 | # by executing (via popen()) the command , where 638 | # is the value of the INPUT_FILTER tag, and is the name of an 639 | # input file. Doxygen will then use the output that the filter program writes 640 | # to standard output. If FILTER_PATTERNS is specified, this tag will be 641 | # ignored. 642 | 643 | INPUT_FILTER = 644 | 645 | # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 646 | # basis. Doxygen will compare the file name with each pattern and apply the 647 | # filter if there is a match. The filters are a list of the form: 648 | # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 649 | # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 650 | # is applied to all files. 651 | 652 | FILTER_PATTERNS = 653 | 654 | # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 655 | # INPUT_FILTER) will be used to filter the input files when producing source 656 | # files to browse (i.e. when SOURCE_BROWSER is set to YES). 657 | 658 | FILTER_SOURCE_FILES = NO 659 | 660 | #--------------------------------------------------------------------------- 661 | # configuration options related to source browsing 662 | #--------------------------------------------------------------------------- 663 | 664 | # If the SOURCE_BROWSER tag is set to YES then a list of source files will 665 | # be generated. Documented entities will be cross-referenced with these sources. 666 | # Note: To get rid of all source code in the generated output, make sure also 667 | # VERBATIM_HEADERS is set to NO. 668 | 669 | SOURCE_BROWSER = NO 670 | 671 | # Setting the INLINE_SOURCES tag to YES will include the body 672 | # of functions and classes directly in the documentation. 673 | 674 | INLINE_SOURCES = NO 675 | 676 | # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 677 | # doxygen to hide any special comment blocks from generated source code 678 | # fragments. Normal C and C++ comments will always remain visible. 679 | 680 | STRIP_CODE_COMMENTS = YES 681 | 682 | # If the REFERENCED_BY_RELATION tag is set to YES 683 | # then for each documented function all documented 684 | # functions referencing it will be listed. 685 | 686 | REFERENCED_BY_RELATION = NO 687 | 688 | # If the REFERENCES_RELATION tag is set to YES 689 | # then for each documented function all documented entities 690 | # called/used by that function will be listed. 691 | 692 | REFERENCES_RELATION = NO 693 | 694 | # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 695 | # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 696 | # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 697 | # link to the source code. Otherwise they will link to the documentstion. 698 | 699 | REFERENCES_LINK_SOURCE = YES 700 | 701 | # If the USE_HTAGS tag is set to YES then the references to source code 702 | # will point to the HTML generated by the htags(1) tool instead of doxygen 703 | # built-in source browser. The htags tool is part of GNU's global source 704 | # tagging system (see http://www.gnu.org/software/global/global.html). You 705 | # will need version 4.8.6 or higher. 706 | 707 | USE_HTAGS = NO 708 | 709 | # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 710 | # will generate a verbatim copy of the header file for each class for 711 | # which an include is specified. Set to NO to disable this. 712 | 713 | VERBATIM_HEADERS = YES 714 | 715 | #--------------------------------------------------------------------------- 716 | # configuration options related to the alphabetical class index 717 | #--------------------------------------------------------------------------- 718 | 719 | # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 720 | # of all compounds will be generated. Enable this if the project 721 | # contains a lot of classes, structs, unions or interfaces. 722 | 723 | ALPHABETICAL_INDEX = NO 724 | 725 | # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 726 | # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 727 | # in which this list will be split (can be a number in the range [1..20]) 728 | 729 | COLS_IN_ALPHA_INDEX = 5 730 | 731 | # In case all classes in a project start with a common prefix, all 732 | # classes will be put under the same header in the alphabetical index. 733 | # The IGNORE_PREFIX tag can be used to specify one or more prefixes that 734 | # should be ignored while generating the index headers. 735 | 736 | IGNORE_PREFIX = 737 | 738 | #--------------------------------------------------------------------------- 739 | # configuration options related to the HTML output 740 | #--------------------------------------------------------------------------- 741 | 742 | # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 743 | # generate HTML output. 744 | 745 | GENERATE_HTML = YES 746 | 747 | # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 748 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 749 | # put in front of it. If left blank `html' will be used as the default path. 750 | 751 | HTML_OUTPUT = reference 752 | 753 | # The HTML_FILE_EXTENSION tag can be used to specify the file extension for 754 | # each generated HTML page (for example: .htm,.php,.asp). If it is left blank 755 | # doxygen will generate files with .html extension. 756 | 757 | HTML_FILE_EXTENSION = .html 758 | 759 | # The HTML_HEADER tag can be used to specify a personal HTML header for 760 | # each generated HTML page. If it is left blank doxygen will generate a 761 | # standard header. 762 | 763 | HTML_HEADER = misc/header.html 764 | 765 | # The HTML_FOOTER tag can be used to specify a personal HTML footer for 766 | # each generated HTML page. If it is left blank doxygen will generate a 767 | # standard footer. 768 | 769 | HTML_FOOTER = misc/footer.html 770 | 771 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 772 | # style sheet that is used by each HTML page. It can be used to 773 | # fine-tune the look of the HTML output. If the tag is left blank doxygen 774 | # will generate a default style sheet. Note that doxygen will try to copy 775 | # the style sheet file to the HTML output directory, so don't put your own 776 | # stylesheet in the HTML output directory as well, or it will be erased! 777 | 778 | HTML_STYLESHEET = 779 | 780 | # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 781 | # files or namespaces will be aligned in HTML using tables. If set to 782 | # NO a bullet list will be used. 783 | 784 | HTML_ALIGN_MEMBERS = YES 785 | 786 | # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 787 | # documentation will contain sections that can be hidden and shown after the 788 | # page has loaded. For this to work a browser that supports 789 | # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 790 | # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). 791 | 792 | HTML_DYNAMIC_SECTIONS = YES 793 | 794 | # If the GENERATE_DOCSET tag is set to YES, additional index files 795 | # will be generated that can be used as input for Apple's Xcode 3 796 | # integrated development environment, introduced with OSX 10.5 (Leopard). 797 | # To create a documentation set, doxygen will generate a Makefile in the 798 | # HTML output directory. Running make will produce the docset in that 799 | # directory and running "make install" will install the docset in 800 | # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 801 | # it at startup. 802 | # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. 803 | 804 | GENERATE_DOCSET = NO 805 | 806 | # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 807 | # feed. A documentation feed provides an umbrella under which multiple 808 | # documentation sets from a single provider (such as a company or product suite) 809 | # can be grouped. 810 | 811 | DOCSET_FEEDNAME = "Doxygen generated docs" 812 | 813 | # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 814 | # should uniquely identify the documentation set bundle. This should be a 815 | # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 816 | # will append .docset to the name. 817 | 818 | DOCSET_BUNDLE_ID = org.doxygen.Project 819 | 820 | # If the GENERATE_HTMLHELP tag is set to YES, additional index files 821 | # will be generated that can be used as input for tools like the 822 | # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 823 | # of the generated HTML documentation. 824 | 825 | GENERATE_HTMLHELP = NO 826 | 827 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 828 | # be used to specify the file name of the resulting .chm file. You 829 | # can add a path in front of the file if the result should not be 830 | # written to the html output directory. 831 | 832 | CHM_FILE = 833 | 834 | # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 835 | # be used to specify the location (absolute path including file name) of 836 | # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 837 | # the HTML help compiler on the generated index.hhp. 838 | 839 | HHC_LOCATION = 840 | 841 | # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 842 | # controls if a separate .chi index file is generated (YES) or that 843 | # it should be included in the master .chm file (NO). 844 | 845 | GENERATE_CHI = NO 846 | 847 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 848 | # is used to encode HtmlHelp index (hhk), content (hhc) and project file 849 | # content. 850 | 851 | CHM_INDEX_ENCODING = 852 | 853 | # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 854 | # controls whether a binary table of contents is generated (YES) or a 855 | # normal table of contents (NO) in the .chm file. 856 | 857 | BINARY_TOC = NO 858 | 859 | # The TOC_EXPAND flag can be set to YES to add extra items for group members 860 | # to the contents of the HTML help documentation and to the tree view. 861 | 862 | TOC_EXPAND = NO 863 | 864 | # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 865 | # are set, an additional index file will be generated that can be used as input for 866 | # Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 867 | # HTML documentation. 868 | 869 | GENERATE_QHP = NO 870 | 871 | # If the QHG_LOCATION tag is specified, the QCH_FILE tag can 872 | # be used to specify the file name of the resulting .qch file. 873 | # The path specified is relative to the HTML output folder. 874 | 875 | QCH_FILE = 876 | 877 | # The QHP_NAMESPACE tag specifies the namespace to use when generating 878 | # Qt Help Project output. For more information please see 879 | # Qt Help Project / Namespace. 880 | 881 | QHP_NAMESPACE = org.doxygen.Project 882 | 883 | # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 884 | # Qt Help Project output. For more information please see 885 | # Qt Help Project / Virtual Folders. 886 | 887 | QHP_VIRTUAL_FOLDER = doc 888 | 889 | # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 890 | # be used to specify the location of Qt's qhelpgenerator. 891 | # If non-empty doxygen will try to run qhelpgenerator on the generated 892 | # .qhp file . 893 | 894 | QHG_LOCATION = 895 | 896 | # The DISABLE_INDEX tag can be used to turn on/off the condensed index at 897 | # top of each HTML page. The value NO (the default) enables the index and 898 | # the value YES disables it. 899 | 900 | DISABLE_INDEX = YES 901 | 902 | # This tag can be used to set the number of enum values (range [1..20]) 903 | # that doxygen will group on one line in the generated HTML documentation. 904 | 905 | ENUM_VALUES_PER_LINE = 4 906 | 907 | # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 908 | # structure should be generated to display hierarchical information. 909 | # If the tag value is set to FRAME, a side panel will be generated 910 | # containing a tree-like index structure (just like the one that 911 | # is generated for HTML Help). For this to work a browser that supports 912 | # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 913 | # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 914 | # probably better off using the HTML help feature. Other possible values 915 | # for this tag are: HIERARCHIES, which will generate the Groups, Directories, 916 | # and Class Hierarchy pages using a tree view instead of an ordered list; 917 | # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 918 | # disables this behavior completely. For backwards compatibility with previous 919 | # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 920 | # respectively. 921 | 922 | GENERATE_TREEVIEW = NONE 923 | 924 | # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 925 | # used to set the initial width (in pixels) of the frame in which the tree 926 | # is shown. 927 | 928 | TREEVIEW_WIDTH = 250 929 | 930 | # Use this tag to change the font size of Latex formulas included 931 | # as images in the HTML documentation. The default is 10. Note that 932 | # when you change the font size after a successful doxygen run you need 933 | # to manually remove any form_*.png images from the HTML output directory 934 | # to force them to be regenerated. 935 | 936 | FORMULA_FONTSIZE = 10 937 | 938 | #--------------------------------------------------------------------------- 939 | # configuration options related to the LaTeX output 940 | #--------------------------------------------------------------------------- 941 | 942 | # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 943 | # generate Latex output. 944 | 945 | GENERATE_LATEX = NO 946 | 947 | # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 948 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 949 | # put in front of it. If left blank `latex' will be used as the default path. 950 | 951 | LATEX_OUTPUT = latex 952 | 953 | # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 954 | # invoked. If left blank `latex' will be used as the default command name. 955 | 956 | LATEX_CMD_NAME = latex 957 | 958 | # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 959 | # generate index for LaTeX. If left blank `makeindex' will be used as the 960 | # default command name. 961 | 962 | MAKEINDEX_CMD_NAME = makeindex 963 | 964 | # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 965 | # LaTeX documents. This may be useful for small projects and may help to 966 | # save some trees in general. 967 | 968 | COMPACT_LATEX = NO 969 | 970 | # The PAPER_TYPE tag can be used to set the paper type that is used 971 | # by the printer. Possible values are: a4, a4wide, letter, legal and 972 | # executive. If left blank a4wide will be used. 973 | 974 | PAPER_TYPE = a4wide 975 | 976 | # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 977 | # packages that should be included in the LaTeX output. 978 | 979 | EXTRA_PACKAGES = 980 | 981 | # The LATEX_HEADER tag can be used to specify a personal LaTeX header for 982 | # the generated latex document. The header should contain everything until 983 | # the first chapter. If it is left blank doxygen will generate a 984 | # standard header. Notice: only use this tag if you know what you are doing! 985 | 986 | LATEX_HEADER = 987 | 988 | # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 989 | # is prepared for conversion to pdf (using ps2pdf). The pdf file will 990 | # contain links (just like the HTML output) instead of page references 991 | # This makes the output suitable for online browsing using a pdf viewer. 992 | 993 | PDF_HYPERLINKS = YES 994 | 995 | # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 996 | # plain latex in the generated Makefile. Set this option to YES to get a 997 | # higher quality PDF documentation. 998 | 999 | USE_PDFLATEX = YES 1000 | 1001 | # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 1002 | # command to the generated LaTeX files. This will instruct LaTeX to keep 1003 | # running if errors occur, instead of asking the user for help. 1004 | # This option is also used when generating formulas in HTML. 1005 | 1006 | LATEX_BATCHMODE = NO 1007 | 1008 | # If LATEX_HIDE_INDICES is set to YES then doxygen will not 1009 | # include the index chapters (such as File Index, Compound Index, etc.) 1010 | # in the output. 1011 | 1012 | LATEX_HIDE_INDICES = NO 1013 | 1014 | #--------------------------------------------------------------------------- 1015 | # configuration options related to the RTF output 1016 | #--------------------------------------------------------------------------- 1017 | 1018 | # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 1019 | # The RTF output is optimized for Word 97 and may not look very pretty with 1020 | # other RTF readers or editors. 1021 | 1022 | GENERATE_RTF = NO 1023 | 1024 | # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 1025 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1026 | # put in front of it. If left blank `rtf' will be used as the default path. 1027 | 1028 | RTF_OUTPUT = rtf 1029 | 1030 | # If the COMPACT_RTF tag is set to YES Doxygen generates more compact 1031 | # RTF documents. This may be useful for small projects and may help to 1032 | # save some trees in general. 1033 | 1034 | COMPACT_RTF = NO 1035 | 1036 | # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 1037 | # will contain hyperlink fields. The RTF file will 1038 | # contain links (just like the HTML output) instead of page references. 1039 | # This makes the output suitable for online browsing using WORD or other 1040 | # programs which support those fields. 1041 | # Note: wordpad (write) and others do not support links. 1042 | 1043 | RTF_HYPERLINKS = NO 1044 | 1045 | # Load stylesheet definitions from file. Syntax is similar to doxygen's 1046 | # config file, i.e. a series of assignments. You only have to provide 1047 | # replacements, missing definitions are set to their default value. 1048 | 1049 | RTF_STYLESHEET_FILE = 1050 | 1051 | # Set optional variables used in the generation of an rtf document. 1052 | # Syntax is similar to doxygen's config file. 1053 | 1054 | RTF_EXTENSIONS_FILE = 1055 | 1056 | #--------------------------------------------------------------------------- 1057 | # configuration options related to the man page output 1058 | #--------------------------------------------------------------------------- 1059 | 1060 | # If the GENERATE_MAN tag is set to YES (the default) Doxygen will 1061 | # generate man pages 1062 | 1063 | GENERATE_MAN = NO 1064 | 1065 | # The MAN_OUTPUT tag is used to specify where the man pages will be put. 1066 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1067 | # put in front of it. If left blank `man' will be used as the default path. 1068 | 1069 | MAN_OUTPUT = man 1070 | 1071 | # The MAN_EXTENSION tag determines the extension that is added to 1072 | # the generated man pages (default is the subroutine's section .3) 1073 | 1074 | MAN_EXTENSION = .3 1075 | 1076 | # If the MAN_LINKS tag is set to YES and Doxygen generates man output, 1077 | # then it will generate one additional man file for each entity 1078 | # documented in the real man page(s). These additional files 1079 | # only source the real man page, but without them the man command 1080 | # would be unable to find the correct page. The default is NO. 1081 | 1082 | MAN_LINKS = NO 1083 | 1084 | #--------------------------------------------------------------------------- 1085 | # configuration options related to the XML output 1086 | #--------------------------------------------------------------------------- 1087 | 1088 | # If the GENERATE_XML tag is set to YES Doxygen will 1089 | # generate an XML file that captures the structure of 1090 | # the code including all documentation. 1091 | 1092 | GENERATE_XML = NO 1093 | 1094 | # The XML_OUTPUT tag is used to specify where the XML pages will be put. 1095 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 1096 | # put in front of it. If left blank `xml' will be used as the default path. 1097 | 1098 | XML_OUTPUT = xml 1099 | 1100 | # The XML_SCHEMA tag can be used to specify an XML schema, 1101 | # which can be used by a validating XML parser to check the 1102 | # syntax of the XML files. 1103 | 1104 | XML_SCHEMA = 1105 | 1106 | # The XML_DTD tag can be used to specify an XML DTD, 1107 | # which can be used by a validating XML parser to check the 1108 | # syntax of the XML files. 1109 | 1110 | XML_DTD = 1111 | 1112 | # If the XML_PROGRAMLISTING tag is set to YES Doxygen will 1113 | # dump the program listings (including syntax highlighting 1114 | # and cross-referencing information) to the XML output. Note that 1115 | # enabling this will significantly increase the size of the XML output. 1116 | 1117 | XML_PROGRAMLISTING = YES 1118 | 1119 | #--------------------------------------------------------------------------- 1120 | # configuration options for the AutoGen Definitions output 1121 | #--------------------------------------------------------------------------- 1122 | 1123 | # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 1124 | # generate an AutoGen Definitions (see autogen.sf.net) file 1125 | # that captures the structure of the code including all 1126 | # documentation. Note that this feature is still experimental 1127 | # and incomplete at the moment. 1128 | 1129 | GENERATE_AUTOGEN_DEF = NO 1130 | 1131 | #--------------------------------------------------------------------------- 1132 | # configuration options related to the Perl module output 1133 | #--------------------------------------------------------------------------- 1134 | 1135 | # If the GENERATE_PERLMOD tag is set to YES Doxygen will 1136 | # generate a Perl module file that captures the structure of 1137 | # the code including all documentation. Note that this 1138 | # feature is still experimental and incomplete at the 1139 | # moment. 1140 | 1141 | GENERATE_PERLMOD = NO 1142 | 1143 | # If the PERLMOD_LATEX tag is set to YES Doxygen will generate 1144 | # the necessary Makefile rules, Perl scripts and LaTeX code to be able 1145 | # to generate PDF and DVI output from the Perl module output. 1146 | 1147 | PERLMOD_LATEX = NO 1148 | 1149 | # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 1150 | # nicely formatted so it can be parsed by a human reader. This is useful 1151 | # if you want to understand what is going on. On the other hand, if this 1152 | # tag is set to NO the size of the Perl module output will be much smaller 1153 | # and Perl will parse it just the same. 1154 | 1155 | PERLMOD_PRETTY = YES 1156 | 1157 | # The names of the make variables in the generated doxyrules.make file 1158 | # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 1159 | # This is useful so different doxyrules.make files included by the same 1160 | # Makefile don't overwrite each other's variables. 1161 | 1162 | PERLMOD_MAKEVAR_PREFIX = 1163 | 1164 | #--------------------------------------------------------------------------- 1165 | # Configuration options related to the preprocessor 1166 | #--------------------------------------------------------------------------- 1167 | 1168 | # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 1169 | # evaluate all C-preprocessor directives found in the sources and include 1170 | # files. 1171 | 1172 | ENABLE_PREPROCESSING = YES 1173 | 1174 | # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 1175 | # names in the source code. If set to NO (the default) only conditional 1176 | # compilation will be performed. Macro expansion can be done in a controlled 1177 | # way by setting EXPAND_ONLY_PREDEF to YES. 1178 | 1179 | MACRO_EXPANSION = YES 1180 | 1181 | # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 1182 | # then the macro expansion is limited to the macros specified with the 1183 | # PREDEFINED and EXPAND_AS_DEFINED tags. 1184 | 1185 | EXPAND_ONLY_PREDEF = NO 1186 | 1187 | # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 1188 | # in the INCLUDE_PATH (see below) will be search if a #include is found. 1189 | 1190 | SEARCH_INCLUDES = YES 1191 | 1192 | # The INCLUDE_PATH tag can be used to specify one or more directories that 1193 | # contain include files that are not input files but should be processed by 1194 | # the preprocessor. 1195 | 1196 | INCLUDE_PATH = 1197 | 1198 | # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 1199 | # patterns (like *.h and *.hpp) to filter out the header-files in the 1200 | # directories. If left blank, the patterns specified with FILE_PATTERNS will 1201 | # be used. 1202 | 1203 | INCLUDE_FILE_PATTERNS = 1204 | 1205 | # The PREDEFINED tag can be used to specify one or more macro names that 1206 | # are defined before the preprocessor is started (similar to the -D option of 1207 | # gcc). The argument of the tag is a list of macros of the form: name 1208 | # or name=definition (no spaces). If the definition and the = are 1209 | # omitted =1 is assumed. To prevent a macro definition from being 1210 | # undefined via #undef or recursively expanded use the := operator 1211 | # instead of the = operator. 1212 | 1213 | PREDEFINED = 1214 | 1215 | # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 1216 | # this tag can be used to specify a list of macro names that should be expanded. 1217 | # The macro definition that is found in the sources will be used. 1218 | # Use the PREDEFINED tag if you want to use a different macro definition. 1219 | 1220 | EXPAND_AS_DEFINED = 1221 | 1222 | # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 1223 | # doxygen's preprocessor will remove all function-like macros that are alone 1224 | # on a line, have an all uppercase name, and do not end with a semicolon. Such 1225 | # function macros are typically used for boiler-plate code, and will confuse 1226 | # the parser if not removed. 1227 | 1228 | SKIP_FUNCTION_MACROS = NO 1229 | 1230 | #--------------------------------------------------------------------------- 1231 | # Configuration::additions related to external references 1232 | #--------------------------------------------------------------------------- 1233 | 1234 | # The TAGFILES option can be used to specify one or more tagfiles. 1235 | # Optionally an initial location of the external documentation 1236 | # can be added for each tagfile. The format of a tag file without 1237 | # this location is as follows: 1238 | # TAGFILES = file1 file2 ... 1239 | # Adding location for the tag files is done as follows: 1240 | # TAGFILES = file1=loc1 "file2 = loc2" ... 1241 | # where "loc1" and "loc2" can be relative or absolute paths or 1242 | # URLs. If a location is present for each tag, the installdox tool 1243 | # does not have to be run to correct the links. 1244 | # Note that each tag file must have a unique name 1245 | # (where the name does NOT include the path) 1246 | # If a tag file is not located in the directory in which doxygen 1247 | # is run, you must also specify the path to the tagfile here. 1248 | 1249 | TAGFILES = 1250 | 1251 | # When a file name is specified after GENERATE_TAGFILE, doxygen will create 1252 | # a tag file that is based on the input files it reads. 1253 | 1254 | GENERATE_TAGFILE = 1255 | 1256 | # If the ALLEXTERNALS tag is set to YES all external classes will be listed 1257 | # in the class index. If set to NO only the inherited external classes 1258 | # will be listed. 1259 | 1260 | ALLEXTERNALS = NO 1261 | 1262 | # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 1263 | # in the modules index. If set to NO, only the current project's groups will 1264 | # be listed. 1265 | 1266 | EXTERNAL_GROUPS = YES 1267 | 1268 | # The PERL_PATH should be the absolute path and name of the perl script 1269 | # interpreter (i.e. the result of `which perl'). 1270 | 1271 | PERL_PATH = /usr/bin/perl 1272 | 1273 | #--------------------------------------------------------------------------- 1274 | # Configuration options related to the dot tool 1275 | #--------------------------------------------------------------------------- 1276 | 1277 | # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 1278 | # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 1279 | # or super classes. Setting the tag to NO turns the diagrams off. Note that 1280 | # this option is superseded by the HAVE_DOT option below. This is only a 1281 | # fallback. It is recommended to install and use dot, since it yields more 1282 | # powerful graphs. 1283 | 1284 | CLASS_DIAGRAMS = YES 1285 | 1286 | # You can define message sequence charts within doxygen comments using the \msc 1287 | # command. Doxygen will then run the mscgen tool (see 1288 | # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 1289 | # documentation. The MSCGEN_PATH tag allows you to specify the directory where 1290 | # the mscgen tool resides. If left empty the tool is assumed to be found in the 1291 | # default search path. 1292 | 1293 | MSCGEN_PATH = 1294 | 1295 | # If set to YES, the inheritance and collaboration graphs will hide 1296 | # inheritance and usage relations if the target is undocumented 1297 | # or is not a class. 1298 | 1299 | HIDE_UNDOC_RELATIONS = NO 1300 | 1301 | # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 1302 | # available from the path. This tool is part of Graphviz, a graph visualization 1303 | # toolkit from AT&T and Lucent Bell Labs. The other options in this section 1304 | # have no effect if this option is set to NO (the default) 1305 | 1306 | HAVE_DOT = YES 1307 | 1308 | # By default doxygen will write a font called FreeSans.ttf to the output 1309 | # directory and reference it in all dot files that doxygen generates. This 1310 | # font does not include all possible unicode characters however, so when you need 1311 | # these (or just want a differently looking font) you can specify the font name 1312 | # using DOT_FONTNAME. You need need to make sure dot is able to find the font, 1313 | # which can be done by putting it in a standard location or by setting the 1314 | # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 1315 | # containing the font. 1316 | 1317 | DOT_FONTNAME = FreeSans 1318 | 1319 | # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 1320 | # The default size is 10pt. 1321 | 1322 | DOT_FONTSIZE = 10 1323 | 1324 | # By default doxygen will tell dot to use the output directory to look for the 1325 | # FreeSans.ttf font (which doxygen will put there itself). If you specify a 1326 | # different font using DOT_FONTNAME you can set the path where dot 1327 | # can find it using this tag. 1328 | 1329 | DOT_FONTPATH = 1330 | 1331 | # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 1332 | # will generate a graph for each documented class showing the direct and 1333 | # indirect inheritance relations. Setting this tag to YES will force the 1334 | # the CLASS_DIAGRAMS tag to NO. 1335 | 1336 | CLASS_GRAPH = YES 1337 | 1338 | # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 1339 | # will generate a graph for each documented class showing the direct and 1340 | # indirect implementation dependencies (inheritance, containment, and 1341 | # class references variables) of the class with other documented classes. 1342 | 1343 | COLLABORATION_GRAPH = YES 1344 | 1345 | # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 1346 | # will generate a graph for groups, showing the direct groups dependencies 1347 | 1348 | GROUP_GRAPHS = NO 1349 | 1350 | # If the UML_LOOK tag is set to YES doxygen will generate inheritance and 1351 | # collaboration diagrams in a style similar to the OMG's Unified Modeling 1352 | # Language. 1353 | 1354 | UML_LOOK = NO 1355 | 1356 | # If set to YES, the inheritance and collaboration graphs will show the 1357 | # relations between templates and their instances. 1358 | 1359 | TEMPLATE_RELATIONS = NO 1360 | 1361 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 1362 | # tags are set to YES then doxygen will generate a graph for each documented 1363 | # file showing the direct and indirect include dependencies of the file with 1364 | # other documented files. 1365 | 1366 | INCLUDE_GRAPH = YES 1367 | 1368 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 1369 | # HAVE_DOT tags are set to YES then doxygen will generate a graph for each 1370 | # documented header file showing the documented files that directly or 1371 | # indirectly include this file. 1372 | 1373 | INCLUDED_BY_GRAPH = YES 1374 | 1375 | # If the CALL_GRAPH and HAVE_DOT options are set to YES then 1376 | # doxygen will generate a call dependency graph for every global function 1377 | # or class method. Note that enabling this option will significantly increase 1378 | # the time of a run. So in most cases it will be better to enable call graphs 1379 | # for selected functions only using the \callgraph command. 1380 | 1381 | CALL_GRAPH = NO 1382 | 1383 | # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 1384 | # doxygen will generate a caller dependency graph for every global function 1385 | # or class method. Note that enabling this option will significantly increase 1386 | # the time of a run. So in most cases it will be better to enable caller 1387 | # graphs for selected functions only using the \callergraph command. 1388 | 1389 | CALLER_GRAPH = NO 1390 | 1391 | # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 1392 | # will graphical hierarchy of all classes instead of a textual one. 1393 | 1394 | GRAPHICAL_HIERARCHY = YES 1395 | 1396 | # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 1397 | # then doxygen will show the dependencies a directory has on other directories 1398 | # in a graphical way. The dependency relations are determined by the #include 1399 | # relations between the files in the directories. 1400 | 1401 | DIRECTORY_GRAPH = YES 1402 | 1403 | # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 1404 | # generated by dot. Possible values are png, jpg, or gif 1405 | # If left blank png will be used. 1406 | 1407 | DOT_IMAGE_FORMAT = png 1408 | 1409 | # The tag DOT_PATH can be used to specify the path where the dot tool can be 1410 | # found. If left blank, it is assumed the dot tool can be found in the path. 1411 | 1412 | DOT_PATH = 1413 | 1414 | # The DOTFILE_DIRS tag can be used to specify one or more directories that 1415 | # contain dot files that are included in the documentation (see the 1416 | # \dotfile command). 1417 | 1418 | DOTFILE_DIRS = 1419 | 1420 | # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 1421 | # nodes that will be shown in the graph. If the number of nodes in a graph 1422 | # becomes larger than this value, doxygen will truncate the graph, which is 1423 | # visualized by representing a node as a red box. Note that doxygen if the 1424 | # number of direct children of the root node in a graph is already larger than 1425 | # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 1426 | # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. 1427 | 1428 | DOT_GRAPH_MAX_NODES = 50 1429 | 1430 | # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 1431 | # graphs generated by dot. A depth value of 3 means that only nodes reachable 1432 | # from the root by following a path via at most 3 edges will be shown. Nodes 1433 | # that lay further from the root node will be omitted. Note that setting this 1434 | # option to 1 or 2 may greatly reduce the computation time needed for large 1435 | # code bases. Also note that the size of a graph can be further restricted by 1436 | # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. 1437 | 1438 | MAX_DOT_GRAPH_DEPTH = 0 1439 | 1440 | # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 1441 | # background. This is disabled by default, because dot on Windows does not 1442 | # seem to support this out of the box. Warning: Depending on the platform used, 1443 | # enabling this option may lead to badly anti-aliased labels on the edges of 1444 | # a graph (i.e. they become hard to read). 1445 | 1446 | DOT_TRANSPARENT = NO 1447 | 1448 | # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 1449 | # files in one run (i.e. multiple -o and -T options on the command line). This 1450 | # makes dot run faster, but since only newer versions of dot (>1.8.10) 1451 | # support this, this feature is disabled by default. 1452 | 1453 | DOT_MULTI_TARGETS = YES 1454 | 1455 | # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 1456 | # generate a legend page explaining the meaning of the various boxes and 1457 | # arrows in the dot generated graphs. 1458 | 1459 | GENERATE_LEGEND = YES 1460 | 1461 | # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 1462 | # remove the intermediate dot files that are used to generate 1463 | # the various graphs. 1464 | 1465 | DOT_CLEANUP = YES 1466 | 1467 | #--------------------------------------------------------------------------- 1468 | # Configuration::additions related to the search engine 1469 | #--------------------------------------------------------------------------- 1470 | 1471 | # The SEARCHENGINE tag specifies whether or not a search engine should be 1472 | # used. If set to NO the values of all tags below this one will be ignored. 1473 | 1474 | SEARCHENGINE = NO 1475 | -------------------------------------------------------------------------------- /misc/footer.html: -------------------------------------------------------------------------------- 1 |
2 | Generated on $date for $projectname by Doxygen$doxygenversion
3 | 4 | 5 | -------------------------------------------------------------------------------- /misc/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | $title 4 | 5 | 6 | 7 |
8 | Main Page   9 | Namespaces   10 | Classes ( Hierarchy )   11 | Functions & Members   12 |
13 | -------------------------------------------------------------------------------- /misc/license.txt: -------------------------------------------------------------------------------- 1 | moFileReader - A simple .mo-File-Reader 2 | Copyright (C) 2009 Domenico Gentner (scorcher24@gmail.com) 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | 3. The names of its contributors may not be used to endorse or promote 16 | products derived from this software without specific prior written 17 | permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /src/mo.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * moFileReader - A simple .mo-File-Reader 3 | * Copyright (C) 2009 Domenico Gentner (scorcher24@gmail.com) 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions 8 | * are met: 9 | * 10 | * 1. Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * 13 | * 2. Redistributions in binary form must reproduce the above copyright 14 | * notice, this list of conditions and the following disclaimer in the 15 | * documentation and/or other materials provided with the distribution. 16 | * 17 | * 3. The names of its contributors may not be used to endorse or promote 18 | * products derived from this software without specific prior written 19 | * permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | */ 33 | #include "../include/moFileReader.h" 34 | #include 35 | #include 36 | 37 | #if defined(_MSC_VER) && defined(_DEBUG) 38 | # include 39 | #endif /* _MSC_VER */ 40 | 41 | using namespace moFileLib; 42 | 43 | void Usage(const std::string appname) 44 | { 45 | std::cout << "Usage: " << std::endl; 46 | std::cout << appname << "