OdbDesignLib
OdbDesign ODB++ Parsing Library
Component.cpp
1 #include "Component.h"
2 #include "../ProtoBuf/component.pb.h"
3 #include "../ProtoBuf/enums.pb.h"
4 #include <string>
5 #include <memory>
6 #include "../enums.h"
7 #include "Part.h"
8 #include "Package.h"
9 
10 
11 namespace Odb::Lib::ProductModel
12 {
13  Component::Component()
14  : m_refDes("")
15  , m_partName("")
16  , m_pPackage(nullptr)
17  , m_index(static_cast<unsigned>(-1))
18  , m_side(BoardSide::BsNone)
19  , m_pPart(nullptr)
20  {
21  }
22 
23  Component::Component(const std::string& refDes, const std::string& partName, std::shared_ptr<Package> pPackage, unsigned int index, BoardSide side, std::shared_ptr<Part> pPart)
24  : m_refDes(refDes)
25  , m_partName(partName)
26  , m_pPackage(pPackage)
27  , m_index(index)
28  , m_side(side)
29  , m_pPart(pPart)
30  {
31  }
32 
33  Component::~Component()
34  {
35  }
36 
37  std::string Component::GetRefDes() const
38  {
39  return m_refDes;
40  }
41 
42  std::string Component::GetPartName() const
43  {
44  return m_partName;
45  }
46 
47  std::shared_ptr<Package> Component::GetPackage() const
48  {
49  return m_pPackage;
50  }
51 
52  unsigned int Component::GetIndex() const
53  {
54  return m_index;
55  }
56 
57  BoardSide Component::GetSide() const
58  {
59  return m_side;
60  }
61 
62  std::shared_ptr<Part> Component::GetPart() const
63  {
64  return m_pPart;
65  }
66 
67  std::unique_ptr<Odb::Lib::Protobuf::ProductModel::Component> Component::to_protobuf() const
68  {
69  auto pComponentMsg = std::make_unique<Odb::Lib::Protobuf::ProductModel::Component>();
70  pComponentMsg->set_refdes(m_refDes);
71  pComponentMsg->set_partname(m_partName);
72  pComponentMsg->set_index(m_index);
73  pComponentMsg->set_side(static_cast<Odb::Lib::Protobuf::BoardSide>(m_side));
74  pComponentMsg->mutable_package()->CopyFrom(*m_pPackage->to_protobuf());
75  pComponentMsg->mutable_part()->CopyFrom(*m_pPart->to_protobuf());
76  return pComponentMsg;
77  }
78 
79  void Component::from_protobuf(const Odb::Lib::Protobuf::ProductModel::Component& message)
80  {
81  m_refDes = message.refdes();
82  m_partName = message.partname();
83  m_index = message.index();
84  m_side = static_cast<BoardSide>(message.side());
85  m_pPackage = std::make_shared<Package>("", -1);
86  m_pPackage->from_protobuf(message.package());
87  m_pPart = std::make_shared<Part>("");
88  m_pPart->from_protobuf(message.part());
89  }
90 
91  //Component* Component::MakeEmpty()
92  //{
93  // return new Component();
94  //}
95 
96 } // namespace Odb::Lib::ProductModel