Newer
Older
// ************************************************************************** //
//
// 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.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
};
}
#endif