3 #include "../ProtoBuf/package.pb.h"
7 namespace Odb::Lib::ProductModel
9 Package::Package(
const std::string& name,
unsigned int index)
21 std::string Package::GetName()
const
26 const Pin::Vector& Package::GetPins()
const
31 std::unique_ptr<Odb::Lib::Protobuf::ProductModel::Package> Package::to_protobuf()
const
33 auto pPackageMsg = std::make_unique<Odb::Lib::Protobuf::ProductModel::Package>();
34 pPackageMsg->set_name(m_name);
35 pPackageMsg->set_index(m_index);
36 for (
const auto& pPin : m_pins)
38 pPackageMsg->add_pins()->CopyFrom(*pPin->to_protobuf());
40 for (
const auto& kvPin : m_pinsByName)
42 (*pPackageMsg->mutable_pinsbyname())[kvPin.first] = *kvPin.second->to_protobuf();
47 void Package::from_protobuf(
const Odb::Lib::Protobuf::ProductModel::Package& message)
49 m_name = message.name();
50 m_index = message.index();
51 for (
const auto& pinMsg : message.pins())
53 auto pPin = std::make_shared<Pin>(
"", 0);
54 pPin->from_protobuf(pinMsg);
55 m_pins.push_back(pPin);
57 for (
const auto& kvPinMsg : message.pinsbyname())
59 auto pPin = std::make_shared<Pin>(
"", 0);
60 pPin->from_protobuf(kvPinMsg.second);
61 m_pinsByName[kvPinMsg.first] = pPin;
65 unsigned int Package::GetIndex()
const
70 void Package::AddPin(
const std::string& name)
72 auto index =
static_cast<unsigned int>(m_pins.size());
73 auto pPin = std::make_shared<Pin>(name, index);
74 m_pins.push_back(pPin);
75 m_pinsByName[pPin->GetName()] = pPin;
78 std::shared_ptr<Pin> Package::GetPin(
const std::string& name)
const
80 auto findIt = m_pinsByName.find(name);
81 if (findIt != m_pinsByName.end())
83 return findIt->second;
88 std::shared_ptr<Pin> Package::GetPin(
unsigned int index)
const
90 if (index < m_pins.size())
97 const Pin::StringMap& Package::GetPinsByName()
const