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