123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright The OpenTelemetry Authors
- // SPDX-License-Identifier: Apache-2.0
- #pragma once
- #include "opentelemetry/nostd/string_view.h"
- #include "opentelemetry/version.h"
- OPENTELEMETRY_BEGIN_NAMESPACE
- namespace trace
- {
- namespace propagation
- {
- // NOTE - code within `detail` namespace implements internal details, and not part
- // of the public interface.
- namespace detail
- {
- /**
- * Splits a string by separator, up to given buffer count words.
- * Returns the amount of words the input was split into.
- */
- inline size_t SplitString(nostd::string_view s,
- char separator,
- nostd::string_view *results,
- size_t count)
- {
- if (count == 0)
- {
- return count;
- }
- size_t filled = 0;
- size_t token_start = 0;
- for (size_t i = 0; i < s.size(); i++)
- {
- if (s[i] != separator)
- {
- continue;
- }
- results[filled++] = s.substr(token_start, i - token_start);
- if (filled == count)
- {
- return count;
- }
- token_start = i + 1;
- }
- if (filled < count)
- {
- results[filled++] = s.substr(token_start);
- }
- return filled;
- }
- } // namespace detail
- } // namespace propagation
- } // namespace trace
- OPENTELEMETRY_END_NAMESPACE
|