From 75068e7d753cf6cbe45a4bf294000dca9bd41d8b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 4 Sep 2006 21:06:23 +0000 Subject: * Use a proper namespace. * Optimise header file usage a bit. * Compile the parser as C++. --- src/libutil/types.hh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/libutil/types.hh (limited to 'src/libutil/types.hh') diff --git a/src/libutil/types.hh b/src/libutil/types.hh new file mode 100644 index 000000000000..1de378961e46 --- /dev/null +++ b/src/libutil/types.hh @@ -0,0 +1,73 @@ +#ifndef __TYPES_H +#define __TYPES_H + +#include +#include +#include + +#include + + +namespace nix { + + +/* Inherit some names from other namespaces for convenience. */ +using std::string; +using std::list; +using std::set; +using std::vector; +using boost::format; + + +class Error : public std::exception +{ +protected: + string err; +public: + Error(const format & f); + ~Error() throw () { }; + const char * what() const throw () { return err.c_str(); } + const string & msg() const throw () { return err; } + Error & addPrefix(const format & f); +}; + +class SysError : public Error +{ +public: + SysError(const format & f); +}; + +#define MakeError(newClass, superClass) \ + class newClass : public superClass \ + { \ + public: \ + newClass(const format & f) : superClass(f) { }; \ + }; + +MakeError(UsageError, Error) + + +typedef list Strings; +typedef set StringSet; + + +/* Paths are just strings. */ +typedef string Path; +typedef list Paths; +typedef set PathSet; + + +typedef enum { + lvlError, + lvlInfo, + lvlTalkative, + lvlChatty, + lvlDebug, + lvlVomit +} Verbosity; + + +} + + +#endif /* !__TYPES_H */ -- cgit 1.4.1