The K Library Code
Status: Alpha
Brought to you by:
dragonfireck
File | Date | Author | Commit |
---|---|---|---|
Common | 2012-02-12 | dragonfireck | [r36] 64-bit compile and always generate debug info. |
Factory | 2012-02-12 | dragonfireck | [r36] 64-bit compile and always generate debug info. |
Language | 2012-04-13 | dragonfireck | [r37] Fixed some project settings. |
XML | 2012-04-13 | dragonfireck | [r37] Fixed some project settings. |
Copying.Lesser.txt | 2008-05-21 | dragonfireck | [r7] Added copyright and license information in to t... |
Copying.txt | 2008-05-21 | dragonfireck | [r7] Added copyright and license information in to t... |
Naming Convention.txt | 2008-09-28 | dragonfireck | [r23] Fixed a number of spelling errors throughout th... |
Readme.txt | 2009-06-12 | dragonfireck | [r32] Added a file opening handler option and a code ... |
kLibrary.sln | 2012-02-12 | dragonfireck | [r36] 64-bit compile and always generate debug info. |
:::::::::::::::::::::::: Copyright 2008 Chris Kaynor :::::::::::::::::::::::: :::::::::::::::::: :: PROGRAM INFO :: :::::::::::::::::: Program Name........: kLibrary Version.............: A0.0.4 License Type........: LGPL OS..................: OS Portable Release Date........: 5/20/2008 Languages...........: English/Language Independent Website.............: http://sourceforge.net/projects/klibary Download URL........: http://sourceforge.net/project/showfiles.php?group_id=228119 Source URL..........: http://klibary.svn.sourceforge.net/viewvc/klibary/ ::::::::::::: :: CONTACT :: ::::::::::::: Author..............: Chris Kaynor Email...............: chris@kaynor.net ::::::::::::::::::::::::::::: :: DESCRIPTION or/and USES :: ::::::::::::::::::::::::::::: An extension of C++ standardized libraries to provide functionality such as factories, language loaders, and other fairly common functions. The code will be designed to be thread-safe and easy-to-use. ::::::::::: :: PARTS :: ::::::::::: Common: Description: The Common folder contains various items used in various other parts of the library, along with any items which do not cleanly fit into a larger category. Usage: Various files have various usage properties. Please see the specific files below for more details. Files: NoCopy.h Includes a class which explicitly declares the copy constructor and assignment operator as private, preventing any derived classes from being copied. Factory: Description: The Factory folder contains various classes used as part of a factory in which a specified item may be loaded multiple times, but each item with the same name will only be in memory once. Usage: Include factory.h itemType should generally be derived from the factory::Item class. Files: factory.h NOTE: This file will automatically include all other files that are part of this section. Contains the declaration for the factory template class. Use the load and unload functions to load and unload items. For advanced usage, see factory.h's information. factory.inl Contains the function definitions and code for the Factory class (as declared in factory.h). factoryItem.h Contains the declaration for the factory::Item class. This is an abstract base class intended to be the base for all classes used as the itemType template parameter for the Factory class. factoryItem.inl Contains the function definitions and code for the factory::Item class (as declared in factoryItem.h). factoryStorage.h Contains the declaration for the factory::_Storage class. This class is intended for internal use by the Factory class. factoryStorage.inl Contains the function definitions and code for the factory::_Storage class (as declared in factoryStorage.h). XML: Description: The XML folder contains files used to load and parse XML. XML may be either passed in as a standard template library string or be loaded directly from a file. NOTICE: This class cannot modify existing XML. It can only read it. Usage: Include xml.h For Microsoft Visual Studio 2005, compile XML.vcproj and include the output lib as a dependency input for the linker. Otherwise, compile all files in the folder as a lib and include that lib as a dependency. Files: xml.h NOTE: This file automatically includes all other header files that are part of this section. Contains the various type definitions and class prototypes required for the other files to function. attribute.h Includes a simple class to hold the name and value of any XML elements found within the file. document.cpp Contains the function definitions and code for the the XMLDocument class (as declared in document.h). document.h Contians the declaration of the XMLDocument class. Use the constructor or open* functions to parse XML, and the get* functions to read the XML. element.cpp Contains the function definitions and code for the XML::Element class (as declared in element.h). element.h Contains the declaration of the XML::Element class which stores element data for any elements found within the XML. Use the get*Child* functions to iterate though the tree, and the get*Attribute* functions to read any attributes contained in the XML element. XML.vcproj A Microsoft Visual Studio 2005 project which complies this section into a lib to be included as a linker dependency Language: Description: The language folder contains files used to load and parse KLanguage files. Usage: Include language.h For Microsoft Visual Studio 2005, compile Language.vcproj and include the output lib as a dependency input for the linker. Otherwise, compile all files in the folder as a lib and include that lib as a dependency. Create an object of the Internationalization class, either applying language list files and a language during initialization or by calling the appendLanguageList and setLanguage functions. To retrieve language-specific text from a set of KLanguage files, use the getValue function. See the description of the KLanguage format for information on how the parameters work. Files: language.h NOTE: This file automatically includes all other header files that are part of this section. Contains the declaration of the Internationalization class. This class contains all required functionality to read in and parse KLanguage files. language.cpp Contains the function definitions for the Internationalization class (as declared in language.h) languageList.h Contains the declaration of the LanguageList class. This class holds information regarding the known languages and how to read the other files which contain the specific codes and their values. languageList.cpp Contains the function definitions for the LanguageList class.(as declared in languageList.h). languageSet.h Includes a simple class to hold the name and extension codes for the various languages loaded from KLanguage list files. :::::::::::::::: :: WHAT'S NEW :: :::::::::::::::: Changes from version A0.0.4: The factory now has an additional template parameter which allows for changing the storage type. Old code should still work, however this will allow developers to use a subclassed storage to make the factory into an abstract factory. Changes from version A0.0.3: Language: It is now possible to get values for languages other than the current language. It is now possible to preload all currently loaded sets for the current language. It is now possible to set the default language to be used if a language is accessed which is not known, rather than always using the the "" language (*.int). Documentation has been added for the language section, along with documentation for the KLanguage file structure. Changing the language after already having sets loaded will no longer cause a run-time error when a previously loaded set is accessed. The preload language feature will now preload the correct language rather than the current language. Changes from version A0.0.2: Added the Language section. See above and Language/language.h for additional details. Some additional Visual Studio projects have been added to the library to improve ease-of-use. Common: NoCopy.h has been renamed to noCopy.h. Changes from version A0.0.1: Added the XML section. See above and XML/xml.h for additional details. Factory: Added the getBegin() and getEnd() functions to give additional access into the storage hash table. :::::::::::::::: :: CHANGE LOG :: :::::::::::::::: A0.0.6: The language library now has the option of having an open file handler which can redirect the file paths used to load the language files. The language library now has the option of having a code not found handler which can process cases where a code is requested by is not found in the language files. A0.0.5: The factory now has an additional template parameter which allows for changing the storage type. Old code should still work, however this will allow developers to use a subclassed storage to make the factory into an abstract factory. A0.0.4: It is now possible to get values for languages other than the current language. It is now possible to preload all currently loaded sets for the current language. It is now possible to set the default language to be used if a language is accessed which is not known, rather than always using the the "" language (*.int). Documentation has been added for the language section, along with documentation for the KLanguage file structure. Changing the language after already having sets loaded will no longer cause a run-time error when a previously loaded set is accessed. The preload language feature will now preload the correct language rather than the current language. A few minor warnings have been fixed. A0.0.3 Renamed all *_code.h files to *.inl files. Renamed NoCopy.h to noCopy.h to better comply with the naming conventions. Renamed files using an underscore in their name to be in lower camel case. Added the Language section which is designed to implement a multilingual solution which loads data from external files and should be scalable to a very large number of languages. A0.0.2 Added the XML section which reads and parses XML. Added the ability to directly access the hash table of the factory. A0.0.1 Added additional documentation to all files. Added the ability to rename items already loaded into the factory. See the renameItem function of the Factory class. Added proper documentation of the license agreement (LGPL), along with copyright statements. Added a read-me file. Fixed a spelling error thoughout the files where library was spelt as "libary". All instances of this mistake have been fixed. Any programs using the old spelling will now need to be updated. A0.0.0 Initial Release Added the factory section. See Factory\factory.h for details. Added the NoCopy class to the Common section. See Common\NoCopy.h for details. ::::::::::::: :: LICENSE :: ::::::::::::: This file is part of kLibrary. kLibrary is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or(at your option) any later version. kLibrary is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License. :::::::::::::::::::::::: Copyright 2008 Chris Kaynor ::::::::::::::::::::::::