HAL
v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
bool_wizardpage.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 "
gui/gatelibrary_management/gatelibrary_pages/generalinfo_wizardpage.h
"
29
30
#include <QWizardPage>
31
#include <QGridLayout>
32
#include <QTabWidget>
33
#include <QLineEdit>
34
#include <QTextEdit>
35
#include <QLabel>
36
#include <QSet>
37
38
namespace
hal
{
39
class
GateLibraryWizard;
40
44
class
BoolWizardPage;
45
49
class
BooleanFunctionEdit
:
public
QLineEdit
50
{
51
Q_OBJECT
52
public
:
53
54
// Would like to define the state as enum, however,
55
// something seems to go wrong when QSS style converts it to string
56
// enum State {Empty, Valid, Invalid};
57
// Q_ENUM(State)
58
Q_PROPERTY
(
QString
state
READ
state
WRITE
setState
NOTIFY
stateChanged
);
59
60
private
:
61
QString
mState;
62
std::set<std::string> mLegalVariables;
63
64
static
const
char
* STATE_EMPTY;
65
static
const
char
* STATE_VALID;
66
static
const
char
* STATE_INVALID;
67
Q_SIGNALS
:
68
void
stateChanged
(
QString
s);
69
void
legalVariablesChanged
(std::set<std::string> legalVar);
70
private
Q_SLOTS
:
71
void
handleEditingFinished();
72
public
:
73
BooleanFunctionEdit
(std::set<std::string>& legalVar,
QWidget
*
parent
=
nullptr
);
74
QString
state
()
const
{
return
mState; }
75
void
setState
(
const
QString
& s);
76
void
setLegalVariables
(std::set<std::string>& legalVar);
77
bool
isValid
()
const
{
return
mState == STATE_VALID; }
78
};
79
83
class
BoolWizardPage
:
public
QWizardPage
84
{
85
Q_OBJECT
86
public
:
87
BoolWizardPage
(
QWidget
*
parent
=
nullptr
);
88
void
initializePage
()
override
;
89
bool
isComplete
()
const override
;
90
void
setData
(
GateType
* gate);
91
std::unordered_map<std::string, BooleanFunction>
getBoolFunctions
();
92
Q_SIGNALS
:
93
void
hasChanged
();
94
private
Q_SLOTS
:
95
void
handleStateChanged(
const
QString
& stat);
96
void
handleTextChanged(
const
QString
& txt);
97
private
:
98
QGridLayout
* mLayout;
99
GateLibraryWizard
* mWizard;
100
QList<BooleanFunctionEdit*>
mEditFunctions;
101
QList<QString>
mOutputPins;
102
GateType
* mGate =
nullptr
;
103
};
104
}
hal::BoolWizardPage
Definition:
bool_wizardpage.h:84
hal::BoolWizardPage::BoolWizardPage
BoolWizardPage(QWidget *parent=nullptr)
Definition:
bool_wizardpage.cpp:69
hal::BoolWizardPage::getBoolFunctions
std::unordered_map< std::string, BooleanFunction > getBoolFunctions()
Definition:
bool_wizardpage.cpp:207
hal::BoolWizardPage::setData
void setData(GateType *gate)
Definition:
bool_wizardpage.cpp:165
hal::BoolWizardPage::initializePage
void initializePage() override
Definition:
bool_wizardpage.cpp:77
hal::BoolWizardPage::isComplete
bool isComplete() const override
Definition:
bool_wizardpage.cpp:193
hal::BoolWizardPage::hasChanged
void hasChanged()
hal::BooleanFunctionEdit
Definition:
bool_wizardpage.h:50
hal::BooleanFunctionEdit::setState
void setState(const QString &s)
Definition:
bool_wizardpage.cpp:20
hal::BooleanFunctionEdit::setLegalVariables
void setLegalVariables(std::set< std::string > &legalVar)
Definition:
bool_wizardpage.cpp:31
hal::BooleanFunctionEdit::isValid
bool isValid() const
Definition:
bool_wizardpage.h:77
hal::BooleanFunctionEdit::legalVariablesChanged
void legalVariablesChanged(std::set< std::string > legalVar)
hal::BooleanFunctionEdit::state
QString state() const
Definition:
bool_wizardpage.h:74
hal::BooleanFunctionEdit::BooleanFunctionEdit
BooleanFunctionEdit(std::set< std::string > &legalVar, QWidget *parent=nullptr)
Definition:
bool_wizardpage.cpp:11
hal::BooleanFunctionEdit::stateChanged
void stateChanged(QString s)
hal::GateLibraryWizard
Definition:
gatelibrary_wizard.h:50
hal::GateType
Definition:
gate_type.h:52
generalinfo_wizardpage.h
hal
Definition:
defines.h:45
QGridLayout
QLineEdit
QList
QObject::Q_OBJECT
Q_OBJECTQ_OBJECT
QObject::Q_PROPERTY
Q_PROPERTY(...)
QObject::Q_SIGNALS
Q_SIGNALSQ_SIGNALS
QObject::Q_SLOTS
Q_SLOTSQ_SLOTS
QObject::parent
QObject * parent() const const
QString
QWidget
QWizardPage
plugins
gui
include
gui
gatelibrary_management
gatelibrary_pages
bool_wizardpage.h
Generated by
1.9.1