Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
RegisterInterface.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: RegisterInterface.h
3//-----------------------------------------------------------------------------
4// Project: Kactus2
5// Author: Mikko Teuho
6// Date: 27.04.2020
7//
8// Description:
9// Interface for editing registers.
10//-----------------------------------------------------------------------------
11
12#ifndef REGISTERINTERFACE_H
13#define REGISTERINTERFACE_H
14
15#include <KactusAPI/KactusAPIGlobal.h>
16
18#include <NameGroupInterface.h>
19
20#include <IPXACTmodels/common/AccessTypes.h>
21
22class Register;
23class RegisterBase;
24class RegisterValidator;
25class FieldInterface;
27
28#include <QVector>
29#include <QMap>
30
31//-----------------------------------------------------------------------------
33//-----------------------------------------------------------------------------
35{
36
37public:
38
47 RegisterInterface(QSharedPointer<RegisterValidator> validator,
48 QSharedPointer<ExpressionParser> expressionParser,
49 QSharedPointer<ExpressionFormatter> expressionFormatter,
50 FieldInterface* subInterface,
51 AccessPolicyInterface* accessPolicyInterface);
52
56 virtual ~RegisterInterface() = default;
57
63 void setRegisters(QSharedPointer<QList<QSharedPointer<RegisterBase> > > newRegisterData);
64
72 virtual int getItemIndex(std::string const& itemName) const override final;
73
81 std::string getIndexedItemName(int itemIndex) const final;
82
88 virtual int itemCount() const override final;
89
95 int registerDataCount() const;
96
104 int indexInRegisterData(int const& index) const;
105
111 virtual std::vector<std::string> getItemNames() const override final;
112
121 virtual bool setName(std::string const& currentName, std::string const& newName) override final;
122
131 std::string getOffsetValue(std::string const& registerName, int const& baseNumber = 0) const;
132
140 std::string getOffsetFormattedExpression(std::string const& registerName) const;
141
149 std::string getOffsetExpression(std::string const& registerName) const;
150
159 bool setOffset(std::string const& registerName, std::string const& newOffset);
160
169 std::string getDimensionValue(std::string const& registerName, int const& baseNumber = 0) const;
170
178 std::string getDimensionFormattedExpression(std::string const& registerName) const;
179
187 std::string getDimensionExpression(std::string const& registerName) const;
188
197 bool setDimension(std::string const& registerName, std::string const& newDimension);
198
207 std::string getIsPresentValue(std::string const& registerName, int const& baseNumber = 0) const;
208
216 std::string getIsPresentFormattedExpression(std::string const& registerName) const;
217
225 std::string getIsPresentExpression(std::string const& registerName) const;
226
235 bool setIsPresent(std::string const& registerName, std::string const& newIsPresent);
236
245 std::string getSizeValue(std::string const& registerName, int const& baseNumber = 0) const;
246
254 std::string getSizeFormattedExpression(std::string const& registerName) const;
255
263 std::string getSizeExpression(std::string const& registerName) const;
264
273 bool setSize(std::string const& registerName, std::string const& newSize);
274
282 std::string getVolatile(std::string const& registerName) const;
283
292 bool setVolatile(std::string const& registerName, std::string const& newVolatile);
293
303 std::string getAccessString(std::string const& registerName, bool getAccessPolicyAccess = false) const;
304
313 AccessTypes::Access getAccess(std::string const& registerName) const;
314
325 bool setAccess(std::string const& registerName, std::string const& newAccess, bool setAccessPolicyAccess = false);
326
334 int getAccessPolicyCount(std::string const& registerName) const;
335
343 bool addAccessPolicy(std::string const& registerName);
344
353 virtual int getAllReferencesToIdInItem(const std::string& itemName, std::string const& valueID) const override
354 final;
355
361 virtual bool validateItems() const override final;
362
370 virtual bool itemHasValidName(std::string const& itemName) const override final;
371
379 bool hasValidDimension(std::string const& registerName) const;
380
388 bool hasValidOffset(std::string const& registerName) const;
389
397 bool hasValidIsPresent(std::string const& registerName) const;
398
406 bool hasValidSize(std::string const& registerName) const;
407
415 void addRegister(int const& row, int const& dataIndex, std::string const& newRegisterName = std::string(""));
416
423 void addRegister(std::string const& newRegisterName = std::string(""));
424
433 bool removeRegister(std::string const& registerName, int const& dataIndex);
434
440 void copyRows(std::vector<int> const& selectedRows);
441
447 std::vector<std::string> pasteRows();
448
454 int getPasteRowCount() const;
455
463 std::vector<std::string> getExpressionsInSelectedRegisters(std::vector<std::string> const& registerNames) const;
464
470 void setAddressUnitBits(int const& newAddressUnitbits);
471
478
485
486private:
487
495 QSharedPointer<Register> getRegister(std::string const& registerName) const;
496
504 QSharedPointer<NameGroup> getItem(std::string const& registerName) const;
505
511 QString getNextRegisterOffset() const;
512
513 //-----------------------------------------------------------------------------
514 // Data.
515 //-----------------------------------------------------------------------------
516
518 QSharedPointer<QList<QSharedPointer<RegisterBase> > > registerData_;
519
521 QList<QSharedPointer<Register> > registers_;
522
524 QSharedPointer<RegisterValidator> validator_;
525
527 FieldInterface* subInterface_;
528
530 AccessPolicyInterface* accessPolicyInterface_;
531
533 unsigned int addressUnitBits_;
534};
535
536#endif // REGISTERINTERFACE_H
Interface for editing access policies.
Interface for editing fields.
ParameterizableInterface(QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter)
bool setAccess(std::string const &registerName, std::string const &newAccess, bool setAccessPolicyAccess=false)
bool hasValidOffset(std::string const &registerName) const
bool setDimension(std::string const &registerName, std::string const &newDimension)
virtual int itemCount() const override final
std::string getDimensionExpression(std::string const &registerName) const
std::string getIndexedItemName(int itemIndex) const final
int registerDataCount() const
std::string getSizeFormattedExpression(std::string const &registerName) const
std::string getIsPresentFormattedExpression(std::string const &registerName) const
std::string getVolatile(std::string const &registerName) const
bool removeRegister(std::string const &registerName, int const &dataIndex)
bool setSize(std::string const &registerName, std::string const &newSize)
virtual int getAllReferencesToIdInItem(const std::string &itemName, std::string const &valueID) const override final
virtual ~RegisterInterface()=default
std::string getIsPresentExpression(std::string const &registerName) const
std::string getAccessString(std::string const &registerName, bool getAccessPolicyAccess=false) const
std::vector< std::string > getExpressionsInSelectedRegisters(std::vector< std::string > const &registerNames) const
virtual int getItemIndex(std::string const &itemName) const override final
bool hasValidSize(std::string const &registerName) const
std::string getOffsetFormattedExpression(std::string const &registerName) const
RegisterInterface(QSharedPointer< RegisterValidator > validator, QSharedPointer< ExpressionParser > expressionParser, QSharedPointer< ExpressionFormatter > expressionFormatter, FieldInterface *subInterface, AccessPolicyInterface *accessPolicyInterface)
std::vector< std::string > pasteRows()
bool setVolatile(std::string const &registerName, std::string const &newVolatile)
virtual bool itemHasValidName(std::string const &itemName) const override final
void addRegister(int const &row, int const &dataIndex, std::string const &newRegisterName=std::string(""))
std::string getDimensionFormattedExpression(std::string const &registerName) const
virtual std::vector< std::string > getItemNames() const override final
bool hasValidIsPresent(std::string const &registerName) const
bool addAccessPolicy(std::string const &registerName)
int getPasteRowCount() const
void copyRows(std::vector< int > const &selectedRows)
int indexInRegisterData(int const &index) const
std::string getOffsetValue(std::string const &registerName, int const &baseNumber=0) const
AccessTypes::Access getAccess(std::string const &registerName) const
bool hasValidDimension(std::string const &registerName) const
std::string getIsPresentValue(std::string const &registerName, int const &baseNumber=0) const
int getAccessPolicyCount(std::string const &registerName) const
void setRegisters(QSharedPointer< QList< QSharedPointer< RegisterBase > > > newRegisterData)
std::string getSizeExpression(std::string const &registerName) const
AccessPolicyInterface * getAccessPolicyInterface() const
virtual bool validateItems() const override final
virtual bool setName(std::string const &currentName, std::string const &newName) override final
std::string getDimensionValue(std::string const &registerName, int const &baseNumber=0) const
FieldInterface * getSubInterface() const
bool setIsPresent(std::string const &registerName, std::string const &newIsPresent)
std::string getOffsetExpression(std::string const &registerName) const
bool setOffset(std::string const &registerName, std::string const &newOffset)
void setAddressUnitBits(int const &newAddressUnitbits)
std::string getSizeValue(std::string const &registerName, int const &baseNumber=0) const