bmv2
Designing your own switch target with bmv2
Loading...
Searching...
No Matches
include
bm
bm_sim
pre.h
1
/* Copyright 2013-present Barefoot Networks, Inc.
2
*
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
/*
17
* Srikrishna Gopu (krishna@barefootnetworks.com)
18
* Antonin Bas (antonin@barefootnetworks.com)
19
*
20
*/
21
22
#ifndef BM_BM_SIM_PRE_H_
23
#define BM_BM_SIM_PRE_H_
24
25
#include <string>
26
#include <bitset>
27
28
namespace
bm {
29
30
namespace
McPre {
31
32
template
<
size_t
set_size>
33
class
Set {
34
public
:
35
using
reference =
typename
std::bitset<set_size>::reference;
36
37
public
:
38
constexpr
Set() noexcept { }
39
40
explicit
Set(
const
std::string &str)
41
: port_map(str) { }
42
43
bool
operator[] (
size_t
pos)
const
{
return
port_map[pos]; }
44
reference operator[] (
size_t
pos) {
return
port_map[pos]; }
45
46
constexpr
size_t
size() const noexcept {
return
port_map.size(); }
47
48
private
:
49
std::bitset<set_size> port_map{};
50
};
51
52
}
// namespace McPre
53
54
}
// namespace bm
55
56
#endif
// BM_BM_SIM_PRE_H_
Generated on Tue Apr 21 2026 01:43:46 for bmv2 by
1.9.8