diff --git a/vhdlpp/expression_emit.cc b/vhdlpp/expression_emit.cc index 09ac0654d..8874da8e6 100644 --- a/vhdlpp/expression_emit.cc +++ b/vhdlpp/expression_emit.cc @@ -931,7 +931,7 @@ int ExpString::emit_as_array_(ostream& out, Entity*, ScopeBase*, const VTypeArra // Detect the special case that this is an array of // CHARACTER. In this case, emit at a Verilog string. - if (etype->type()==VTypePrimitive::CHARACTER) { + if (arr->element_type() == &primitive_CHARACTER) { vector tmp (value_.size() + 3); tmp[0] = '"'; memcpy(&tmp[1], &value_[0], value_.size()); diff --git a/vhdlpp/std_types.cc b/vhdlpp/std_types.cc index 20acb42a6..311c74f1e 100644 --- a/vhdlpp/std_types.cc +++ b/vhdlpp/std_types.cc @@ -30,11 +30,11 @@ 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 VTypePrimitive primitive_TIME(VTypePrimitive::TIME); VTypeDef type_BOOLEAN(perm_string::literal("boolean")); +const VTypeArray primitive_CHARACTER(&primitive_BIT, 7, 0); const VTypeArray primitive_BIT_VECTOR(&primitive_BIT, vector (1)); const VTypeArray primitive_BOOL_VECTOR(&type_BOOLEAN, vector (1)); const VTypeArray primitive_STDLOGIC_VECTOR(&primitive_STDLOGIC, vector (1)); diff --git a/vhdlpp/std_types.h b/vhdlpp/std_types.h index b38003cf4..72bfa2075 100644 --- a/vhdlpp/std_types.h +++ b/vhdlpp/std_types.h @@ -35,11 +35,11 @@ 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; extern const VTypePrimitive primitive_TIME; extern VTypeDef type_BOOLEAN; +extern const VTypeArray primitive_CHARACTER; extern const VTypeArray primitive_BIT_VECTOR; extern const VTypeArray primitive_BOOL_VECTOR; extern const VTypeArray primitive_STDLOGIC_VECTOR; diff --git a/vhdlpp/vtype.cc b/vhdlpp/vtype.cc index 0e6c1b47d..730eb00a9 100644 --- a/vhdlpp/vtype.cc +++ b/vhdlpp/vtype.cc @@ -58,9 +58,6 @@ void VTypePrimitive::show(ostream&out) const case BIT: out << "BIT"; break; - case CHARACTER: - out << "CHARACTER"; - break; case INTEGER: out << "INTEGER"; break; @@ -90,9 +87,6 @@ int VTypePrimitive::get_width(ScopeBase*) const case NATURAL: return 32; - case CHARACTER: - return 8; - default: std::cerr << "sorry: primitive type " << type_ << " has no get_width() implementation." << std::endl; diff --git a/vhdlpp/vtype.h b/vhdlpp/vtype.h index f9ffc2186..bf4968b14 100644 --- a/vhdlpp/vtype.h +++ b/vhdlpp/vtype.h @@ -156,7 +156,7 @@ class VTypeERROR : public VType { class VTypePrimitive : public VType { public: - enum type_t { BIT, INTEGER, NATURAL, REAL, STDLOGIC, CHARACTER, TIME }; + enum type_t { BIT, INTEGER, NATURAL, REAL, STDLOGIC, TIME }; public: VTypePrimitive(type_t tt, bool packed = false); diff --git a/vhdlpp/vtype_emit.cc b/vhdlpp/vtype_emit.cc index 35d3ef2e6..9287a46c0 100644 --- a/vhdlpp/vtype_emit.cc +++ b/vhdlpp/vtype_emit.cc @@ -163,9 +163,6 @@ int VTypePrimitive::emit_primitive_type(ostream&out) const case REAL: out << "real"; break; - case CHARACTER: - out << "byte"; - break; case TIME: out << "time"; break; diff --git a/vhdlpp/vtype_stream.cc b/vhdlpp/vtype_stream.cc index 1394ccd06..0b4a12f1e 100644 --- a/vhdlpp/vtype_stream.cc +++ b/vhdlpp/vtype_stream.cc @@ -161,9 +161,6 @@ void VTypePrimitive::write_to_stream(ostream&fd) const case STDLOGIC: fd << "std_logic"; break; - case CHARACTER: - fd << "character"; - break; case TIME: fd << "time"; break;