// ************************************************************************** // // // BornAgain: simulate and fit scattering at grazing incidence // //! @file Tools/inc/FileSystem.h //! @brief Defines class FileSystem //! //! @homepage http://apps.jcns.fz-juelich.de/BornAgain //! @license GNU General Public License v3 or higher (see COPYING) //! @copyright Forschungszentrum Jülich GmbH 2013 //! @authors Scientific Computing Group at MLZ Garching //! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke // // ************************************************************************** // #ifndef FILESYSTEM_H #define FILESYSTEM_H #include "WinDllMacros.h" #include <string> //! Utilities to deal with file system. namespace Utils { //! @class FileSystem //! @ingroup tools_internal //! @brief Class collecting utilities to work with file system. class BA_CORE_API_ FileSystem { public: //! Returns path to the current (working) directory static std::string GetWorkingPath(); //! Returns path to BornAgain home directory static std::string GetHomePath(); //! Sets relative path, which is the path from working directory to executable module. The value is known only from argv[0] and should be set from outside static void SetArgvPath(const std::string& argv0); static std::string GetArgvPath(); //! Returns file extension static std::string GetFileExtension(const std::string& name); //! Returns true if name contains *.gz extension static bool isGZipped(const std::string& name); //! Returns file extension after stripping '.gz' if any static std::string GetFileMainExtension(const std::string& name); //! returns path to executable static std::string GetPathToExecutable(const std::string& argv0=GetArgvPath()); //! returns absolute path to data taking into acount location of executable static std::string GetPathToData(const std::string& rel_data_path, const std::string& argv0=GetArgvPath()); //! return path to the code source directory static std::string GetSourceDir(); //! return path to the install directory static std::string GetInstallDir(); //! return path to the reference data static std::string GetReferenceDataDir(); static void SetReferenceDataDir(const std::string &path) {m_reference_data_dir = path; } private: static std::string m_argv0_path; //!< it's value of argv[0], i.e. the path from working directory to executable module including the name of executable module static std::string m_reference_data_dir; }; } #endif