NREB_Config.hpp
Go to the documentation of this file.
1 
10  #pragma once
11 
12  #include <string>
13  #include <vector>
14  #include <fstream>
15  #include <iostream>
16  #include <sstream>
17 
22  namespace NREB {
27  namespace Config {
28 
33  class Config {
34  private : // Fields
35  std::string compiler;
36  std::string linker;
37  std::string archiver;
38  std::string cFlags;
39  std::string ldFlags;
40  std::string out;
41  std::vector<std::string> includes;
42  std::vector<std::string> libs;
43  std::vector<std::string> libDirs;
44  std::vector<std::string> excluded;
45 
46  public : // Methods
47  //## Constructor ##//
51  Config() = delete;
52 
53  //## Copy Constructor ##//
58  Config(Config const& c) = delete;
59 
60  //## Move Constructor ##//
65  Config(Config && c) = delete;
66 
67  //## Deconstructor ##//
71  ~Config() = default;
72 
73  //## Getter ##//
77  std::string const& getCompiler() const;
81  std::string const& getLinker() const;
85  std::string const& getArchiver() const;
89  std::string const& getCFlags() const;
93  std::string const& getLdFlags() const;
97  std::string const& getOut() const;
101  std::vector<std::string> const& getIncludes() const;
105  std::vector<std::string> const& getLibs() const;
109  std::vector<std::string> const& getLibDirs() const;
113  std::vector<std::string> const& getExcluded() const;
114 
115  //## Assignment Operator ##//
121  Config& operator =(Config const& c) = delete;
127  Config& operator =(Config && c) = delete;
128 
129  private : // Methods
134  Config(std::string const& configPath);
142  void removeTags(std::string& includesLine, std::string& libsLine, std::string& libDirsLine, std::string& excludedLine);
143 
144  public : // Static
149  static void setConfigPath(std::string const& configPath);
153  static Config const& getConfig();
154 
155  private : // Static
156  static std::string configFilePath;
157 
158  public : // Static
159  static const std::string TAG_COMPILER;
160  static const std::string TAG_LINKER;
161  static const std::string TAG_ARCHIVER;
162  static const std::string TAG_CFLAGS;
163  static const std::string TAG_LDFLAGS;
164  static const std::string TAG_INC;
165  static const std::string TAG_LIB;
166  static const std::string TAG_LIBDIR;
167  static const std::string TAG_OUT;
168  static const std::string TAG_EXCLUDED;
169  };
170  }
171  }
std::vector< std::string > const & getLibDirs() const
Definition: NREB_Config.cpp:112
std::string const & getLdFlags() const
Definition: NREB_Config.cpp:96
std::string const & getCompiler() const
Definition: NREB_Config.cpp:80
std::string const & getOut() const
Definition: NREB_Config.cpp:100
std::vector< std::string > const & getIncludes() const
Definition: NREB_Config.cpp:104
std::vector< std::string > const & getLibs() const
Definition: NREB_Config.cpp:108
Builder&#39;s Configuration module.
Config & operator=(Config const &c)=delete
static void setConfigPath(std::string const &configPath)
Definition: NREB_Config.cpp:120
std::string const & getLinker() const
Definition: NREB_Config.cpp:84
The NRE-Builder global namespace.
Definition: NREB_Config.cpp:12
std::vector< std::string > const & getExcluded() const
Definition: NREB_Config.cpp:116
std::string const & getCFlags() const
Definition: NREB_Config.cpp:92
std::string const & getArchiver() const
Definition: NREB_Config.cpp:88
static Config const & getConfig()
Definition: NREB_Config.cpp:124