Shaka Packager SDK
Loading...
Searching...
No Matches
tag.cc
1// Copyright 2018 Google LLC. All rights reserved.
2//
3// Use of this source code is governed by a BSD-style
4// license that can be found in the LICENSE file or at
5// https://developers.google.com/open-source/licenses/bsd
6
7#include <packager/hls/base/tag.h>
8
9#include <cinttypes>
10#include <cstdint>
11#include <string>
12
13#include <absl/strings/str_format.h>
14
15namespace shaka {
16namespace hls {
17
18Tag::Tag(const std::string& name, std::string* buffer) : buffer_(buffer) {
19 absl::StrAppendFormat(buffer_, "%s:", name.c_str());
20}
21
22void Tag::AddString(const std::string& key, const std::string& value) {
23 NextField();
24 absl::StrAppendFormat(buffer_, "%s=%s", key.c_str(), value.c_str());
25}
26
27void Tag::AddQuotedString(const std::string& key, const std::string& value) {
28 NextField();
29 absl::StrAppendFormat(buffer_, "%s=\"%s\"", key.c_str(), value.c_str());
30}
31
32void Tag::AddNumber(const std::string& key, uint64_t value) {
33 NextField();
34 absl::StrAppendFormat(buffer_, "%s=%" PRIu64, key.c_str(), value);
35}
36
37void Tag::AddFloat(const std::string& key, float value) {
38 NextField();
39 absl::StrAppendFormat(buffer_, "%s=%.3f", key.c_str(), value);
40}
41
42void Tag::AddNumberPair(const std::string& key,
43 uint64_t number1,
44 char separator,
45 uint64_t number2) {
46 NextField();
47 absl::StrAppendFormat(buffer_, "%s=%" PRIu64 "%c%" PRIu64, key.c_str(),
48 number1, separator, number2);
49}
50
51void Tag::AddQuotedNumberPair(const std::string& key,
52 uint64_t number1,
53 char separator,
54 uint64_t number2) {
55 NextField();
56 absl::StrAppendFormat(buffer_, "%s=\"%" PRIu64 "%c%" PRIu64 "\"", key.c_str(),
57 number1, separator, number2);
58}
59
60void Tag::NextField() {
61 if (fields++) {
62 buffer_->append(",");
63 }
64}
65
66} // namespace hls
67} // namespace shaka
All the methods that are virtual are virtual for mocking.