mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-09-09 00:03:00 +02:00
63 lines
1.2 KiB
C++
63 lines
1.2 KiB
C++
// 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
|