yast2-core
ModulesConf.h
Go to the documentation of this file.
1 /* ModulesConf.h -*- c++ -*-
2  *
3  * Classes for reading the modules.conf configuration file.
4  *
5  * Author: Michal Svec <msvec@suse.cz>
6  * Daniel Vesely <dan@suse.cz>
7  *
8  * $Id$
9  */
10 
11 #ifndef ModulesConf_h
12 #define ModulesConf_h
13 
14 #include <string>
15 #include <list>
16 #include <map>
17 
18 using std::string;
19 using std::list;
20 using std::map;
21 
22 #define MAX_LINE_LENGTH 256
23 #define WHITESPACE " \t\n"
24 
25 #define MAGIC_ENTRY "Ctrl and Alt keys stuck -- press Del to continue."
26 
36 class ModuleEntry {
37 
38 public:
39 
40  enum Mode { INIT, SET, REINIT };
41  typedef map <const string, string> EntryArg;
42  typedef string EntryCom;
43 
47  ModuleEntry() : comment(), argument(), dirtyflag(false) {}
48 
52  ~ModuleEntry();
53 
58  EntryCom getComment() const;
63  EntryArg getArgument() const { return argument; }
70  bool setComment(const EntryCom &com, Mode m) { comment = com; return true; }
77  bool setArgument(const string arg, Mode m);
85  bool setOption(const string option, const string value, Mode m);
92  bool setOptions(const EntryArg &arg, Mode m);
93 
102  bool Set(Mode m);
103 
104 private:
107  bool dirtyflag;
108 
109 };
110 
120 class ModulesConf {
121 
122 public:
123  typedef list<string> ModulesConfIndex;
124  typedef map<const string, ModuleEntry> ModuleEntryMap;
125  typedef map<const string, ModuleEntryMap> ModulesConfMap;
126 
131  ModulesConf(const string &fname);
135  ~ModulesConf();
136 
147  ModuleEntryMap getModules(const string directive);
153  ModuleEntry::EntryArg getOptions(const string module);
159  string getOptionsAsString (const string module);
166  string getOption(const string module, const string option);
173  string getArgument(const string directive, const string module);
180  string getComment(const string directive, const string module);
181 
189  bool setOption(const string module, const string option, const string value, ModuleEntry::Mode m);
197  bool setOptions(const string module, const ModuleEntry::EntryArg arg, ModuleEntry::Mode m);
206  bool setArgument(const string directive, const string module, const string arg, ModuleEntry::Mode m);
215  bool setComment(const string directive, const string module, const string arg, ModuleEntry::Mode m);
216 
224  bool removeEntry(const string directive, const string module);
225 
231  bool writeFile(const string fname = "");
232 
233 private:
234  string file_name;
237 
238  bool modified; // was the stucture modified from ycp
239 
240  struct ModuleLine {
241  string directive;
242  string module;
243  string argument;
245  string comment;
246  };
247 
251  typedef time_t TimeStamp;
257  TimeStamp getTimeStamp(const string &fname);
258 
260 
266  bool isDirective(const string directive) const;
273  bool isModule(const string directive, const string module);
280  bool isOption(const string module, const string option);
281 
286  bool updateIfModified();
291  bool updateTimeStamp();
298  bool updateIndex(const string directive, const string module);
305  bool parseLine(const string &line, ModuleLine &l) const;
313  bool parseFile(const string &file_name, ModuleEntry::Mode m, const bool with_comment = true);
314 
315 };
316 
317 
318 #endif /* ModulesConf_h */
bool setOption(const string module, const string option, const string value, ModuleEntry::Mode m)
Definition: ModulesConf.cc:218
bool setOptions(const string module, const ModuleEntry::EntryArg arg, ModuleEntry::Mode m)
Definition: ModulesConf.cc:229
TimeStamp time_stamp
Definition: ModulesConf.h:259
string argument
Definition: ModulesConf.h:243
string module
Definition: ModulesConf.h:242
bool parseLine(const string &line, ModuleLine &l) const
Definition: ModulesConf.cc:311
bool setComment(const string directive, const string module, const string arg, ModuleEntry::Mode m)
Definition: ModulesConf.cc:249
~ModulesConf()
Definition: ModulesConf.cc:101
bool setArgument(const string directive, const string module, const string arg, ModuleEntry::Mode m)
Definition: ModulesConf.cc:238
bool Set(Mode m)
Definition: ModulesConf.cc:40
Mode
Definition: ModulesConf.h:40
time_t TimeStamp
Definition: ModulesConf.h:251
One entry in the modules.conf file.
Definition: ModulesConf.h:36
string file_name
Definition: ModulesConf.h:234
Definition: ModulesConf.h:240
bool updateIndex(const string directive, const string module)
Definition: ModulesConf.cc:259
Definition: ModulesConf.h:40
bool writeFile(const string fname="")
Definition: ModulesConf.cc:475
bool setOptions(const EntryArg &arg, Mode m)
Definition: ModulesConf.cc:71
Definition: ModulesConf.h:40
EntryCom comment
Definition: ModulesConf.h:105
EntryArg argument
Definition: ModulesConf.h:106
ModuleEntry::EntryArg getOptions(const string module)
Definition: ModulesConf.cc:166
bool parseFile(const string &file_name, ModuleEntry::Mode m, const bool with_comment=true)
Definition: ModulesConf.cc:371
string EntryCom
Definition: ModulesConf.h:42
ModulesConfMap getDirectives()
Definition: ModulesConf.cc:129
bool isOption(const string module, const string option)
Definition: ModulesConf.cc:119
EntryArg getArgument() const
Definition: ModulesConf.h:63
TimeStamp getTimeStamp(const string &fname)
Definition: ModulesConf.cc:279
map< const string, ModuleEntry > ModuleEntryMap
Definition: ModulesConf.h:124
bool updateIfModified()
Definition: ModulesConf.cc:270
list< string > ModulesConfIndex
Definition: ModulesConf.h:123
string directive
Definition: ModulesConf.h:241
bool modified
Definition: ModulesConf.h:238
string getOptionsAsString(const string module)
Definition: ModulesConf.cc:200
bool setOption(const string option, const string value, Mode m)
Definition: ModulesConf.cc:62
ModuleEntry()
Definition: ModulesConf.h:47
ModuleEntryMap getModules(const string directive)
Definition: ModulesConf.cc:134
bool updateTimeStamp()
Definition: ModulesConf.cc:265
EntryCom getComment() const
Definition: ModulesConf.cc:81
ModulesConfIndex modules_conf_index
Definition: ModulesConf.h:236
Definition: ModulesConf.h:40
string getComment(const string directive, const string module)
Definition: ModulesConf.cc:158
string getOption(const string module, const string option)
Definition: ModulesConf.cc:187
The modules.conf file.
Definition: ModulesConf.h:120
map< const string, string > EntryArg
Definition: ModulesConf.h:41
bool setArgument(const string arg, Mode m)
Definition: ModulesConf.cc:54
string getArgument(const string directive, const string module)
Definition: ModulesConf.cc:143
ModulesConf(const string &fname)
Definition: ModulesConf.cc:91
bool setComment(const EntryCom &com, Mode m)
Definition: ModulesConf.h:70
bool removeEntry(const string directive, const string module)
Definition: ModulesConf.cc:457
ModuleEntry::EntryArg options
Definition: ModulesConf.h:244
ModulesConfMap modules_conf_map
Definition: ModulesConf.h:235
bool isModule(const string directive, const string module)
Definition: ModulesConf.cc:114
map< const string, ModuleEntryMap > ModulesConfMap
Definition: ModulesConf.h:125
string comment
Definition: ModulesConf.h:245
bool isDirective(const string directive) const
Definition: ModulesConf.cc:110
bool dirtyflag
Definition: ModulesConf.h:107
~ModuleEntry()
Definition: ModulesConf.cc:34

Generated on a sunny day for yast2-core by doxygen 1.8.5