Improved documentation.
[libsex.git] / include / libsex / create.hxx
blobdcec2f3aa975fc60ff343f086f938d6e1ba8a52a
1 #ifndef CREATE_HXX
2 #define CREATE_HXX
4 #include <libsex/utility.hxx> // Needed in ERR_INST.
6 /// Macro for defining exception classes (.hxx).
7 #define ERR_DEFINE(parent, name) \
8 class name : public parent\
9 {\
10 public:\
11 static const char* const TEMPLATE;\
12 name(const char* const errorMessage);\
15 /// Macro for implementing exception classes (.cxx).
16 #define ERR_IMPL(parent, name, message) \
17 const char* const name::TEMPLATE = message;\
19 name::name(const char* const errorMessage)\
20 : parent(errorMessage)\
24 /**
25 * Macro for instantiating an exception with a formatted
26 * message.
28 #define ERR_INST(type, var, args...) \
29 type var = libsex::formatted<type>(__FILE__, __LINE__, args);
31 #endif