HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
logic_evaluator_pingroup.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 
28 #include <QFrame>
29 #include <QList>
30 #include <QCheckBox>
31 #include <QSpinBox>
32 #include <QStringList>
33 #include <QLabel>
34 #include <vector>
36 
37 namespace hal {
38 
39  class Net;
40 
45  {
46  Q_OBJECT
47  protected:
48  QValidator::State validate(QString &input, int &pos) const override;
49  int valueFromText(const QString &text) const override;
50  virtual QString textFromValue(int val) const override;
51  public:
53  };
54 
59  {
60  Q_OBJECT
61  const Net* mNet;
62  public:
63  LogicEvaluatorCheckBox(const Net* n, QWidget* parent = nullptr);
65  void setValue(const Net* n, BooleanFunction::Value val);
66  };
67 
72  {
73  Q_OBJECT
74  QLabel* mLabel;
75  LogicEvaluatorHexSpinbox* mSpinBox;
76 
77  private Q_SLOT:
78  void handleSpinBoxValueChanged(int val);
79  Q_SIGNALS:
80  void valueChanged(int val);
81  public:
82  LogicEvaluatorValue(int nbits, QWidget* parent = nullptr);
83  int value() const;
84  void setValue(int val);
85  bool isLabel() const { return mLabel!=nullptr; }
86  };
87 
92  {
93  Q_OBJECT
94  Q_PROPERTY(bool output READ output WRITE setOutput);
95 
97  LogicEvaluatorValue* mGroupValue;
98  bool mOutput;
99 
100  void constructor(const std::vector<const Net*>& nets, const QString& grpName = QString());
101  Q_SIGNALS:
103  private Q_SLOT:
104  void handleGroupValueChanged(int val);
105  void handleCheckStateChanged(int state);
106  public:
107  LogicEvaluatorPingroup(const std::vector<const Net*>& nets, bool outp, const QString& grpName, QWidget* parent = nullptr);
108  LogicEvaluatorPingroup(const Net*, bool outp, QWidget* parent = nullptr);
109  bool output() const { return mOutput; }
110  void setOutput(bool outp) { mOutput = outp; }
111  int size() const { return mPinList.size(); }
113  void setValue(const Net* n, BooleanFunction::Value val);
114  };
115 }
Value
represents the type of the node
void setValue(const Net *n, BooleanFunction::Value val)
LogicEvaluatorCheckBox(const Net *n, QWidget *parent=nullptr)
QPair< const Net *, BooleanFunction::Value > getValue() const
LogicEvaluatorHexSpinbox(QWidget *parent=nullptr)
virtual QString textFromValue(int val) const override
int valueFromText(const QString &text) const override
QValidator::State validate(QString &input, int &pos) const override
LogicEvaluatorPingroup(const std::vector< const Net * > &nets, bool outp, const QString &grpName, QWidget *parent=nullptr)
void setValue(const Net *n, BooleanFunction::Value val)
QPair< const Net *, BooleanFunction::Value > getValue(int index) const
void valueChanged(int val)
LogicEvaluatorValue(int nbits, QWidget *parent=nullptr)
Definition: net.h:58
Definition: defines.h:45
int size() const const
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
Q_SLOTQ_SLOT
QObject * parent() const const