OdbDesignLib
OdbDesign ODB++ Parsing Library
SymbolName.cpp
1 #include "SymbolName.h"
2 #include "SymbolName.h"
3 
4 namespace Odb::Lib::FileModel::Design
5 {
6  //SymbolName::SymbolName(const std::string& name, UnitType unitType)
7  // : m_name(name)
8  // , m_unitType(unitType)
9  //{
10  //}
11 
12  SymbolName::SymbolName()
13  : m_name("")
14  , m_unitType(UnitType::None)
15  {
16  }
17 
18  std::string SymbolName::GetName() const
19  {
20  return m_name;
21  }
22 
23  UnitType SymbolName::GetUnitType() const
24  {
25  return m_unitType;
26  }
27 
28  bool SymbolName::Parse(const std::filesystem::path& path, const std::string& line, int lineNumber)
29  {
30  std::stringstream lineStream(line);
31  std::string token;
32 
33  // $n (index)
34  if (!std::getline(lineStream, token, ' '))
35  {
36  throw_parse_error(path, line, token, lineNumber);
37  }
38 
39  if (std::getline(lineStream, token, ' '))
40  {
41  m_name = token;
42  }
43  else
44  {
45  throw_parse_error(path, line, token, lineNumber);
46  }
47 
48  if (std::getline(lineStream, token, ' '))
49  {
50  switch (token[0])
51  {
52  case 'M':
53  m_unitType = UnitType::Metric;
54  break;
55  case 'I':
56  m_unitType = UnitType::Imperial;
57  break;
58  }
59  }
60 
61  return true;
62  }
63 
64  std::unique_ptr<Odb::Lib::Protobuf::SymbolName> SymbolName::to_protobuf() const
65  {
66  auto message = std::make_unique<Odb::Lib::Protobuf::SymbolName>();
67  message->set_name(m_name);
68  message->set_unittype(static_cast<Odb::Lib::Protobuf::UnitType>(m_unitType));
69  return message;
70  }
71 
72  void SymbolName::from_protobuf(const Odb::Lib::Protobuf::SymbolName& message)
73  {
74  m_name = message.name();
75  m_unitType = static_cast<UnitType>(message.unittype());
76  }
77 
78  //std::shared_ptr<SymbolName> SymbolName::Parse(const std::string& line)
79  //{
80  // return nullptr;
81  //}
82 }