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
9namespace wibble {
10
11namespace exception {
12class BadOption : public Consistency
13{
14 std::string m_error;
15
16public:
17 BadOption(const std::string& error, const std::string& context = std::string("parsing commandline options")) throw ()
18 : Consistency(context), m_error(error) {}
20
21 virtual const char* type() const throw () { return "BadOption"; }
22 virtual std::string desc() const throw () { return m_error; }
23
24};
25}
26
27namespace commandline {
28
29class ArgList : public std::list<std::string>
30{
31public:
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
52{
53public:
54 virtual ~Managed() {}
55};
56
63{
64 std::set<Managed*> components;
65
66 Managed* addManaged(Managed* o) { components.insert(o); return o; }
67public:
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
Definition core.h:30
iterator & eraseAndAdvance(iterator &i)
Definition core.h:34
static bool isSwitch(const char *str)
Definition core.cpp:36
Definition core.h:52
virtual ~Managed()
Definition core.h:54
Keep track of various wibble::commandline components, and deallocate them at object destruction.
Definition core.h:63
~MemoryManager()
Definition core.h:68
T * add(T *item)
Definition core.h:76
Definition core.h:13
virtual const char * type() const
Get a string tag identifying the exception type.
Definition core.h:21
~BadOption()
Definition core.h:19
BadOption(const std::string &error, const std::string &context=std::string("parsing commandline options"))
Definition core.h:17
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition core.h:22
Exception thrown when some consistency check fails.
Definition exception.h:255
const std::vector< std::string > & context() const
Definition exception.h:166
Definition amorph.h:17
Iterator< typename I::value_type > iterator(I i)
Definition iterator.h:123
Definition amorph.h:30