X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fbuilder%2Foptional-value.h;h=7a1d9f4be67b78fc24b62be5c51a4053d76eda8f;hp=eca5303cc2adb6179b4194997633cf2bc353da92;hb=0c862d5823332bc2161c64f901395f2390c82fd2;hpb=306d2f61a1b64179e801fa8a0bb2bd7b4e9dd682 diff --git a/dali-toolkit/internal/builder/optional-value.h b/dali-toolkit/internal/builder/optional-value.h index eca5303..7a1d9f4 100644 --- a/dali-toolkit/internal/builder/optional-value.h +++ b/dali-toolkit/internal/builder/optional-value.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_BUILDER_OPTIONAL__ -#define __DALI_TOOLKIT_INTERNAL_BUILDER_OPTIONAL__ +#ifndef DALI_TOOLKIT_INTERNAL_BUILDER_OPTIONAL_H +#define DALI_TOOLKIT_INTERNAL_BUILDER_OPTIONAL_H /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,74 +18,113 @@ * */ -// INTERNAL INCLUDES -template +template struct OptionalTypes { - typedef T ValueType; - typedef const T& ReturnType; - static ReturnType Get(const ValueType& v) { return v; } - static ValueType Set(const ReturnType v) { return v; } - static bool Ok(const ValueType& v) { return true; } + typedef T ValueType; + typedef const T& ReturnType; + static ReturnType Get(const ValueType& v) + { + return v; + } + static ValueType Set(const ReturnType v) + { + return v; + } + static bool Ok(const ValueType& v) + { + return true; + } }; -template +template struct OptionalTypes { - typedef T* ValueType; - typedef const T* ReturnType; - static ReturnType Get(const ValueType v) { return v; } - static ValueType Set(const ReturnType v) { return v; } - static bool Ok(const ReturnType v) { return NULL != v; } + typedef T* ValueType; + typedef const T* ReturnType; + static ReturnType Get(const ValueType v) + { + return v; + } + static ValueType Set(const ReturnType v) + { + return v; + } + static bool Ok(const ReturnType v) + { + return NULL != v; + } }; -template +template struct OptionalTypes { - typedef T* ValueType; - typedef const T& ReturnType; - static ReturnType Get(const ValueType v) { return *v; } - static ValueType Set(const ReturnType v) { return &v; } - static bool Ok(const ReturnType v) { return true; } + typedef T* ValueType; + typedef const T& ReturnType; + static ReturnType Get(const ValueType v) + { + return *v; + } + static ValueType Set(const ReturnType v) + { + return &v; + } + static bool Ok(const ReturnType v) + { + return true; + } }; -template +template class OptionalValue { public: - typedef void ( OptionalValue::*bool_type )() const; typedef typename OptionalTypes::ReturnType ReturnType; - typedef typename OptionalTypes::ValueType ValueType; + typedef typename OptionalTypes::ValueType ValueType; - OptionalValue(): mOk(false), mValue() {} - OptionalValue( T value ): mOk(OptionalTypes::Ok(value)), mValue(OptionalTypes::Set(value)) {} - OptionalValue( bool b, T value ): mOk(b), mValue(OptionalTypes::Set(value)) {} + OptionalValue() + : mOk(false), + mValue() + { + } + OptionalValue(T value) + : mOk(OptionalTypes::Ok(value)), + mValue(OptionalTypes::Set(value)) + { + } + OptionalValue(bool b, T value) + : mOk(b), + mValue(OptionalTypes::Set(value)) + { + } - ReturnType operator *() const { return OptionalTypes::Get(mValue); } + ReturnType operator*() const + { + return OptionalTypes::Get(mValue); + } - // safe bool idiom - operator bool_type() const { - return mOk == true ? &OptionalValue::this_type_does_not_support_comparisons : 0; + explicit operator bool() const + { + return mOk; } private: - bool mOk; + bool mOk; ValueType mValue; - void this_type_does_not_support_comparisons() const {} }; -template -bool operator==( const OptionalValue& lhs, const OptionalValue& rhs ) +template +bool operator==(const OptionalValue& lhs, const OptionalValue& rhs) { lhs.this_type_does_not_support_comparisons(); return false; } -template -bool operator!=( const OptionalValue& lhs, const OptionalValue& rhs ) +template +bool operator!=(const OptionalValue& lhs, const OptionalValue& rhs) { lhs.this_type_does_not_support_comparisons(); return false; } -#endif // header +#endif // DALI_TOOLKIT_INTERNAL_BUILDER_OPTIONAL_H