• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 The TensorFlow Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // =============================================================================
15 
16 #ifndef TENSORFLOW_CONTRIB_BOOSTED_TREES_LIB_UTILS_OPTIONAL_VALUE_H_
17 #define TENSORFLOW_CONTRIB_BOOSTED_TREES_LIB_UTILS_OPTIONAL_VALUE_H_
18 
19 #include "tensorflow/core/platform/logging.h"
20 
21 namespace tensorflow {
22 namespace boosted_trees {
23 namespace utils {
24 
25 // Utility class holding an optional value.
26 template <typename T>
27 class OptionalValue {
28  public:
OptionalValue()29   OptionalValue() : value_(), has_value_(false) {}
OptionalValue(T value)30   explicit OptionalValue(T value) : value_(value), has_value_(true) {}
31 
has_value()32   bool has_value() const { return has_value_; }
get_value()33   const T& get_value() const {
34     QCHECK(has_value());
35     return value_;
36   }
37 
38  private:
39   T value_;
40   bool has_value_;
41 };
42 
43 }  // namespace utils
44 }  // namespace boosted_trees
45 }  // namespace tensorflow
46 
47 #endif  // TENSORFLOW_CONTRIB_BOOSTED_TREES_LIB_UTILS_OPTIONAL_VALUE_H_
48