blob: 9a92bb5d8580cc0ba5a6ac516031c1557bf853a3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_fun.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/address_space.h>
#include <unordered_map>
namespace search {
/**
* Represents the address space usage for a set of attribute vector components.
*/
class AddressSpaceUsage
{
private:
using AddressSpaceMap = std::unordered_map<vespalib::string, vespalib::AddressSpace, vespalib::hash<vespalib::string>>;
AddressSpaceMap _map;
public:
AddressSpaceUsage();
AddressSpaceUsage(const vespalib::AddressSpace& enum_store_usage,
const vespalib::AddressSpace& multi_value_usage);
void set(const vespalib::string& component, const vespalib::AddressSpace& usage);
vespalib::AddressSpace get(const vespalib::string& component) const;
const AddressSpaceMap& get_all() const { return _map; }
vespalib::AddressSpace enum_store_usage() const;
vespalib::AddressSpace multi_value_usage() const;
};
}
|