Logo ROOT  
Reference Guide
FoundationUtils.hxx
Go to the documentation of this file.
1 /// \file FoundationUtils.hxx
2 ///
3 /// \brief The file contains utilities which are foundational and could be used
4 /// across the core component of ROOT.
5 ///
6 ///
7 /// \author Vassil Vassilev <vvasilev@cern.ch>
8 ///
9 /// \date June, 2019
10 ///
11 /*************************************************************************
12  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
13  * All rights reserved. *
14  * *
15  * For the licensing terms see $ROOTSYS/LICENSE. *
16  * For the list of contributors see $ROOTSYS/README/CREDITS. *
17  *************************************************************************/
18 
19 #ifndef ROOT_CORE_FOUNDATION_FOUNDATIONUTILS_HXX
20 #define ROOT_CORE_FOUNDATION_FOUNDATIONUTILS_HXX
21 
22 #include <string>
23 
24 namespace ROOT {
25 namespace FoundationUtils {
26 
27  ///\returns the $PWD.
28  std::string GetCurrentDir();
29 
30  ///\returns the relative path of \c path with respect to \c base.
31  /// For instance, for path being "/a/b/c/d" and base "/a/b", returns "c/d".
32  ///
33  ///\param path - the input path
34  ///
35  ///\param base - the base path to be removed from \c path.
36  ///
37  ///\param isBuildingROOT - if true, it converts module directories such as
38  /// core/base/inc/ to include/
39  std::string MakePathRelative(const std::string &path, const std::string &base,
40  bool isBuildingROOT = false);
41 
42  ///\returns the path separator slash or backslash depending on the platform.
43  inline const std::string& GetPathSeparator() {
44 #ifdef WIN32
45  static const std::string gPathSeparator ("\\");
46 #else
47  static const std::string gPathSeparator ("/");
48 #endif
49  return gPathSeparator;
50  }
51 
52  ///\returns the path separator for the PATH environment variable on the
53  /// platform.
54  inline const char& GetEnvPathSeparator() {
55 #ifdef WIN32
56  static const char gEnvPathSeparator = ';';
57 #else
58  static const char gEnvPathSeparator = ':';
59 #endif
60  return gEnvPathSeparator;
61  }
62 
63  ///\returns the fallback directory in the installation (eg. /usr/local/root/).
64  const std::string& GetFallbackRootSys();
65 
66  ///\returns the rootsys directory in the installation.
67  ///
68  const std::string& GetRootSys();
69 
70  ///\ returns the include directory in the installation.
71  ///
72  const std::string& GetIncludeDir();
73 
74  ///\returns the sysconfig directory in the installation.
75  const std::string& GetEtcDir();
76 
77  } // namespace FoundationUtils
78 } // namespace ROOT
79 
80 #endif // ROOT_CORE_FOUNDATION_FOUNDATIONUTILS_HXX
ROOT::FoundationUtils::GetCurrentDir
std::string GetCurrentDir()
Definition: FoundationUtils.cxx:48
ROOT::FoundationUtils::GetRootSys
const std::string & GetRootSys()
Definition: FoundationUtils.cxx:143
ROOT::FoundationUtils::GetPathSeparator
const std::string & GetPathSeparator()
Return the separator suitable for this platform.
Definition: FoundationUtils.hxx:55
ROOT::FoundationUtils::MakePathRelative
std::string MakePathRelative(const std::string &path, const std::string &base, bool isBuildingROOT=false)
Definition: FoundationUtils.cxx:83
ROOT::FoundationUtils::GetEnvPathSeparator
const char & GetEnvPathSeparator()
Definition: FoundationUtils.hxx:66
ROOT::FoundationUtils::GetEtcDir
const std::string & GetEtcDir()
Definition: FoundationUtils.cxx:180
ROOT::FoundationUtils::GetFallbackRootSys
const std::string & GetFallbackRootSys()
Definition: FoundationUtils.cxx:112
ROOT
VSD Structures.
Definition: StringConv.hxx:21
gPathSeparator
const std::string gPathSeparator(ROOT::TMetaUtils::GetPathSeparator())
ROOT::FoundationUtils::GetIncludeDir
const std::string & GetIncludeDir()
\ returns the include directory in the installation.
Definition: FoundationUtils.cxx:165