vhdlpp: Type 'NATURAL' is translated to 'int unsigned'.
This commit is contained in:
parent
ee840391d6
commit
e569e07d4e
|
|
@ -570,7 +570,7 @@ const VType* ExpAttribute::probe_type(Entity*ent, ScopeBase*scope) const
|
||||||
base_->probe_type(ent, scope);
|
base_->probe_type(ent, scope);
|
||||||
|
|
||||||
if (name_ == "length" || name_ == "left" || name_ == "right") {
|
if (name_ == "length" || name_ == "left" || name_ == "right") {
|
||||||
return &primitive_INTEGER;
|
return &primitive_NATURAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -387,12 +387,11 @@ static void import_std_use(const YYLTYPE&loc, ActiveScope*/*res*/, perm_string p
|
||||||
const VTypePrimitive primitive_BOOLEAN(VTypePrimitive::BOOLEAN, true);
|
const VTypePrimitive primitive_BOOLEAN(VTypePrimitive::BOOLEAN, true);
|
||||||
const VTypePrimitive primitive_BIT(VTypePrimitive::BIT, true);
|
const VTypePrimitive primitive_BIT(VTypePrimitive::BIT, true);
|
||||||
const VTypePrimitive primitive_INTEGER(VTypePrimitive::INTEGER);
|
const VTypePrimitive primitive_INTEGER(VTypePrimitive::INTEGER);
|
||||||
|
const VTypePrimitive primitive_NATURAL(VTypePrimitive::NATURAL);
|
||||||
const VTypePrimitive primitive_REAL(VTypePrimitive::REAL);
|
const VTypePrimitive primitive_REAL(VTypePrimitive::REAL);
|
||||||
const VTypePrimitive primitive_STDLOGIC(VTypePrimitive::STDLOGIC, true);
|
const VTypePrimitive primitive_STDLOGIC(VTypePrimitive::STDLOGIC, true);
|
||||||
const VTypePrimitive primitive_CHARACTER(VTypePrimitive::CHARACTER);
|
const VTypePrimitive primitive_CHARACTER(VTypePrimitive::CHARACTER);
|
||||||
|
|
||||||
const VTypeRange primitive_NATURAL(&primitive_INTEGER, INT64_MAX, 0);
|
|
||||||
|
|
||||||
static const VTypeArray primitive_BIT_VECTOR(&primitive_BIT, vector<VTypeArray::range_t> (1));
|
static const VTypeArray primitive_BIT_VECTOR(&primitive_BIT, vector<VTypeArray::range_t> (1));
|
||||||
static const VTypeArray primitive_BOOL_VECTOR(&primitive_BOOLEAN, vector<VTypeArray::range_t> (1));
|
static const VTypeArray primitive_BOOL_VECTOR(&primitive_BOOLEAN, vector<VTypeArray::range_t> (1));
|
||||||
static const VTypeArray primitive_STRING(&primitive_CHARACTER, vector<VTypeArray::range_t> (1));
|
static const VTypeArray primitive_STRING(&primitive_CHARACTER, vector<VTypeArray::range_t> (1));
|
||||||
|
|
|
||||||
|
|
@ -67,11 +67,14 @@ void VTypePrimitive::show(ostream&out) const
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
out << "INTEGER";
|
out << "INTEGER";
|
||||||
break;
|
break;
|
||||||
|
case NATURAL:
|
||||||
|
out << "NATURAL";
|
||||||
|
break;
|
||||||
case REAL:
|
case REAL:
|
||||||
out << "REAL";
|
out << "REAL";
|
||||||
break;
|
break;
|
||||||
case STDLOGIC:
|
case STDLOGIC:
|
||||||
out << "std_logic";
|
out << "STD_LOGIC";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ class VTypeERROR : public VType {
|
||||||
class VTypePrimitive : public VType {
|
class VTypePrimitive : public VType {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum type_t { BOOLEAN, BIT, INTEGER, REAL, STDLOGIC, CHARACTER };
|
enum type_t { BOOLEAN, BIT, INTEGER, NATURAL, REAL, STDLOGIC, CHARACTER };
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VTypePrimitive(type_t tt, bool packed = false);
|
VTypePrimitive(type_t tt, bool packed = false);
|
||||||
|
|
@ -177,6 +177,7 @@ class VTypePrimitive : public VType {
|
||||||
extern const VTypePrimitive primitive_BOOLEAN;
|
extern const VTypePrimitive primitive_BOOLEAN;
|
||||||
extern const VTypePrimitive primitive_BIT;
|
extern const VTypePrimitive primitive_BIT;
|
||||||
extern const VTypePrimitive primitive_INTEGER;
|
extern const VTypePrimitive primitive_INTEGER;
|
||||||
|
extern const VTypePrimitive primitive_NATURAL;
|
||||||
extern const VTypePrimitive primitive_REAL;
|
extern const VTypePrimitive primitive_REAL;
|
||||||
extern const VTypePrimitive primitive_STDLOGIC;
|
extern const VTypePrimitive primitive_STDLOGIC;
|
||||||
extern const VTypePrimitive primitive_CHARACTER;
|
extern const VTypePrimitive primitive_CHARACTER;
|
||||||
|
|
|
||||||
|
|
@ -154,6 +154,9 @@ int VTypePrimitive::emit_primitive_type(ostream&out) const
|
||||||
case STDLOGIC:
|
case STDLOGIC:
|
||||||
out << "logic";
|
out << "logic";
|
||||||
break;
|
break;
|
||||||
|
case NATURAL:
|
||||||
|
out << "int unsigned";
|
||||||
|
break;
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
out << "int";
|
out << "int";
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,9 @@ void VTypePrimitive::write_to_stream(ostream&fd) const
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
fd << "integer";
|
fd << "integer";
|
||||||
break;
|
break;
|
||||||
|
case NATURAL:
|
||||||
|
fd << "natural";
|
||||||
|
break;
|
||||||
case REAL:
|
case REAL:
|
||||||
fd << "real";
|
fd << "real";
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue