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);
|
||||
|
||||
if (name_ == "length" || name_ == "left" || name_ == "right") {
|
||||
return &primitive_INTEGER;
|
||||
return &primitive_NATURAL;
|
||||
}
|
||||
|
||||
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_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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue