Feature(uint64_t _id, const string& _name) : id(_id), name(_name) {}
};
- struct FeatureSet {
+ class FeatureSet {
uint64_t mask;
map <uint64_t,string> names;
+ public:
+ friend struct CompatSet;
+ friend class CephCompatSet_AllSet_Test;
+ friend class CephCompatSet_other_Test;
+ friend class CephCompatSet_merge_Test;
+ friend ostream& operator<<(ostream& out, const CompatSet::FeatureSet& fs);
+ friend ostream& operator<<(ostream& out, const CompatSet& compat);
FeatureSet() : mask(1), names() {}
- void insert(Feature f) {
+ void insert(const Feature& f) {
assert(f.id > 0);
assert(f.id < 64);
mask |= ((uint64_t)1<<f.id);
names[f.id] = f.name;
}
- bool contains(Feature f) const {
+ bool contains(const Feature& f) const {
return names.count(f.id);
}
bool contains(uint64_t f) const {
assert(i != names.end());
return i->second;
}
+
void remove(uint64_t f) {
if (names.count(f)) {
names.erase(f);
mask &= ~((uint64_t)1<<f);
}
}
- void remove(Feature f) {
+ void remove(const Feature& f) {
remove(f.id);
}