aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/attribute/address_space_usage.h
blob: 908e956f83d494512d90c2b459e89a0d34b69b61 (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
// Copyright Yahoo. 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();
    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;
};

}