File indexing completed on 2025-08-28 08:27:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #pragma once
0019
0020 #include <cstdint>
0021 #include <memory>
0022 #include <string>
0023 #include <string_view>
0024 #include <unordered_map>
0025 #include <utility>
0026 #include <vector>
0027
0028 #include "arrow/result.h"
0029 #include "arrow/status.h"
0030 #include "arrow/util/macros.h"
0031 #include "arrow/util/visibility.h"
0032
0033 namespace arrow {
0034
0035
0036 class ARROW_EXPORT KeyValueMetadata {
0037 public:
0038 KeyValueMetadata();
0039 KeyValueMetadata(std::vector<std::string> keys, std::vector<std::string> values);
0040 explicit KeyValueMetadata(const std::unordered_map<std::string, std::string>& map);
0041
0042 static std::shared_ptr<KeyValueMetadata> Make(std::vector<std::string> keys,
0043 std::vector<std::string> values);
0044
0045 void ToUnorderedMap(std::unordered_map<std::string, std::string>* out) const;
0046 void Append(std::string key, std::string value);
0047
0048 Result<std::string> Get(std::string_view key) const;
0049 bool Contains(std::string_view key) const;
0050
0051 Status Delete(std::string_view key);
0052 Status Delete(int64_t index);
0053 Status DeleteMany(std::vector<int64_t> indices);
0054 Status Set(std::string key, std::string value);
0055
0056 void reserve(int64_t n);
0057
0058 int64_t size() const;
0059 const std::string& key(int64_t i) const;
0060 const std::string& value(int64_t i) const;
0061 const std::vector<std::string>& keys() const { return keys_; }
0062 const std::vector<std::string>& values() const { return values_; }
0063
0064 std::vector<std::pair<std::string, std::string>> sorted_pairs() const;
0065
0066
0067 int FindKey(std::string_view key) const;
0068
0069 std::shared_ptr<KeyValueMetadata> Copy() const;
0070
0071
0072
0073
0074 std::shared_ptr<KeyValueMetadata> Merge(const KeyValueMetadata& other) const;
0075
0076 bool Equals(const KeyValueMetadata& other) const;
0077 std::string ToString() const;
0078
0079 private:
0080 std::vector<std::string> keys_;
0081 std::vector<std::string> values_;
0082
0083 ARROW_DISALLOW_COPY_AND_ASSIGN(KeyValueMetadata);
0084 };
0085
0086
0087
0088
0089 ARROW_EXPORT std::shared_ptr<KeyValueMetadata> key_value_metadata(
0090 const std::unordered_map<std::string, std::string>& pairs);
0091
0092
0093
0094
0095
0096 ARROW_EXPORT std::shared_ptr<KeyValueMetadata> key_value_metadata(
0097 std::vector<std::string> keys, std::vector<std::string> values);
0098
0099 }