wibble  1.1
core.h
Go to the documentation of this file.
1 #ifndef WIBBLE_COMMANDLINE_CORE_H
2 #define WIBBLE_COMMANDLINE_CORE_H
3 
4 #include <wibble/exception.h>
5 #include <string>
6 #include <list>
7 #include <set>
8 
9 namespace wibble {
10 
11 namespace exception {
12 class BadOption : public Consistency
13 {
14  std::string m_error;
15 
16 public:
17  BadOption(const std::string& error, const std::string& context = std::string("parsing commandline options")) throw ()
18  : Consistency(context), m_error(error) {}
19  ~BadOption() throw () {}
20 
21  virtual const char* type() const throw () { return "BadOption"; }
22  virtual std::string desc() const throw () { return m_error; }
23 
24 };
25 }
26 
27 namespace commandline {
28 
29 class ArgList : public std::list<std::string>
30 {
31 public:
32  // Remove the item pointed by the iterator, and advance the iterator to the
33  // next item. Returns i itself.
35  {
36  if (i == end())
37  return i;
38  iterator next = i;
39  ++next;
40  erase(i);
41  i = next;
42  return i;
43  }
44 
45  static bool isSwitch(const char* str);
46  static bool isSwitch(const std::string& str);
47  static bool isSwitch(const const_iterator& iter);
48  static bool isSwitch(const iterator& iter);
49 };
50 
51 class Managed
52 {
53 public:
54  virtual ~Managed() {}
55 };
56 
63 {
64  std::set<Managed*> components;
65 
66  Managed* addManaged(Managed* o) { components.insert(o); return o; }
67 public:
69  {
70  for (std::set<Managed*>::const_iterator i = components.begin();
71  i != components.end(); ++i)
72  delete *i;
73  }
74 
75  template<typename T>
76  T* add(T* item) { addManaged(item); return item; }
77 };
78 
79 }
80 
81 }
82 
83 // vim:set ts=4 sw=4:
84 #endif
T * add(T *item)
Definition: core.h:76
Iterator< typename I::value_type > iterator(I i)
Definition: iterator.h:123
~MemoryManager()
Definition: core.h:68
~BadOption()
Definition: core.h:19
Exception thrown when some consistency check fails.
Definition: exception.h:254
Definition: core.h:12
BadOption(const std::string &error, const std::string &context=std::string("parsing commandline options"))
Definition: core.h:17
virtual const char * type() const
Get a string tag identifying the exception type.
Definition: core.h:21
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition: core.h:22
virtual ~Managed()
Definition: core.h:54
const std::vector< std::string > & context() const
Definition: exception.h:166
Keep track of various wibble::commandline components, and deallocate them at object destruction...
Definition: core.h:62
Definition: core.h:29
iterator & eraseAndAdvance(iterator &i)
Definition: core.h:34
Definition: amorph.h:17
Definition: core.h:51
ListIterator< List > end(List)
Definition: list.h:425