OdbDesignLib
OdbDesign ODB++ Parsing Library
 
Loading...
Searching...
No Matches
Component.cpp
1#include "Component.h"
2#include "component.pb.h"
3#include "enums.pb.h"
4#include <string>
5#include <memory>
6#include "../enums.h"
7#include "Part.h"
8#include "Package.h"
9
10
11namespace 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