From 9188bf42b6c8fd34b6d89c8011c950d08488be95 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Tue, 9 Oct 2018 07:23:33 +0000 Subject: move empty id to constexpr in header --- metrics/src/vespa/metrics/metric.cpp | 2 +- metrics/src/vespa/metrics/metric.h | 2 +- staging_vespalib/src/vespa/vespalib/metrics/handle.h | 3 +++ staging_vespalib/src/vespa/vespalib/metrics/name_collection.h | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp index 82f9c848ece..579e3bdfbe3 100644 --- a/metrics/src/vespa/metrics/metric.cpp +++ b/metrics/src/vespa/metrics/metric.cpp @@ -44,7 +44,7 @@ vespalib::Regexp Metric::_namePattern(namePattern); Tag::Tag(vespalib::stringref k) : _key(NameRepo::tagKeyId(k)), - _value(0) + _value(TagValueId::empty_handle) { } Tag::Tag(vespalib::stringref k, vespalib::stringref v) : _key(NameRepo::tagKeyId(k)), diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h index c92cad8c0cd..d1313c3ca1a 100644 --- a/metrics/src/vespa/metrics/metric.h +++ b/metrics/src/vespa/metrics/metric.h @@ -94,7 +94,7 @@ struct Tag Tag & operator = (Tag &&) = default; ~Tag(); - bool hasValue() const { return _value.id() != 0; } + bool hasValue() const { return (_value != TagValueId::empty_handle); } private: TagKeyId _key; diff --git a/staging_vespalib/src/vespa/vespalib/metrics/handle.h b/staging_vespalib/src/vespa/vespalib/metrics/handle.h index ddae0b1b6d2..3e32945ceed 100644 --- a/staging_vespalib/src/vespa/vespalib/metrics/handle.h +++ b/staging_vespalib/src/vespa/vespalib/metrics/handle.h @@ -15,9 +15,12 @@ template class Handle { private: size_t _id; + constexpr Handle() : _id(0) {} public: explicit Handle(size_t id) : _id(id) {} size_t id() const { return _id; } + + static constexpr Handle empty_handle = Handle(); }; template diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h index 6a91c2d4a9d..6e939cd372d 100644 --- a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h +++ b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h @@ -23,6 +23,8 @@ public: NameCollection(); ~NameCollection() {} + + static constexpr size_t empty_id = 0; }; } // namespace vespalib::metrics -- cgit v1.2.3