/*========================================================================= Program: bbtk Module: $RCSfile: bbtkConfigurationFile.h,v $ Language: C++ Date: $Date: 2008/01/22 15:02:00 $ Version: $Revision: 1.1.1.1 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ /** *\file *\brief Class bbtk::ConfigurationFile */ /** *\class bbtk::ConfigurationFile *\brief DDD * */ #ifndef __bbtkConfigurationFile_h__ #define __bbtkConfigurationFile_h__ #include "bbtkSystem.h" #include #ifdef WIN32 #define _CRT_SECURE_NO_DEPRECATE #endif #include #include "xmlParser.h" #include #include #include #include namespace bbtk { //========================================================================== class BBTK_EXPORT ConfigurationException { public: ConfigurationException(const std::string& message) : mMessage(message) {} std::string mMessage; }; //========================================================================== class BBTK_EXPORT ConfigurationFile { public: static ConfigurationFile const &GetInstance() { static ConfigurationFile f; return f; } ~ConfigurationFile(); private: ConfigurationFile(); void InstallPath (); public: inline const std::string& Get_description() const { return mDescription;} inline const std::string& Get_url() const { return mUrl;} inline const std::string& Get_data_path() const { return mData_path;} inline const std::string& Get_file_separator() const { return mFile_separator;} inline const std::string& Get_install_path() const { return mInstall_path;} inline const std::vector& Get_bbs_paths() const { return mBbs_paths;} inline const std::vector& Get_package_paths() const { return mPackage_paths;} inline const std::string& Get_config_xml_full_path() const { return mConfig_xml_full_path;} inline const std::string& Get_default_doc_tmp() const { return mDefault_doc_tmp;} private: void Read(const std::string& fileName); void GetTextOrClear(const XMLNode& node, std::string& var); char *GetExecutablePath(); bool FileExists(std::string strFilename); void CreateConfigXML( char *rootDirectory ); // Attributes : private : std::string mDescription; /// Where is the file bbtk_config.xml std::string mConfig_xml_full_path; /// Where the doc is std::string mUrl; std::string mInstall_path; std::string mData_path; /// / or \, depending on the OS std::string mFile_separator; /// Scripts std::vector mBbs_paths; /// Package dlls std::vector mPackage_paths; /// If Packages link against extern dlls std::vector mExt_dll_paths; /// Default directory for generating Graph std::string mDefault_doc_tmp; }; }// namespace bbtk #endif