blob: 7d6dcc78d69e76c4449c86cf07dc3fe366faf1fb [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "libipp/ipp_package.h"
namespace ipp {
// Methods for Package
Group* Package::GetGroup(GroupTag gn) {
const std::vector<Group*> groups = GetKnownGroups();
for (auto g : groups)
if (g->GetName() == gn)
return g;
for (auto g : unknown_groups_)
if (g->GetName() == gn)
return g;
return nullptr;
}
const Group* Package::GetGroup(GroupTag gn) const {
const std::vector<const Group*> groups = GetKnownGroups();
for (auto g : groups)
if (g->GetName() == gn)
return g;
for (auto g : unknown_groups_)
if (g->GetName() == gn)
return g;
return nullptr;
}
Group* Package::AddUnknownGroup(GroupTag gn, bool is_a_set) {
if (GetGroup(gn) != nullptr)
return nullptr;
unknown_groups_.push_back(new UnknownGroup(gn, is_a_set));
return unknown_groups_.back();
}
std::vector<Group*> Package::GetAllGroups() {
std::vector<Group*> groups = GetKnownGroups();
groups.insert(groups.end(), unknown_groups_.begin(), unknown_groups_.end());
return groups;
}
std::vector<const Group*> Package::GetAllGroups() const {
std::vector<const Group*> groups = GetKnownGroups();
groups.insert(groups.end(), unknown_groups_.begin(), unknown_groups_.end());
return groups;
}
Package::~Package() {
for (auto g : unknown_groups_)
delete g;
}
} // namespace ipp