aboutsummaryrefslogtreecommitdiff
path: root/include/internal/catch_option.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/internal/catch_option.hpp')
-rw-r--r--include/internal/catch_option.hpp75
1 files changed, 0 insertions, 75 deletions
diff --git a/include/internal/catch_option.hpp b/include/internal/catch_option.hpp
deleted file mode 100644
index 5413abf..0000000
--- a/include/internal/catch_option.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Created by Phil on 02/12/2012.
- * Copyright 2012 Two Blue Cubes Ltd. All rights reserved.
- *
- * Distributed under the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- */
-#ifndef TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED
-#define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED
-
-#include "catch_common.h"
-
-namespace Catch {
-
- // An optional type
- template<typename T>
- class Option {
- public:
- Option() : nullableValue( CATCH_NULL ) {}
- Option( T const& _value )
- : nullableValue( new( storage ) T( _value ) )
- {}
- Option( Option const& _other )
- : nullableValue( _other ? new( storage ) T( *_other ) : CATCH_NULL )
- {}
-
- ~Option() {
- reset();
- }
-
- Option& operator= ( Option const& _other ) {
- if( &_other != this ) {
- reset();
- if( _other )
- nullableValue = new( storage ) T( *_other );
- }
- return *this;
- }
- Option& operator = ( T const& _value ) {
- reset();
- nullableValue = new( storage ) T( _value );
- return *this;
- }
-
- void reset() {
- if( nullableValue )
- nullableValue->~T();
- nullableValue = CATCH_NULL;
- }
-
- T& operator*() { return *nullableValue; }
- T const& operator*() const { return *nullableValue; }
- T* operator->() { return nullableValue; }
- const T* operator->() const { return nullableValue; }
-
- T valueOr( T const& defaultValue ) const {
- return nullableValue ? *nullableValue : defaultValue;
- }
-
- bool some() const { return nullableValue != CATCH_NULL; }
- bool none() const { return nullableValue == CATCH_NULL; }
-
- bool operator !() const { return nullableValue == CATCH_NULL; }
- operator SafeBool::type() const {
- return SafeBool::makeSafe( some() );
- }
-
- private:
- T* nullableValue;
- char storage[sizeof(T)];
- };
-
-} // end namespace Catch
-
-#endif // TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED