vhdlpp: Type 'NATURAL' is translated to 'int unsigned'.

This commit is contained in:
Maciej Suminski 2015-02-17 14:58:33 +01:00
parent ee840391d6
commit e569e07d4e
6 changed files with 14 additions and 5 deletions

View File

@ -570,7 +570,7 @@ const VType* ExpAttribute::probe_type(Entity*ent, ScopeBase*scope) const
base_->probe_type(ent, scope);
if (name_ == "length" || name_ == "left" || name_ == "right") {
return &primitive_INTEGER;
return &primitive_NATURAL;
}
return 0;

View File

@ -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_BIT(VTypePrimitive::BIT, true);
const VTypePrimitive primitive_INTEGER(VTypePrimitive::INTEGER);
const VTypePrimitive primitive_NATURAL(VTypePrimitive::NATURAL);
const VTypePrimitive primitive_REAL(VTypePrimitive::REAL);
const VTypePrimitive primitive_STDLOGIC(VTypePrimitive::STDLOGIC, true);
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_BOOL_VECTOR(&primitive_BOOLEAN, vector<VTypeArray::range_t> (1));
static const VTypeArray primitive_STRING(&primitive_CHARACTER, vector<VTypeArray::range_t> (1));

View File

@ -67,11 +67,14 @@ void VTypePrimitive::show(ostream&out) const
case INTEGER:
out << "INTEGER";
break;
case NATURAL:
out << "NATURAL";
break;
case REAL:
out << "REAL";
break;
case STDLOGIC:
out << "std_logic";
out << "STD_LOGIC";
break;
}
}

View File

@ -151,7 +151,7 @@ class VTypeERROR : public VType {
class VTypePrimitive : public VType {
public:
enum type_t { BOOLEAN, BIT, INTEGER, REAL, STDLOGIC, CHARACTER };
enum type_t { BOOLEAN, BIT, INTEGER, NATURAL, REAL, STDLOGIC, CHARACTER };
public:
VTypePrimitive(type_t tt, bool packed = false);
@ -177,6 +177,7 @@ class VTypePrimitive : public VType {
extern const VTypePrimitive primitive_BOOLEAN;
extern const VTypePrimitive primitive_BIT;
extern const VTypePrimitive primitive_INTEGER;
extern const VTypePrimitive primitive_NATURAL;
extern const VTypePrimitive primitive_REAL;
extern const VTypePrimitive primitive_STDLOGIC;
extern const VTypePrimitive primitive_CHARACTER;

View File

@ -154,6 +154,9 @@ int VTypePrimitive::emit_primitive_type(ostream&out) const
case STDLOGIC:
out << "logic";
break;
case NATURAL:
out << "int unsigned";
break;
case INTEGER:
out << "int";
break;

View File

@ -140,6 +140,9 @@ void VTypePrimitive::write_to_stream(ostream&fd) const
case INTEGER:
fd << "integer";
break;
case NATURAL:
fd << "natural";
break;
case REAL:
fd << "real";
break;