HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
gate_info_table.h
Go to the documentation of this file.
1 // MIT License
2 //
3 // Copyright (c) 2019 Ruhr University Bochum, Chair for Embedded Security. All Rights reserved.
4 // Copyright (c) 2019 Marc Fyrbiak, Sebastian Wallat, Max Hoffmann ("ORIGINAL AUTHORS"). All rights reserved.
5 // Copyright (c) 2021 Max Planck Institute for Security and Privacy. All Rights reserved.
6 // Copyright (c) 2021 Jörn Langheinrich, Julian Speith, Nils Albartus, René Walendy, Simon Klix ("ORIGINAL AUTHORS"). All Rights reserved.
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
25 
26 #pragma once
27 
29 
30 namespace hal
31 {
32  class Gate;
33  class Module;
34 
39  {
40  Q_OBJECT
41 
42  public:
43 
49  GateInfoTable(QWidget* parent = nullptr);
50 
56  void setGate(Gate* gate);
57 
58  private:
59 
65  QString name() const;
66 
72  QString id() const;
73 
79  QString type() const;
80 
86  QString properties() const;
87 
93  QString location() const;
94 
100  QString parentModule() const;
101 
105  void changeName();
106 
110  void copyName() const;
111 
115  void pyCopyName() const;
116 
120  void copyId() const;
121 
125  void pyCopyId() const;
126 
130  void copyType() const;
131 
135  void pyCopyType() const;
136 
140  void copyproperties() const;
141 
145  void pyCopyproperties() const;
146 
150  void copyLocation() const;
151 
155  void pyCopyLocation() const;
156 
160  void copyModuleName() const;
161 
165  void pyCopyModule() const;
166 
170  void copyModuleID() const;
171 
175  void addModuleToSelection();
176 
180  void setModuleAsSelection();
181 
185  void moveToModuleAction();
186 
192  void handleGateRemoved(Gate* gate);
193 
199  void handleGateNameChanged(Gate* gate);
200 
206  void handleGateLocationChanged(Gate* gate);
207 
213  void handleModuleNameChanged(Module* module);
214 
221  void handleModuleGateAssigned(Module* module, const u32 gateId);
222 
226  void refresh();
227 
228  Gate* mGate;
229 
230  QMenu* mNameEntryContextMenu;
231  QMenu* mIdEntryContextMenu;
232  QMenu* mTypeEntryContextMenu;
233  QMenu* mPropertiesEntryContextMenu;
234  QMenu* mLocationEntryContextMenu;
235  QMenu* mModuleEntryContextMenu;
236 
237  std::function<void()> mModuleDoubleClickedAction;
238 
239  static const QString nameRowKey;
240  static const QString idRowKey;
241  static const QString typeRowKey;
242  static const QString gateTypePropertiesRowKey;
243  static const QString locationRowKey;
244  static const QString moduleRowKey;
245  };
246 }
Definition: gate.h:58
void setGate(Gate *gate)
GateInfoTable(QWidget *parent=nullptr)
uint32_t u32
Definition: defines.h:41
const Module * module(const Gate *g, const NodeBoxes &boxes)
Definition: defines.h:45
Q_OBJECTQ_OBJECT
QObject * parent() const const