vhdlpp: ScopeBase::is_enum_name checks enums from standard libraries.

This commit is contained in:
Maciej Suminski 2015-06-12 14:18:41 +02:00
parent cc9b182eb6
commit e6b57910a4
3 changed files with 5 additions and 2 deletions

View File

@ -23,6 +23,7 @@
# include "subprogram.h"
# include "entity.h"
# include "std_funcs.h"
# include "std_types.h"
# include <algorithm>
# include <iostream>
# include <iterator>
@ -197,7 +198,7 @@ const VTypeEnum* ScopeBase::is_enum_name(perm_string name) const
return *it;
}
return NULL;
return find_std_enum_name(name);
}
/*

View File

@ -51,6 +51,7 @@ void generate_global_types(ActiveScope*res)
VTypeEnum*enum_BOOLEAN = new VTypeEnum(enum_BOOLEAN_vals);
type_BOOLEAN.set_definition(enum_BOOLEAN);
std_types[type_BOOLEAN.peek_name()] = &type_BOOLEAN;
std_enums.push_back(enum_BOOLEAN);
res->use_name(type_BOOLEAN.peek_name(), &type_BOOLEAN);
res->use_name(perm_string::literal("bit"), &primitive_BIT);
@ -76,7 +77,7 @@ void delete_global_types()
const VTypeEnum*find_std_enum_name(perm_string name)
{
for(list<const VTypeEnum*>::iterator it = std_enums.begin();
for(list<const VTypeEnum*>::const_iterator it = std_enums.begin();
it != std_enums.end(); ++it) {
if((*it)->has_name(name))
return *it;

View File

@ -27,6 +27,7 @@ int emit_packages(void);
void generate_global_types(ActiveScope*res);
bool is_global_type(perm_string type_name);
void delete_global_types();
const VTypeEnum*find_std_enum_name(perm_string name);
extern const VTypePrimitive primitive_BOOLEAN;
extern const VTypePrimitive primitive_BIT;