HAL
user_action_object.cpp
Go to the documentation of this file.
3 #include <QMetaEnum>
4 
5 namespace hal {
6  UserActionObjectType::ObjectType UserActionObjectType::fromString(const QString& s)
7  {
8  QMetaEnum me = QMetaEnum::fromType<ObjectType>();
9  for (int t = None; t < MaxObjectType; t++)
10  if (s == me.key(t))
11  return static_cast<ObjectType>(t);
12  return None;
13  }
14 
16  {
17  QMetaEnum me = QMetaEnum::fromType<ObjectType>();
18  return QString(me.key(t));
19  }
20 
22  {
23  ObjectType retval = None;
24  switch (itp)
25  {
26  case ItemType::Module: retval = Module; break;
27  case ItemType::Gate: retval = Gate; break;
28  case ItemType::Net: retval = Net; break;
29  default: break;
30  }
31  return retval;
32  }
33 
35  {
37  switch (t)
38  {
39  case Module: retval = ItemType::Module; break;
40  case Gate: retval = ItemType::Gate; break;
41  case Net: retval = ItemType::Net; break;
42  default: break;
43  }
44  return retval;
45  }
46 
48  {
49  ObjectType retval = None;
50  switch (itp)
51  {
52  case SelectionRelay::ItemType::Module: retval = Module; break;
53  case SelectionRelay::ItemType::Gate: retval = Gate; break;
54  case SelectionRelay::ItemType::Net: retval = Net; break;
55  default: break;
56  }
57  return retval;
58  }
59 
61  {
63  switch (t)
64  {
65  case Module: retval = SelectionRelay::ItemType::Module; break;
66  case Gate: retval = SelectionRelay::ItemType::Gate; break;
67  case Net: retval = SelectionRelay::ItemType::Net; break;
68  default: break;
69  }
70  return retval;
71  }
72 
74  {
75  ObjectType retval = None;
76  switch (ntp)
77  {
78  case Node::Module: retval = Module; break;
79  case Node::Gate: retval = Gate; break;
80  default: break;
81  }
82  return retval;
83  }
84 
86  {
87  Node::NodeType retval = Node::None;
88  switch (t)
89  {
90  case Module: retval = Node::Module; break;
91  case Gate: retval = Node::Gate; break;
92  default: break;
93  }
94  return retval;
95  }
96 
98  {
99  if (mType==UserActionObjectType::None) return QString("-");
100  // None, Module, Gate, Net, Grouping, Netlist, Context, Port
101  const char* cType = "-mgn{Lxp";
102  return QString("%1%2%3").arg(cType[mType]).arg(mId)
103  .arg(mType==UserActionObjectType::Grouping? "}" : "");
104  }
105 
107  {
108  if (mType==UserActionObjectType::None) return;
109  xmlOut.writeAttribute("id", QString::number(mId));
110  xmlOut.writeAttribute("type",UserActionObjectType::toString(mType));
111  }
112 
114  {
115  QStringRef srId = xmlIn.attributes().value("id");
116  if (srId.isNull() || srId.isEmpty()) return;
117  QStringRef srTp = xmlIn.attributes().value("type");
118  if (srTp.isNull() || srTp.isEmpty()) return;
119  bool ok = false;
120  mId = srId.toInt(&ok);
121  if (!ok) return;
122  mType = UserActionObjectType::fromString(srTp.toString());
123  }
124 }
@ Module
Definition: gui_def.h:63
@ Gate
Definition: gui_def.h:63
@ None
Definition: gui_def.h:63
void readFromXml(QXmlStreamReader &xmlIn)
void writeToXml(QXmlStreamWriter &xmlOut) const
static ObjectType fromHalType(hal::ItemType itp)
static SelectionRelay::ItemType toSelectionType(ObjectType t)
static ObjectType fromSelectionType(SelectionRelay::ItemType itp)
static QString toString(ObjectType t)
static ObjectType fromNodeType(Node::NodeType ntp)
static Node::NodeType toNodeType(ObjectType t)
static hal::ItemType toHalType(ObjectType t)
ItemType
The ItemType enum provides the enum type to classify graphic items into Modules, Gates or Nets....
Definition: gui_def.h:45
const char * key(int index) const const
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
QString number(int n, int base)
bool isEmpty() const const
bool isNull() const const
int toInt(bool *ok, int base) const const
QString toString() const const
QStringRef value(const QString &namespaceUri, const QString &name) const const
QXmlStreamAttributes attributes() const const
void writeAttribute(const QString &qualifiedName, const QString &value)