.. _program_listing_file_include_opentelemetry_trace_trace_flags.h: Program Listing for File trace_flags.h ====================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/opentelemetry/trace/trace_flags.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 #pragma once #include #include #include "opentelemetry/nostd/span.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE namespace trace { // TraceFlags represents options for a Trace. These options are propagated to all child Spans // and determine features such as whether a Span should be traced. TraceFlags // are implemented as a bitmask. class TraceFlags final { public: static constexpr uint8_t kIsSampled = 1; TraceFlags() noexcept : rep_{0} {} explicit TraceFlags(uint8_t flags) noexcept : rep_(flags) {} bool IsSampled() const noexcept { return rep_ & kIsSampled; } // Populates the buffer with the lowercase base16 representation of the flags. void ToLowerBase16(nostd::span buffer) const noexcept { constexpr char kHex[] = "0123456789ABCDEF"; buffer[0] = kHex[(rep_ >> 4) & 0xF]; buffer[1] = kHex[(rep_ >> 0) & 0xF]; } uint8_t flags() const noexcept { return rep_; } bool operator==(const TraceFlags &that) const noexcept { return rep_ == that.rep_; } bool operator!=(const TraceFlags &that) const noexcept { return !(*this == that); } // Copies the TraceFlags to dest. void CopyBytesTo(nostd::span dest) const noexcept { dest[0] = rep_; } private: uint8_t rep_; }; } // namespace trace OPENTELEMETRY_END_NAMESPACE