From 45ae222ab590cbff437ef1fa6a7680609d176d0b Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sat, 23 Jan 2016 21:26:06 -0800 Subject: [PATCH] Extract Optional to own header. --- firmware/application/tpms_app.hpp | 15 +---------- firmware/common/optional.hpp | 42 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 firmware/common/optional.hpp diff --git a/firmware/application/tpms_app.hpp b/firmware/application/tpms_app.hpp index 368b88289..a92f13ef4 100644 --- a/firmware/application/tpms_app.hpp +++ b/firmware/application/tpms_app.hpp @@ -29,20 +29,7 @@ #include "recent_entries.hpp" -template -class Optional { -public: - constexpr Optional() : value_ { }, valid_ { false } { }; - constexpr Optional(const T& value) : value_ { value }, valid_ { true } { }; - constexpr Optional(T&& value) : value_ { std::move(value) }, valid_ { true } { }; - - bool is_valid() const { return valid_; }; - T value() const { return value_; }; - -private: - T value_; - bool valid_; -}; +#include "optional.hpp" namespace tpms { diff --git a/firmware/common/optional.hpp b/firmware/common/optional.hpp new file mode 100644 index 000000000..a6ca3ecf6 --- /dev/null +++ b/firmware/common/optional.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2016 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __OPTIONAL_H__ +#define __OPTIONAL_H__ + +#include + +template +class Optional { +public: + constexpr Optional() : value_ { }, valid_ { false } { }; + constexpr Optional(const T& value) : value_ { value }, valid_ { true } { }; + constexpr Optional(T&& value) : value_ { std::move(value) }, valid_ { true } { }; + + bool is_valid() const { return valid_; }; + T value() const { return value_; }; + +private: + T value_; + bool valid_; +}; + +#endif/*__OPTIONAL_H__*/