name = "";
width = "1";
direction = Input;
- purpose = Data;
- level = Basic;
+ purpose = Data;
type = Boolean;
+ associatedIface = NULL;
}
-AbstractInterface::AbstractInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose, int _level) {
+AbstractInterface::AbstractInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose) {
owner = _owner;
name = _name;
width = _width;
direction = _direction;
purpose = _purpose;
- level = _level;
- if (direction == InOut) {
- level = Top;
- }
type = typeFromString(_type);
+ associatedIface = NULL;
}
AbstractInterface::AbstractInterface(AbstractInterface* other) {
width = other->width;
direction = other->direction;
purpose = other->purpose;
- level = other->level;
+ associatedIface = NULL;
}
AbstractInterface::~AbstractInterface() {
return str;
}
-QString AbstractInterface::getLevelString() {
- QString str;
- switch(level){
- case AbstractInterface::Basic:
- str = QString("basic");
- break;
- case AbstractInterface::Top:
- str = QString("top");
- break;
- }
- return str;
-}
-
double AbstractInterface::getDoubleWidth() throw(QException) {
static QString fctName = "AbstractInterface::getDoubleWidth()";
if ((_direction > Input) && (_direction <= InOut)) {
direction = _direction;
}
- if (direction == InOut) {
- level = Top;
- }
}
-void AbstractInterface::setLevel(int _level) {
- if ((_level >= Basic) << (_level < Top)) {
- level = _level;
- }
- if (direction == InOut) {
- level = Top;
- }
+bool AbstractInterface::setAssociatedIface(AbstractInterface* iface) {
+ if (purpose != Control) return false;
+ if (iface->purpose != Data) return false;
+ associatedIface = iface;
+ iface->associatedIface = this;
+ return true;
}
-
-int AbstractInterface::getIntDirection(QString str)
-{
+int AbstractInterface::getIntDirection(QString str) {
if(str == "input") return Input;
if(str == "output") return Output;
- if(str == "inOut") return InOut;
+ if(str == "inout") return InOut;
return -1;
}
-int AbstractInterface::getIntLevel(QString str)
-{
- if(str == "basic") return Basic;
- if(str == "top") return Top;
+int AbstractInterface::getIntPurpose(QString str) {
+ if(str == "data") return Data;
+ else if(str == "clock") return Clock;
+ else if(str == "reset") return Reset;
+ else if(str == "wishbone") return Wishbone;
return -1;
}
int AbstractInterface::typeFromString(const QString &_type) {
- int ret;
+ int ret = Expression; // default type
if (_type == "expression") {
ret = Expression;
}
else if (_type == "natural") {
ret = Natural;
}
+ else if (_type == "inherited") {
+ ret = Inherited;
+ }
return ret;
}