More identifier lists use perm_strings.

This commit is contained in:
steve 2004-05-25 19:21:06 +00:00
parent 55ba131997
commit e7fa56981a
6 changed files with 105 additions and 89 deletions

View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: Module.h,v 1.35 2004/02/20 18:53:33 steve Exp $" #ident "$Id: Module.h,v 1.36 2004/05/25 19:21:06 steve Exp $"
#endif #endif
# include <list> # include <list>
@ -84,7 +84,7 @@ class Module : public LineInfo {
/* specparams are simpler then other params, in that they have /* specparams are simpler then other params, in that they have
no type information. They are merely constant no type information. They are merely constant
expressions. */ expressions. */
map<string,PExpr*>specparams; map<perm_string,PExpr*>specparams;
/* The module also has defparam assignments which don't create /* The module also has defparam assignments which don't create
new parameters within the module, but may be used to set new parameters within the module, but may be used to set
@ -105,7 +105,7 @@ class Module : public LineInfo {
svector<port_t*> ports; svector<port_t*> ports;
/* Keep a table of named events declared in the module. */ /* Keep a table of named events declared in the module. */
map<string,PEvent*>events; map<perm_string,PEvent*>events;
/* Keep a table of datum variables declared in the module. */ /* Keep a table of datum variables declared in the module. */
map<hname_t,PData*>datum; map<hname_t,PData*>datum;
@ -166,6 +166,9 @@ class Module : public LineInfo {
/* /*
* $Log: Module.h,v $ * $Log: Module.h,v $
* Revision 1.36 2004/05/25 19:21:06 steve
* More identifier lists use perm_strings.
*
* Revision 1.35 2004/02/20 18:53:33 steve * Revision 1.35 2004/02/20 18:53:33 steve
* Addtrbute keys are perm_strings. * Addtrbute keys are perm_strings.
* *

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: elab_scope.cc,v 1.30 2004/02/20 06:22:56 steve Exp $" #ident "$Id: elab_scope.cc,v 1.31 2004/05/25 19:21:06 steve Exp $"
#endif #endif
# include "config.h" # include "config.h"
@ -226,7 +226,7 @@ bool Module::elaborate_scope(Design*des, NetScope*scope) const
// elaboration, so do it now. This allows for normal // elaboration, so do it now. This allows for normal
// elaboration to reference these events. // elaboration to reference these events.
for (map<string,PEvent*>::const_iterator et = events.begin() for (map<perm_string,PEvent*>::const_iterator et = events.begin()
; et != events.end() ; et ++ ) { ; et != events.end() ; et ++ ) {
(*et).second->elaborate_scope(des, scope); (*et).second->elaborate_scope(des, scope);
@ -549,6 +549,9 @@ void PWhile::elaborate_scope(Design*des, NetScope*scope) const
/* /*
* $Log: elab_scope.cc,v $ * $Log: elab_scope.cc,v $
* Revision 1.31 2004/05/25 19:21:06 steve
* More identifier lists use perm_strings.
*
* Revision 1.30 2004/02/20 06:22:56 steve * Revision 1.30 2004/02/20 06:22:56 steve
* parameter keys are per_strings. * parameter keys are per_strings.
* *

49
parse.y
View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: parse.y,v 1.194 2004/05/25 03:42:44 steve Exp $" #ident "$Id: parse.y,v 1.195 2004/05/25 19:21:06 steve Exp $"
#endif #endif
# include "config.h" # include "config.h"
@ -77,7 +77,6 @@ const static struct str_pair_t str_strength = { PGate::STRONG, PGate::STRONG };
/* text items are C strings allocated by the lexor using /* text items are C strings allocated by the lexor using
strdup. They can be put into lists with the texts type. */ strdup. They can be put into lists with the texts type. */
char*text; char*text;
list<char*>*texts;
list<perm_string>*perm_strings; list<perm_string>*perm_strings;
hname_t*hier; hname_t*hier;
@ -169,7 +168,7 @@ const static struct str_pair_t str_strength = { PGate::STRONG, PGate::STRONG };
%type <hier> identifier %type <hier> identifier
%type <text> register_variable %type <text> register_variable
%type <texts> register_variable_list list_of_identifiers %type <perm_strings> register_variable_list list_of_identifiers
%type <net_decl_assign> net_decl_assign net_decl_assigns %type <net_decl_assign> net_decl_assign net_decl_assigns
@ -215,7 +214,7 @@ const static struct str_pair_t str_strength = { PGate::STRONG, PGate::STRONG };
%type <range_delay> range_delay %type <range_delay> range_delay
%type <letter> spec_polarity %type <letter> spec_polarity
%type <texts> specify_path_identifiers %type <perm_strings> specify_path_identifiers
%token K_TAND %token K_TAND
%right '?' ':' %right '?' ':'
@ -1171,14 +1170,16 @@ identifier
non-hierarchical names separated by ',' characters. */ non-hierarchical names separated by ',' characters. */
list_of_identifiers list_of_identifiers
: IDENTIFIER : IDENTIFIER
{ list<char*>*tmp = new list<char*>; { list<perm_string>*tmp = new list<perm_string>;
tmp->push_back($1); tmp->push_back(lex_strings.make($1));
$$ = tmp; $$ = tmp;
delete[]$1;
} }
| list_of_identifiers ',' IDENTIFIER | list_of_identifiers ',' IDENTIFIER
{ list<char*>*tmp = $1; { list<perm_string>*tmp = $1;
tmp->push_back($3); tmp->push_back(lex_strings.make($3));
$$ = tmp; $$ = tmp;
delete[]$3;
} }
; ;
@ -2197,14 +2198,16 @@ register_variable
register_variable_list register_variable_list
: register_variable : register_variable
{ list<char*>*tmp = new list<char*>; { list<perm_string>*tmp = new list<perm_string>;
tmp->push_back($1); tmp->push_back(lex_strings.make($1));
$$ = tmp; $$ = tmp;
delete[]$1;
} }
| register_variable_list ',' register_variable | register_variable_list ',' register_variable
{ list<char*>*tmp = $1; { list<perm_string>*tmp = $1;
tmp->push_back($3); tmp->push_back(lex_strings.make($3));
$$ = tmp; $$ = tmp;
delete[]$3;
} }
; ;
@ -2314,24 +2317,28 @@ specify_simple_path
specify_path_identifiers specify_path_identifiers
: IDENTIFIER : IDENTIFIER
{ list<char*>*tmp = new list<char*>; { list<perm_string>*tmp = new list<perm_string>;
tmp->push_back($1); tmp->push_back(lex_strings.make($1));
$$ = tmp; $$ = tmp;
delete[]$1;
} }
| IDENTIFIER '[' expr_primary ']' | IDENTIFIER '[' expr_primary ']'
{ list<char*>*tmp = new list<char*>; { list<perm_string>*tmp = new list<perm_string>;
tmp->push_back($1); tmp->push_back(lex_strings.make($1));
$$ = tmp; $$ = tmp;
delete[]$1;
} }
| specify_path_identifiers ',' IDENTIFIER | specify_path_identifiers ',' IDENTIFIER
{ list<char*>*tmp = $1; { list<perm_string>*tmp = $1;
tmp->push_back($3); tmp->push_back(lex_strings.make($3));
$$ = tmp; $$ = tmp;
delete[]$3;
} }
| specify_path_identifiers ',' IDENTIFIER '[' expr_primary ']' | specify_path_identifiers ',' IDENTIFIER '[' expr_primary ']'
{ list<char*>*tmp = $1; { list<perm_string>*tmp = $1;
tmp->push_back($3); tmp->push_back(lex_strings.make($3));
$$ = tmp; $$ = tmp;
delete[]$3;
} }
; ;
@ -2344,7 +2351,7 @@ specparam
delete tmp; delete tmp;
tmp = 0; tmp = 0;
} else { } else {
pform_set_specparam($1, tmp); pform_set_specparam(lex_strings.make($1), tmp);
} }
delete $1; delete $1;
} }

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: pform.cc,v 1.124 2004/03/08 00:10:30 steve Exp $" #ident "$Id: pform.cc,v 1.125 2004/05/25 19:21:07 steve Exp $"
#endif #endif
# include "config.h" # include "config.h"
@ -668,7 +668,7 @@ void pform_make_udp(perm_string name, bool synchronous_flag,
* only called by the parser within the scope of the net declaration, * only called by the parser within the scope of the net declaration,
* and the name that I receive only has the tail component. * and the name that I receive only has the tail component.
*/ */
static void pform_set_net_range(const char*name, static void pform_set_net_range(const char* name,
const svector<PExpr*>*range, const svector<PExpr*>*range,
bool signed_flag) bool signed_flag)
{ {
@ -693,18 +693,17 @@ static void pform_set_net_range(const char*name,
cur->set_signed(signed_flag); cur->set_signed(signed_flag);
} }
void pform_set_net_range(list<char*>*names, void pform_set_net_range(list<perm_string>*names,
svector<PExpr*>*range, svector<PExpr*>*range,
bool signed_flag) bool signed_flag)
{ {
assert((range == 0) || (range->count() == 2)); assert((range == 0) || (range->count() == 2));
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
pform_set_net_range(txt, range, signed_flag); pform_set_net_range(txt, range, signed_flag);
free(txt);
} }
delete names; delete names;
@ -716,27 +715,26 @@ void pform_set_net_range(list<char*>*names,
* This is invoked to make a named event. This is the declaration of * This is invoked to make a named event. This is the declaration of
* the event, and not necessarily the use of it. * the event, and not necessarily the use of it.
*/ */
static void pform_make_event(const char*name, const char*fn, unsigned ln) static void pform_make_event(perm_string name, const char*fn, unsigned ln)
{ {
PEvent*event = new PEvent(lex_strings.make(name)); PEvent*event = new PEvent(name);
event->set_file(fn); event->set_file(fn);
event->set_lineno(ln); event->set_lineno(ln);
pform_cur_module->events[name] = event; pform_cur_module->events[name] = event;
} }
void pform_make_events(list<char*>*names, const char*fn, unsigned ln) void pform_make_events(list<perm_string>*names, const char*fn, unsigned ln)
{ {
list<char*>::iterator cur; list<perm_string>::iterator cur;
for (cur = names->begin() ; cur != names->end() ; cur++) { for (cur = names->begin() ; cur != names->end() ; cur++) {
char*txt = *cur; perm_string txt = *cur;
pform_make_event(txt, fn, ln); pform_make_event(txt, fn, ln);
free(txt);
} }
delete names; delete names;
} }
static void pform_make_datum(const char*name, const char*fn, unsigned ln) static void pform_make_datum(perm_string name, const char*fn, unsigned ln)
{ {
hname_t hname = hier_name(name); hname_t hname = hier_name(name);
PData*datum = new PData(hname); PData*datum = new PData(hname);
@ -745,13 +743,12 @@ static void pform_make_datum(const char*name, const char*fn, unsigned ln)
pform_cur_module->datum[hname] = datum; pform_cur_module->datum[hname] = datum;
} }
void pform_make_reals(list<char*>*names, const char*fn, unsigned ln) void pform_make_reals(list<perm_string>*names, const char*fn, unsigned ln)
{ {
list<char*>::iterator cur; list<perm_string>::iterator cur;
for (cur = names->begin() ; cur != names->end() ; cur++) { for (cur = names->begin() ; cur != names->end() ; cur++) {
char*txt = *cur; perm_string txt = *cur;
pform_make_datum(txt, fn, ln); pform_make_datum(txt, fn, ln);
free(txt);
} }
delete names; delete names;
@ -1131,18 +1128,17 @@ void pform_makewire(const vlltype&li, const char*nm,
void pform_makewire(const vlltype&li, void pform_makewire(const vlltype&li,
svector<PExpr*>*range, svector<PExpr*>*range,
bool signed_flag, bool signed_flag,
list<char*>*names, list<perm_string>*names,
NetNet::Type type, NetNet::Type type,
NetNet::PortType pt, NetNet::PortType pt,
svector<named_pexpr_t*>*attr) svector<named_pexpr_t*>*attr)
{ {
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
pform_makewire(li, txt, type, pt, attr); pform_makewire(li, txt, type, pt, attr);
pform_set_net_range(txt, range, signed_flag); pform_set_net_range(txt, range, signed_flag);
free(txt);
} }
delete names; delete names;
@ -1182,7 +1178,7 @@ void pform_makewire(const vlltype&li,
} }
} }
void pform_set_port_type(const char*nm, NetNet::PortType pt, void pform_set_port_type(perm_string nm, NetNet::PortType pt,
const char*file, unsigned lineno) const char*file, unsigned lineno)
{ {
hname_t name = hier_name(nm); hname_t name = hier_name(nm);
@ -1259,16 +1255,16 @@ void pform_set_port_type(const char*nm, NetNet::PortType pt,
svector<PWire*>*pform_make_task_ports(NetNet::PortType pt, svector<PWire*>*pform_make_task_ports(NetNet::PortType pt,
bool signed_flag, bool signed_flag,
svector<PExpr*>*range, svector<PExpr*>*range,
list<char*>*names, list<perm_string>*names,
const char* file, const char* file,
unsigned lineno) unsigned lineno)
{ {
assert(names); assert(names);
svector<PWire*>*res = new svector<PWire*>(0); svector<PWire*>*res = new svector<PWire*>(0);
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur ++ ) { ; cur != names->end() ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
hname_t name = hier_name(txt); hname_t name = hier_name(txt);
/* Look for a preexisting wire. If it exists, set the /* Look for a preexisting wire. If it exists, set the
@ -1291,7 +1287,6 @@ svector<PWire*>*pform_make_task_ports(NetNet::PortType pt,
svector<PWire*>*tmp = new svector<PWire*>(*res, curw); svector<PWire*>*tmp = new svector<PWire*>(*res, curw);
free(txt);
delete res; delete res;
res = tmp; res = tmp;
} }
@ -1424,7 +1419,7 @@ void pform_set_localparam(perm_string name, PExpr*expr)
pform_cur_module->localparams[name].signed_flag = false; pform_cur_module->localparams[name].signed_flag = false;
} }
void pform_set_specparam(const string&name, PExpr*expr) void pform_set_specparam(perm_string name, PExpr*expr)
{ {
assert(expr); assert(expr);
pform_cur_module->specparams[name] = expr; pform_cur_module->specparams[name] = expr;
@ -1439,27 +1434,26 @@ void pform_set_defparam(const hname_t&name, PExpr*expr)
/* /*
* XXXX Not implemented yet. * XXXX Not implemented yet.
*/ */
extern void pform_make_specify_path(list<char*>*src, char pol, extern void pform_make_specify_path(list<perm_string>*src, char pol,
bool full_flag, list<char*>*dst) bool full_flag, list<perm_string>*dst)
{ {
delete src; delete src;
delete dst; delete dst;
} }
void pform_set_port_type(const struct vlltype&li, void pform_set_port_type(const struct vlltype&li,
list<char*>*names, list<perm_string>*names,
svector<PExpr*>*range, svector<PExpr*>*range,
bool signed_flag, bool signed_flag,
NetNet::PortType pt) NetNet::PortType pt)
{ {
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
pform_set_port_type(txt, pt, li.text, li.first_line); pform_set_port_type(txt, pt, li.text, li.first_line);
if (range) if (range)
pform_set_net_range(txt, range, signed_flag); pform_set_net_range(txt, range, signed_flag);
free(txt);
} }
delete names; delete names;
@ -1487,14 +1481,13 @@ static void pform_set_reg_integer(const char*nm)
cur->set_signed(true); cur->set_signed(true);
} }
void pform_set_reg_integer(list<char*>*names) void pform_set_reg_integer(list<perm_string>*names)
{ {
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
pform_set_reg_integer(txt); pform_set_reg_integer(txt);
free(txt);
} }
delete names; delete names;
} }
@ -1516,31 +1509,31 @@ static void pform_set_reg_time(const char*nm)
new PENumber(new verinum(0UL, INTEGER_WIDTH))); new PENumber(new verinum(0UL, INTEGER_WIDTH)));
} }
void pform_set_reg_time(list<char*>*names) void pform_set_reg_time(list<perm_string>*names)
{ {
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
pform_set_reg_time(txt); pform_set_reg_time(txt);
free(txt);
} }
delete names; delete names;
} }
svector<PWire*>* pform_make_udp_input_ports(list<char*>*names) svector<PWire*>* pform_make_udp_input_ports(list<perm_string>*names)
{ {
svector<PWire*>*out = new svector<PWire*>(names->size()); svector<PWire*>*out = new svector<PWire*>(names->size());
unsigned idx = 0; unsigned idx = 0;
for (list<char*>::iterator cur = names->begin() for (list<perm_string>::iterator cur = names->begin()
; cur != names->end() ; cur != names->end()
; cur ++ ) { ; cur ++ ) {
char*txt = *cur; perm_string txt = *cur;
PWire*pp = new PWire(txt, NetNet::IMPLICIT, NetNet::PINPUT); PWire*pp = new PWire(hname_t(txt),
NetNet::IMPLICIT,
NetNet::PINPUT);
(*out)[idx] = pp; (*out)[idx] = pp;
idx += 1; idx += 1;
free(txt);
} }
delete names; delete names;
@ -1605,6 +1598,9 @@ int pform_parse(const char*path, FILE*file)
/* /*
* $Log: pform.cc,v $ * $Log: pform.cc,v $
* Revision 1.125 2004/05/25 19:21:07 steve
* More identifier lists use perm_strings.
*
* Revision 1.124 2004/03/08 00:10:30 steve * Revision 1.124 2004/03/08 00:10:30 steve
* Verilog2001 new style port declartions for primitives. * Verilog2001 new style port declartions for primitives.
* *

32
pform.h
View File

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: pform.h,v 1.77 2004/03/08 00:10:30 steve Exp $" #ident "$Id: pform.h,v 1.78 2004/05/25 19:21:07 steve Exp $"
#endif #endif
# include "netlist.h" # include "netlist.h"
@ -172,7 +172,7 @@ extern void pform_makewire(const struct vlltype&li, const char*name,
extern void pform_makewire(const struct vlltype&li, extern void pform_makewire(const struct vlltype&li,
svector<PExpr*>*range, svector<PExpr*>*range,
bool signed_flag, bool signed_flag,
list<char*>*names, list<perm_string>*names,
NetNet::Type type, NetNet::Type type,
NetNet::PortType, NetNet::PortType,
svector<named_pexpr_t*>*attr); svector<named_pexpr_t*>*attr);
@ -190,17 +190,18 @@ extern void pform_make_reginit(const struct vlltype&li,
i.e. input, output or inout. If the wire does not exist, create i.e. input, output or inout. If the wire does not exist, create
it. The second form takes a single name. */ it. The second form takes a single name. */
extern void pform_set_port_type(const struct vlltype&li, extern void pform_set_port_type(const struct vlltype&li,
list<char*>*names, list<perm_string>*names,
svector<PExpr*>*range, svector<PExpr*>*range,
bool signed_flag, bool signed_flag,
NetNet::PortType); NetNet::PortType);
extern void pform_set_port_type(const char*nm, NetNet::PortType pt, extern void pform_set_port_type(perm_string nm, NetNet::PortType pt,
const char*file, unsigned lineno); const char*file, unsigned lineno);
extern void pform_set_net_range(list<char*>*names, svector<PExpr*>*, bool); extern void pform_set_net_range(list<perm_string>*names,
svector<PExpr*>*, bool);
extern void pform_set_reg_idx(const char*name, PExpr*l, PExpr*r); extern void pform_set_reg_idx(const char*name, PExpr*l, PExpr*r);
extern void pform_set_reg_integer(list<char*>*names); extern void pform_set_reg_integer(list<perm_string>*names);
extern void pform_set_reg_time(list<char*>*names); extern void pform_set_reg_time(list<perm_string>*names);
extern void pform_set_task(perm_string name, PTask*); extern void pform_set_task(perm_string name, PTask*);
extern void pform_set_function(const char*, NetNet::Type, extern void pform_set_function(const char*, NetNet::Type,
svector<PExpr*>*, PFunction*); svector<PExpr*>*, PFunction*);
@ -224,9 +225,9 @@ extern void pform_set_defparam(const hname_t&name, PExpr*expr);
/* /*
* Functions related to specify blocks. * Functions related to specify blocks.
*/ */
extern void pform_set_specparam(const string&name, PExpr*expr); extern void pform_set_specparam(perm_string name, PExpr*expr);
extern void pform_make_specify_path(list<char*>*src, char pol, extern void pform_make_specify_path(list<perm_string>*src, char pol,
bool full_flag, list<char*>*dst); bool full_flag, list<perm_string>*dst);
/* /*
* pform_make_behavior creates processes that are declared with always * pform_make_behavior creates processes that are declared with always
@ -235,16 +236,16 @@ extern void pform_make_specify_path(list<char*>*src, char pol,
extern PProcess* pform_make_behavior(PProcess::Type, Statement*, extern PProcess* pform_make_behavior(PProcess::Type, Statement*,
svector<named_pexpr_t*>*attr); svector<named_pexpr_t*>*attr);
extern svector<PWire*>* pform_make_udp_input_ports(list<char*>*); extern svector<PWire*>* pform_make_udp_input_ports(list<perm_string>*);
extern bool pform_expression_is_constant(const PExpr*); extern bool pform_expression_is_constant(const PExpr*);
extern void pform_make_events(list<char*>*names, extern void pform_make_events(list<perm_string>*names,
const char*file, unsigned lineno); const char*file, unsigned lineno);
/* /*
* Make real datum objects. * Make real datum objects.
*/ */
extern void pform_make_reals(list<char*>*names, extern void pform_make_reals(list<perm_string>*names,
const char*file, unsigned lineno); const char*file, unsigned lineno);
/* /*
@ -275,7 +276,7 @@ extern void pform_make_pgassign_list(svector<PExpr*>*alist,
extern svector<PWire*>*pform_make_task_ports(NetNet::PortType pt, extern svector<PWire*>*pform_make_task_ports(NetNet::PortType pt,
bool signed_flag, bool signed_flag,
svector<PExpr*>*range, svector<PExpr*>*range,
list<char*>*names, list<perm_string>*names,
const char* file, const char* file,
unsigned lineno); unsigned lineno);
@ -290,6 +291,9 @@ extern void pform_dump(ostream&out, Module*mod);
/* /*
* $Log: pform.h,v $ * $Log: pform.h,v $
* Revision 1.78 2004/05/25 19:21:07 steve
* More identifier lists use perm_strings.
*
* Revision 1.77 2004/03/08 00:10:30 steve * Revision 1.77 2004/03/08 00:10:30 steve
* Verilog2001 new style port declartions for primitives. * Verilog2001 new style port declartions for primitives.
* *

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#ifdef HAVE_CVS_IDENT #ifdef HAVE_CVS_IDENT
#ident "$Id: pform_dump.cc,v 1.85 2004/02/20 18:53:35 steve Exp $" #ident "$Id: pform_dump.cc,v 1.86 2004/05/25 19:21:07 steve Exp $"
#endif #endif
# include "config.h" # include "config.h"
@ -756,7 +756,7 @@ void Module::dump(ostream&out) const
out << "/* ERROR */;" << endl; out << "/* ERROR */;" << endl;
} }
typedef map<string,PExpr*>::const_iterator specparm_iter_t; typedef map<perm_string,PExpr*>::const_iterator specparm_iter_t;
for (specparm_iter_t cur = specparams.begin() for (specparm_iter_t cur = specparams.begin()
; cur != specparams.end() ; cur ++) { ; cur != specparams.end() ; cur ++) {
out << " specparam " << (*cur).first << " = " out << " specparam " << (*cur).first << " = "
@ -772,7 +772,7 @@ void Module::dump(ostream&out) const
out << "/* ERROR */;" << endl; out << "/* ERROR */;" << endl;
} }
for (map<string,PEvent*>::const_iterator cur = events.begin() for (map<perm_string,PEvent*>::const_iterator cur = events.begin()
; cur != events.end() ; cur ++ ) { ; cur != events.end() ; cur ++ ) {
PEvent*ev = (*cur).second; PEvent*ev = (*cur).second;
out << " event " << ev->name() << "; // " out << " event " << ev->name() << "; // "
@ -881,6 +881,9 @@ void PUdp::dump(ostream&out) const
/* /*
* $Log: pform_dump.cc,v $ * $Log: pform_dump.cc,v $
* Revision 1.86 2004/05/25 19:21:07 steve
* More identifier lists use perm_strings.
*
* Revision 1.85 2004/02/20 18:53:35 steve * Revision 1.85 2004/02/20 18:53:35 steve
* Addtrbute keys are perm_strings. * Addtrbute keys are perm_strings.
* *