// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "absl/strings/internal/cordz_sample_token.h" #include "absl/base/config.h" #include "absl/strings/internal/cordz_handle.h" #include "absl/strings/internal/cordz_info.h" namespace absl { ABSL_NAMESPACE_BEGIN namespace cord_internal { CordzSampleToken::Iterator& CordzSampleToken::Iterator::operator++() { if (current_) { current_ = current_->Next(*token_); } return *this; } CordzSampleToken::Iterator CordzSampleToken::Iterator::operator++(int) { Iterator it(*this); operator++(); return it; } bool operator==(const CordzSampleToken::Iterator& lhs, const CordzSampleToken::Iterator& rhs) { return lhs.current_ == rhs.current_ && (lhs.current_ == nullptr || lhs.token_ == rhs.token_); } bool operator!=(const CordzSampleToken::Iterator& lhs, const CordzSampleToken::Iterator& rhs) { return !(lhs == rhs); } CordzSampleToken::Iterator::reference CordzSampleToken::Iterator::operator*() const { return *current_; } CordzSampleToken::Iterator::pointer CordzSampleToken::Iterator::operator->() const { return current_; } CordzSampleToken::Iterator::Iterator(const CordzSampleToken* token) : token_(token), current_(CordzInfo::Head(*token)) {} } // namespace cord_internal ABSL_NAMESPACE_END } // namespace absl