wibble 1.1
fallback.h
Go to the documentation of this file.
1
6#include <wibble/exception.h>
7
8#ifndef WIBBLE_FALLBACK_H
9#define WIBBLE_FALLBACK_H
10
11namespace wibble {
12
13struct Error {};
14
15template< typename T >
16struct Fallback {
17 const T *value;
18 Fallback( const T &v ) : value( &v ) {}
19 Fallback( Error = Error() ) : value( 0 ) {}
20
21 template< typename E > const T &get( const E &e ) {
22 if ( !value ) throw e;
23 return *value;
24 }
25
26 const T &get() {
27 if ( !value ) throw exception::Consistency( "tried to use undefined fallback value" );
28 return *value;
29 }
30};
31
32}
33
34#endif
Exception thrown when some consistency check fails.
Definition exception.h:255
Definition amorph.h:17
Definition fallback.h:13
Definition fallback.h:16
Fallback(Error=Error())
Definition fallback.h:19
Fallback(const T &v)
Definition fallback.h:18
const T * value
Definition fallback.h:17
const T & get()
Definition fallback.h:26
const T & get(const E &e)
Definition fallback.h:21
Definition amorph.h:30