From c2e8062f844ce9cb97f6877dd66b744f20dddc83 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 23 Sep 2017 07:32:37 -0400 Subject: [PATCH] Verilated headers no longer "use namespace std;" --- Changes | 3 ++ include/verilated.cpp | 86 ++++++++++++++++----------------- include/verilated.h | 1 - include/verilated_cov.cpp | 84 ++++++++++++++++---------------- include/verilated_cov.h | 5 +- include/verilated_cov_key.h | 3 +- include/verilated_dpi.cpp | 2 +- include/verilated_heavy.h | 34 ++++++------- include/verilated_imp.h | 26 +++++----- include/verilated_save.cpp | 16 +++--- include/verilated_save.h | 13 +++-- include/verilated_syms.h | 5 +- include/verilated_vcd_c.cpp | 44 ++++++++--------- include/verilated_vcd_c.h | 34 ++++++------- include/verilated_vpi.cpp | 10 ++-- include/verilated_vpi.h | 29 +++++------ src/V3AstNodes.cpp | 2 +- src/V3EmitC.cpp | 8 +-- test_regress/t/t_dpi_var.cpp | 6 +-- test_regress/t/t_vpi_unimpl.cpp | 8 +-- 20 files changed, 210 insertions(+), 209 deletions(-) diff --git a/Changes b/Changes index a19916036..3a133d01f 100644 --- a/Changes +++ b/Changes @@ -4,6 +4,9 @@ The contributors that suggested a given feature are shown in []. Thanks! * Verilator 3.911 devel +** Verilated headers no longer "use namespace std;" + User's code without "std::" prefixes may need "use namespace std;" to compile. + *** Support or/and/xor array intrinsic methods, bug1210. [Mike Popoloski] *** Support package export, bug1217. [Usuario Eda] diff --git a/include/verilated.cpp b/include/verilated.cpp index 3b7e4ae81..471d0a4cc 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -364,7 +364,7 @@ QData VL_POWSS_QQW(int obits, int, int rbits, QData lhs, WDataInP rwp, bool lsig // Do a va_arg returning a quad, assuming input argument is anything less than wide #define _VL_VA_ARG_Q(ap, bits) (((bits) <= VL_WORDSIZE) ? va_arg(ap,IData) : va_arg(ap,QData)) -void _vl_vsformat(string& output, const char* formatp, va_list ap) { +void _vl_vsformat(std::string& output, const char* formatp, va_list ap) { // Format a Verilog $write style format into the output list // The format must be pre-processed (and lower cased) by Verilator // Arguments are in "width, arg-value (or WDataIn* if wide)" form @@ -420,7 +420,7 @@ void _vl_vsformat(string& output, const char* formatp, va_list ap) { } case '@': { // Verilog/C++ string va_arg(ap, int); // # bits is ignored - const string* cstrp = va_arg(ap, const string*); + const std::string* cstrp = va_arg(ap, const std::string*); output += *cstrp; break; } @@ -559,7 +559,7 @@ void _vl_vsformat(string& output, const char* formatp, va_list ap) { } break; default: - string msg = string("Unknown _vl_vsformat code: ")+pos[0]; + std::string msg = std::string("Unknown _vl_vsformat code: ")+pos[0]; vl_fatal(__FILE__,__LINE__,"",msg.c_str()); break; } // switch @@ -577,7 +577,7 @@ static inline void _vl_vsss_advance(FILE* fp, int& floc) { if (fp) fgetc(fp); else floc -= 8; } -static inline int _vl_vsss_peek(FILE* fp, int& floc, WDataInP fromp, const string& fstr) { +static inline int _vl_vsss_peek(FILE* fp, int& floc, WDataInP fromp, const std::string& fstr) { // Get a character without advancing if (fp) { int data = fgetc(fp); @@ -594,14 +594,14 @@ static inline int _vl_vsss_peek(FILE* fp, int& floc, WDataInP fromp, const stri } } } -static inline void _vl_vsss_skipspace(FILE* fp, int& floc, WDataInP fromp, const string& fstr) { +static inline void _vl_vsss_skipspace(FILE* fp, int& floc, WDataInP fromp, const std::string& fstr) { while (1) { int c = _vl_vsss_peek(fp, floc, fromp, fstr); if (c==EOF || !isspace(c)) return; _vl_vsss_advance(fp, floc); } } -static inline void _vl_vsss_read(FILE* fp, int& floc, WDataInP fromp, const string& fstr, +static inline void _vl_vsss_read(FILE* fp, int& floc, WDataInP fromp, const std::string& fstr, char* tmpp, const char* acceptp) { // Read into tmp, consisting of characters from acceptp list char* cp = tmpp; @@ -651,7 +651,7 @@ static inline void _vl_vsss_based(WDataOutP owp, int obits, int baseLog2, const IData _vl_vsscanf(FILE* fp, // If a fscanf int fbits, WDataInP fromp, // Else if a sscanf - const string& fstr, // if a sscanf to string + const std::string& fstr, // if a sscanf to string const char* formatp, va_list ap) { // Read a Verilog $sscanf/$fscanf style format into the output list // The format must be pre-processed (and lower cased) by Verilator @@ -766,7 +766,7 @@ IData _vl_vsscanf(FILE* fp, // If a fscanf break; } default: - string msg = string("Unknown _vl_vsscanf code: ")+pos[0]; + std::string msg = std::string("Unknown _vl_vsscanf code: ")+pos[0]; vl_fatal(__FILE__,__LINE__,"",msg.c_str()); break; } // switch @@ -852,7 +852,7 @@ IData VL_FGETS_IXI(int obits, void* destp, IData fpi) { return got; } -IData VL_FOPEN_NI(const string& filename, IData mode) { +IData VL_FOPEN_NI(const std::string& filename, IData mode) { char modez[5]; _VL_VINT_TO_STRING(VL_WORDSIZE, modez, &mode); return VL_FOPEN_S(filename.c_str(), modez); @@ -880,7 +880,7 @@ void VL_FCLOSE_I(IData fdi) { } void VL_SFORMAT_X(int obits, CData& destr, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -891,7 +891,7 @@ void VL_SFORMAT_X(int obits, CData& destr, const char* formatp, ...) { } void VL_SFORMAT_X(int obits, SData& destr, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -902,7 +902,7 @@ void VL_SFORMAT_X(int obits, SData& destr, const char* formatp, ...) { } void VL_SFORMAT_X(int obits, IData& destr, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -913,7 +913,7 @@ void VL_SFORMAT_X(int obits, IData& destr, const char* formatp, ...) { } void VL_SFORMAT_X(int obits, QData& destr, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -924,7 +924,7 @@ void VL_SFORMAT_X(int obits, QData& destr, const char* formatp, ...) { } void VL_SFORMAT_X(int obits, void* destp, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -934,7 +934,7 @@ void VL_SFORMAT_X(int obits, void* destp, const char* formatp, ...) { _VL_STRING_TO_VINT(obits, destp, (int)output.length(), output.c_str()); } -void VL_SFORMAT_X(int obits_ignored, string &output, const char* formatp, ...) { +void VL_SFORMAT_X(int obits_ignored, std::string &output, const char* formatp, ...) { if (obits_ignored) {} output = ""; va_list ap; @@ -943,8 +943,8 @@ void VL_SFORMAT_X(int obits_ignored, string &output, const char* formatp, ...) { va_end(ap); } -string VL_SFORMATF_NX(const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed +std::string VL_SFORMATF_NX(const char* formatp, ...) { + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -955,7 +955,7 @@ string VL_SFORMATF_NX(const char* formatp, ...) { } void VL_WRITEF(const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; va_list ap; va_start(ap,formatp); @@ -967,7 +967,7 @@ void VL_WRITEF(const char* formatp, ...) { } void VL_FWRITEF(IData fpi, const char* formatp, ...) { - VL_STATIC_OR_THREAD string output; // static only for speed + VL_STATIC_OR_THREAD std::string output; // static only for speed output = ""; FILE* fp = VL_CVT_I_FP(fpi); if (VL_UNLIKELY(!fp)) return; @@ -1016,7 +1016,7 @@ IData VL_SSCANF_IWX(int lbits, WDataInP lwp, const char* formatp, ...) { va_end(ap); return got; } -IData VL_SSCANF_INX(int, const string& ld, const char* formatp, ...) { +IData VL_SSCANF_INX(int, const std::string& ld, const char* formatp, ...) { va_list ap; va_start(ap,formatp); IData got = _vl_vsscanf(NULL, ld.length()*8, NULL, ld, formatp, ap); @@ -1034,12 +1034,12 @@ void VL_READMEM_W(bool hex, int width, int depth, int array_lsb, int fnwords, WDataInP ofilenamep, void* memp, IData start, IData end) { char ofilenamez[VL_TO_STRING_MAX_WORDS*VL_WORDSIZE+1]; _VL_VINT_TO_STRING(fnwords*VL_WORDSIZE, ofilenamez, ofilenamep); - string ofilenames(ofilenamez); + std::string ofilenames(ofilenamez); return VL_READMEM_N(hex,width,depth,array_lsb,fnwords,ofilenames,memp,start,end); } void VL_READMEM_N(bool hex, int width, int depth, int array_lsb, int fnwords, - const string& ofilenamep, void* memp, IData start, IData end) { + const std::string& ofilenamep, void* memp, IData start, IData end) { if (fnwords) {} FILE* fp = fopen(ofilenamep.c_str(), "r"); if (VL_UNLIKELY(!fp)) { @@ -1150,13 +1150,13 @@ IData VL_SYSTEM_IW(int lhswords, WDataInP filenamep) { } IData VL_TESTPLUSARGS_I(const char* formatp) { - const string& match = VerilatedImp::argPlusMatch(formatp); + const std::string& match = VerilatedImp::argPlusMatch(formatp); if (match == "") return 0; else return 1; } -IData VL_VALUEPLUSARGS_INW(int rbits, const string& ld, WDataOutP rwp) { - string prefix; +IData VL_VALUEPLUSARGS_INW(int rbits, const std::string& ld, WDataOutP rwp) { + std::string prefix; bool inPct = false; bool done = false; char fmt = ' '; @@ -1179,7 +1179,7 @@ IData VL_VALUEPLUSARGS_INW(int rbits, const string& ld, WDataOutP rwp) { } } - const string& match = VerilatedImp::argPlusMatch(prefix.c_str()); + const std::string& match = VerilatedImp::argPlusMatch(prefix.c_str()); const char* dp = match.c_str() + 1 /*leading + */ + prefix.length(); if (match == "") return 0; @@ -1214,8 +1214,8 @@ IData VL_VALUEPLUSARGS_INW(int rbits, const string& ld, WDataOutP rwp) { _VL_CLEAN_INPLACE_W(rbits,rwp); return 1; } -IData VL_VALUEPLUSARGS_INN(int, const string& ld, string& rdr) { - string prefix; +IData VL_VALUEPLUSARGS_INN(int, const std::string& ld, std::string& rdr) { + std::string prefix; bool inPct = false; bool done = false; for (const char* posp = ld.c_str(); !done && *posp; ++posp) { @@ -1235,15 +1235,15 @@ IData VL_VALUEPLUSARGS_INN(int, const string& ld, string& rdr) { } } } - const string& match = VerilatedImp::argPlusMatch(prefix.c_str()); + const std::string& match = VerilatedImp::argPlusMatch(prefix.c_str()); const char* dp = match.c_str() + 1 /*leading + */ + prefix.length(); if (match == "") return 0; - rdr = string(dp); + rdr = std::string(dp); return 1; } const char* vl_mc_scan_plusargs(const char* prefixp) { - const string& match = VerilatedImp::argPlusMatch(prefixp); + const std::string& match = VerilatedImp::argPlusMatch(prefixp); static VL_THREAD char outstr[VL_VALUE_STRING_MAX_WIDTH]; if (match == "") return NULL; strncpy(outstr, match.c_str()+strlen(prefixp)+1, // +1 to skip the "+" @@ -1255,7 +1255,7 @@ const char* vl_mc_scan_plusargs(const char* prefixp) { //=========================================================================== // Heavy functions -string VL_CVT_PACK_STR_NW(int lwords, WDataInP lwp) { +std::string VL_CVT_PACK_STR_NW(int lwords, WDataInP lwp) { // See also _VL_VINT_TO_STRING char destout[VL_TO_STRING_MAX_WORDS*VL_WORDSIZE+1]; int obits = lwords * VL_WORDSIZE; @@ -1272,7 +1272,7 @@ string VL_CVT_PACK_STR_NW(int lwords, WDataInP lwp) { start = false; // Drop leading 0s } } - return string(destout, len); + return std::string(destout, len); } //=========================================================================== @@ -1311,7 +1311,7 @@ void Verilated::commandArgs(int argc, const char** argv) { } const char* Verilated::commandArgsPlusMatch(const char* prefixp) { - const string& match = VerilatedImp::argPlusMatch(prefixp); + const std::string& match = VerilatedImp::argPlusMatch(prefixp); static VL_THREAD char outstr[VL_VALUE_STRING_MAX_WIDTH]; if (match == "") return ""; strncpy(outstr, match.c_str(), VL_VALUE_STRING_MAX_WIDTH); @@ -1442,12 +1442,12 @@ void VerilatedScope::varInsert(int finalize, const char* namep, void* datap, } else { // We could have a linked list of ranges, but really this whole thing needs // to be generalized to support structs and unions, etc. - vl_fatal(__FILE__,__LINE__,"",(string("Unsupported multi-dimensional public varInsert: ")+namep).c_str()); + vl_fatal(__FILE__,__LINE__,"",(std::string("Unsupported multi-dimensional public varInsert: ")+namep).c_str()); } } va_end(ap); - m_varsp->insert(make_pair(namep,var)); + m_varsp->insert(std::make_pair(namep,var)); } // cppcheck-suppress unusedFunction // Used by applications @@ -1463,19 +1463,19 @@ VerilatedVar* VerilatedScope::varFind(const char* namep) const { void* VerilatedScope::exportFindNullError(int funcnum) { // Slowpath - Called only when find has failed - string msg = (string("Testbench C called '") - +VerilatedImp::exportName(funcnum) - +"' but scope wasn't set, perhaps due to dpi import call without 'context'"); + std::string msg = (std::string("Testbench C called '") + +VerilatedImp::exportName(funcnum) + +"' but scope wasn't set, perhaps due to dpi import call without 'context'"); vl_fatal("unknown",0,"", msg.c_str()); return NULL; } void* VerilatedScope::exportFindError(int funcnum) const { // Slowpath - Called only when find has failed - string msg = (string("Testbench C called '") - +VerilatedImp::exportName(funcnum) - +"' but this DPI export function exists only in other scopes, not scope '" - +name()+"'"); + std::string msg = (std::string("Testbench C called '") + +VerilatedImp::exportName(funcnum) + +"' but this DPI export function exists only in other scopes, not scope '" + +name()+"'"); vl_fatal("unknown",0,"", msg.c_str()); return NULL; } diff --git a/include/verilated.h b/include/verilated.h index 208bc9a02..a696ea8a3 100644 --- a/include/verilated.h +++ b/include/verilated.h @@ -40,7 +40,6 @@ // avoided to reduce compile time // avoided and instead in verilated_heavy.h to reduce compile time // avoided and instead in verilated_heavy.h to reduce compile time -using namespace std; //============================================================================= // Switches diff --git a/include/verilated_cov.cpp b/include/verilated_cov.cpp index 8e0d2f936..a532ea0dd 100644 --- a/include/verilated_cov.cpp +++ b/include/verilated_cov.cpp @@ -90,9 +90,9 @@ public: class VerilatedCovImp : VerilatedCovImpBase { private: // TYPES - typedef map ValueIndexMap; - typedef map IndexValueMap; - typedef deque ItemList; + typedef std::map ValueIndexMap; + typedef std::map IndexValueMap; + typedef std::deque ItemList; private: // MEMBERS @@ -119,18 +119,18 @@ public: private: // PRIVATE METHODS - int valueIndex(const string& value) { + int valueIndex(const std::string& value) { static int nextIndex = KEY_UNDEF+1; ValueIndexMap::iterator iter = m_valueIndexes.find(value); if (iter != m_valueIndexes.end()) return iter->second; nextIndex++; assert(nextIndex>0); - m_valueIndexes.insert(make_pair(value, nextIndex)); - m_indexValues.insert(make_pair(nextIndex, value)); + m_valueIndexes.insert(std::make_pair(value, nextIndex)); + m_indexValues.insert(std::make_pair(nextIndex, value)); return nextIndex; } - string dequote(const string& text) { + std::string dequote(const std::string& text) { // Quote any special characters - string rtn; + std::string rtn; for (const char* pos = text.c_str(); *pos; ++pos) { if (!isprint(*pos) || *pos=='%' || *pos=='"') { char hex[10]; sprintf(hex,"%%%02X",pos[0]); @@ -141,7 +141,7 @@ private: } return rtn; } - bool legalKey(const string& key) { + bool legalKey(const std::string& key) { // Because we compress long keys to a single letter, and // don't want applications to either get confused if they use // a letter differently, nor want them to rely on our compression... @@ -150,17 +150,17 @@ private: if (key.length()==2 && isdigit(key[1])) return false; return true; } - string keyValueFormatter (const string& key, const string& value) { - string name; + std::string keyValueFormatter (const std::string& key, const std::string& value) { + std::string name; if (key.length()==1 && isalpha(key[0])) { - name += string("\001")+key; + name += std::string("\001")+key; } else { - name += string("\001")+dequote(key); + name += std::string("\001")+dequote(key); } - name += string("\002")+dequote(value); + name += std::string("\002")+dequote(value); return name; } - string combineHier (const string& old, const string& add) { + std::string combineHier (const std::string& old, const std::string& add) { // (foo.a.x, foo.b.x) => foo.*.x // (foo.a.x, foo.b.y) => foo.* // (foo.a.x, foo.b) => foo.* @@ -178,7 +178,7 @@ private: // We used to backup and split on only .'s but it seems better to be verbose // and not assume . is the separator - string prefix = string(a,apre-a); + std::string prefix = std::string(a,apre-a); // Scan backward to last mismatch const char* apost = a+strlen(a)-1; @@ -187,19 +187,19 @@ private: && apost>apre && bpost>bpre) { apost--; bpost--; } // Forward to . so we have a whole word - string suffix = *bpost ? string(bpost+1) : ""; + std::string suffix = *bpost ? std::string(bpost+1) : ""; - string out = prefix+"*"+suffix; + std::string out = prefix+"*"+suffix; //cout << "\nch pre="< strings - string keys[MAX_KEYS]; + std::string keys[MAX_KEYS]; for (int i=0; i > EventMap; - EventMap eventCounts; + typedef std::map > EventMap; + EventMap eventCounts; for (ItemList::iterator it=m_items.begin(); it!=m_items.end(); ++it) { VerilatedCovImpItem* itemp = *(it); - string name; - string hier; + std::string name; + std::string hier; bool per_instance = false; for (int i=0; im_keys[i] != KEY_UNDEF) { - string key = VerilatedCovKey::shortKey(m_indexValues[itemp->m_keys[i]]); - string val = m_indexValues[itemp->m_vals[i]]; + std::string key = VerilatedCovKey::shortKey(m_indexValues[itemp->m_keys[i]]); + std::string val = m_indexValues[itemp->m_vals[i]]; if (key == VL_CIK_PER_INSTANCE) { if (val != "0") per_instance = true; } @@ -363,21 +363,21 @@ public: // Find or insert the named event EventMap::iterator cit = eventCounts.find(name); if (cit != eventCounts.end()) { - const string& oldhier = cit->second.first; + const std::string& oldhier = cit->second.first; cit->second.second += itemp->count(); cit->second.first = combineHier(oldhier, hier); } else { - eventCounts.insert(make_pair(name, make_pair(hier,itemp->count()))); + eventCounts.insert(std::make_pair(name, make_pair(hier,itemp->count()))); } } // Output body for (EventMap::iterator it=eventCounts.begin(); it!=eventCounts.end(); ++it) { - os<<"C '"<first; if (it->second.first != "") os<second.first); os<<"' "<second.second; - os< #include #include -using namespace std; //============================================================================= /// Conditionally compile coverage code @@ -75,7 +74,7 @@ using namespace std; /// Convert VL_COVER_INSERT value arguments to strings template< class T> std::string vlCovCvtToStr (const T& t) { - ostringstream os; os< -using namespace std; //============================================================================= // Data used to edit below file, using vlcovgen @@ -105,7 +104,7 @@ VLCOVGEN_ITEM("name=>'weight', short=>'w', group=>0, default=>undef, descr class VerilatedCovKey { public: - static string shortKey(const string& key) { + static std::string shortKey(const std::string& key) { // VLCOVGEN_SHORT_AUTO_EDIT_BEGIN if (key == "col0") return VL_CIK_COL0; if (key == "col0_name") return VL_CIK_COL0_NAME; diff --git a/include/verilated_dpi.cpp b/include/verilated_dpi.cpp index 79b03acce..d670c497d 100644 --- a/include/verilated_dpi.cpp +++ b/include/verilated_dpi.cpp @@ -40,7 +40,7 @@ // Not supported yet #define _VL_SVDPI_UNIMP() \ - vl_fatal(__FILE__,__LINE__,"",(string("%%Error: Unsupported DPI function: ")+VL_FUNC).c_str()) + vl_fatal(__FILE__,__LINE__,"",(std::string("%%Error: Unsupported DPI function: ")+VL_FUNC).c_str()) // Function requires a "context" in the import declaration #define _VL_SVDPI_CONTEXT_WARN() \ diff --git a/include/verilated_heavy.h b/include/verilated_heavy.h index fba9eb0ee..cd5759ef4 100644 --- a/include/verilated_heavy.h +++ b/include/verilated_heavy.h @@ -36,49 +36,49 @@ //====================================================================== // Conversion functions -extern string VL_CVT_PACK_STR_NW(int lwords, WDataInP lwp); -inline string VL_CVT_PACK_STR_NQ(QData lhs) { +extern std::string VL_CVT_PACK_STR_NW(int lwords, WDataInP lwp); +inline std::string VL_CVT_PACK_STR_NQ(QData lhs) { WData lw[2]; VL_SET_WQ(lw, lhs); return VL_CVT_PACK_STR_NW(2, lw); } -inline string VL_CVT_PACK_STR_NN(const string& lhs) { +inline std::string VL_CVT_PACK_STR_NN(const std::string& lhs) { return lhs; } -inline string VL_CVT_PACK_STR_NI(IData lhs) { +inline std::string VL_CVT_PACK_STR_NI(IData lhs) { WData lw[1]; lw[0] = lhs; return VL_CVT_PACK_STR_NW(1, lw); } -inline string VL_CONCATN_NNN(const string& lhs, const string& rhs) { +inline std::string VL_CONCATN_NNN(const std::string& lhs, const std::string& rhs) { return lhs+rhs; } -inline string VL_REPLICATEN_NNQ(int,int,int, const string& lhs, IData rep) { - string out; out.reserve(lhs.length() * rep); +inline std::string VL_REPLICATEN_NNQ(int,int,int, const std::string& lhs, IData rep) { + std::string out; out.reserve(lhs.length() * rep); for (unsigned times=0; times ArgVec; - typedef map,void*> UserMap; - typedef map ExportNameMap; + typedef std::vector ArgVec; + typedef std::map,void*> UserMap; + typedef std::map ExportNameMap; // MEMBERS static VerilatedImp s_s; ///< Static Singleton; One and only static this @@ -65,8 +65,8 @@ class VerilatedImp { int m_exportNext; ///< Next export funcnum // File I/O - vector m_fdps; ///< File descriptors - deque m_fdFree; ///< List of free descriptors (SLOW - FOPEN/CLOSE only) + std::vector m_fdps; ///< File descriptors + std::deque m_fdFree; ///< List of free descriptors (SLOW - FOPEN/CLOSE only) public: // But only for verilated*.cpp // CONSTRUCTORS @@ -100,7 +100,7 @@ public: // But only for verilated*.cpp for (int i=0; isecond = userData; // When we support VL_THREADs, we need a lock around this insert, as it's runtime - else s_s.m_userMap.insert(it, make_pair(make_pair(scopep,userKey),userData)); + else s_s.m_userMap.insert(it, std::make_pair(std::make_pair(scopep,userKey),userData)); } static inline void* userFind(const void* scopep, void* userKey) { - UserMap::iterator it=s_s.m_userMap.find(make_pair(scopep,userKey)); + UserMap::iterator it=s_s.m_userMap.find(std::make_pair(scopep,userKey)); if (VL_LIKELY(it != s_s.m_userMap.end())) return it->second; else return NULL; } @@ -159,7 +159,7 @@ public: // But only for verilated*.cpp // Slow ok - called once/scope at construction VerilatedScopeNameMap::iterator it=s_s.m_nameMap.find(scopep->name()); if (it == s_s.m_nameMap.end()) { - s_s.m_nameMap.insert(it, make_pair(scopep->name(),scopep)); + s_s.m_nameMap.insert(it, std::make_pair(scopep->name(),scopep)); } } static inline const VerilatedScope* scopeFind(const char* namep) { @@ -198,7 +198,7 @@ public: // But only for verilated*.cpp // Slow ok - called once/function at creation ExportNameMap::iterator it=s_s.m_exportMap.find(namep); if (it == s_s.m_exportMap.end()) { - s_s.m_exportMap.insert(it, make_pair(namep, s_s.m_exportNext++)); + s_s.m_exportMap.insert(it, std::make_pair(namep, s_s.m_exportNext++)); return s_s.m_exportNext++; } else { return it->second; @@ -207,8 +207,8 @@ public: // But only for verilated*.cpp static int exportFind(const char* namep) { ExportNameMap::iterator it=s_s.m_exportMap.find(namep); if (VL_LIKELY(it != s_s.m_exportMap.end())) return it->second; - string msg = (string("%Error: Testbench C called ")+namep - +" but no such DPI export function name exists in ANY model"); + std::string msg = (std::string("%Error: Testbench C called ")+namep + +" but no such DPI export function name exists in ANY model"); vl_fatal("unknown",0,"", msg.c_str()); return -1; } diff --git a/include/verilated_save.cpp b/include/verilated_save.cpp index 09731e74c..6eaf96e59 100644 --- a/include/verilated_save.cpp +++ b/include/verilated_save.cpp @@ -60,8 +60,8 @@ bool VerilatedDeserialize::readDiffers (const void* __restrict datap, size_t siz VerilatedDeserialize& VerilatedDeserialize::readAssert (const void* __restrict datap, size_t size) { if (VL_UNLIKELY(readDiffers(datap,size))) { - string fn = filename(); - string msg = (string)"Can't deserialize save-restore file as was made from different model"; + std::string fn = filename(); + std::string msg = (std::string)"Can't deserialize save-restore file as was made from different model"; vl_fatal(fn.c_str(), 0, "", msg.c_str()); close(); } @@ -81,8 +81,8 @@ void VerilatedSerialize::header() { void VerilatedDeserialize::header() { VerilatedDeserialize& os = *this; // So can cut and paste standard >> code below if (VL_UNLIKELY(os.readDiffers(VLTSAVE_HEADER_STR, strlen(VLTSAVE_HEADER_STR)))) { - string fn = filename(); - string msg = (string)"Can't deserialize; file has wrong header signature"; + std::string fn = filename(); + std::string msg = (std::string)"Can't deserialize; file has wrong header signature"; vl_fatal(fn.c_str(), 0, "", msg.c_str()); close(); } @@ -98,8 +98,8 @@ void VerilatedSerialize::trailer() { void VerilatedDeserialize::trailer() { VerilatedDeserialize& os = *this; // So can cut and paste standard >> code below if (VL_UNLIKELY(os.readDiffers(VLTSAVE_TRAILER_STR, strlen(VLTSAVE_TRAILER_STR)))) { - string fn = filename(); - string msg = (string)"Can't deserialize; file has wrong end-of-file signature"; + std::string fn = filename(); + std::string msg = (std::string)"Can't deserialize; file has wrong end-of-file signature"; vl_fatal(fn.c_str(), 0, "", msg.c_str()); close(); } @@ -187,7 +187,7 @@ void VerilatedSave::flush() { } else if (got < 0) { if (errno != EAGAIN && errno != EINTR) { // write failed, presume error (perhaps out of disk space) - string msg = string(__FUNCTION__)+": "+strerror(errno); + std::string msg = std::string(__FUNCTION__)+": "+strerror(errno); vl_fatal("",0,"",msg.c_str()); close(); break; @@ -215,7 +215,7 @@ void VerilatedRestore::fill() { } else if (got < 0) { if (errno != EAGAIN && errno != EINTR) { // write failed, presume error (perhaps out of disk space) - string msg = string(__FUNCTION__)+": "+strerror(errno); + std::string msg = std::string(__FUNCTION__)+": "+strerror(errno); vl_fatal("",0,"",msg.c_str()); close(); break; diff --git a/include/verilated_save.h b/include/verilated_save.h index 1e0bff3c6..70fe5ec3a 100644 --- a/include/verilated_save.h +++ b/include/verilated_save.h @@ -25,7 +25,6 @@ #include "verilatedos.h" #include -using namespace std; //============================================================================= // VerilatedSerialBase - internal base class for common code between VerilatedSerialize and VerilatedDeserialize @@ -37,7 +36,7 @@ protected: vluint8_t* m_cp; ///< Current pointer into m_bufp buffer vluint8_t* m_bufp; ///< Output buffer bool m_isOpen; ///< True indicates open file/stream - string m_filename; + std::string m_filename; inline static size_t bufferSize() { return 256*1024; } // See below for slack calculation inline static size_t bufferInsertSize() { return 16*1024; } @@ -58,7 +57,7 @@ public: } // METHODS bool isOpen() const { return m_isOpen; } - string filename() const { return m_filename; } + std::string filename() const { return m_filename; } virtual void close() { flush(); } virtual void flush() {} }; @@ -150,7 +149,7 @@ public: virtual ~VerilatedSave() { close(); } // METHODS void open(const char* filenamep); ///< Open the file; call isOpen() to see if errors - void open(const string& filename) { open(filename.c_str()); } + void open(const std::string& filename) { open(filename.c_str()); } virtual void close(); virtual void flush(); }; @@ -169,7 +168,7 @@ public: // METHODS void open(const char* filenamep); ///< Open the file; call isOpen() to see if errors - void open(const string& filename) { open(filename.c_str()); } + void open(const std::string& filename) { open(filename.c_str()); } virtual void close(); virtual void flush() {} virtual void fill(); @@ -219,12 +218,12 @@ inline VerilatedSerialize& operator<<(VerilatedSerialize& os, float& rhs) { inline VerilatedDeserialize& operator>>(VerilatedDeserialize& os, float& rhs) { return os.read(&rhs, sizeof(rhs)); } -inline VerilatedSerialize& operator<<(VerilatedSerialize& os, string& rhs) { +inline VerilatedSerialize& operator<<(VerilatedSerialize& os, std::string& rhs) { vluint32_t len=rhs.length(); os<>(VerilatedDeserialize& os, string& rhs) { +inline VerilatedDeserialize& operator>>(VerilatedDeserialize& os, std::string& rhs) { vluint32_t len=0; os>>len; rhs.resize(len); diff --git a/include/verilated_syms.h b/include/verilated_syms.h index 635da0bdc..8266de24d 100644 --- a/include/verilated_syms.h +++ b/include/verilated_syms.h @@ -91,13 +91,14 @@ struct VerilatedCStrCmp { }; class VerilatedScopeNameMap - : public map { + : public std::map { public: VerilatedScopeNameMap() {} ~VerilatedScopeNameMap() {} }; -class VerilatedVarNameMap : public map { +class VerilatedVarNameMap + : public std::map { public: VerilatedVarNameMap() {} ~VerilatedVarNameMap() {} diff --git a/include/verilated_vcd_c.cpp b/include/verilated_vcd_c.cpp index c729ad098..0b134b249 100644 --- a/include/verilated_vcd_c.cpp +++ b/include/verilated_vcd_c.cpp @@ -49,7 +49,7 @@ //============================================================================= // Global -vector VerilatedVcd::s_vcdVecp; ///< List of all created traces +VerilatedVcd::VcdVec VerilatedVcd::s_vcdVecp; ///< List of all created traces //============================================================================= // VerilatedVcdCallInfo @@ -79,7 +79,7 @@ protected: //============================================================================= // VerilatedVcdFile -bool VerilatedVcdFile::open(const string& name) { +bool VerilatedVcdFile::open(const std::string& name) { m_fd = ::open(name.c_str(), O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE|O_NONBLOCK, 0666); return (m_fd>=0); } @@ -150,7 +150,7 @@ void VerilatedVcd::openNext (bool incFilename) { closePrev(); // Close existing if (incFilename) { // Find _0000.{ext} in filename - string name = m_filename; + std::string name = m_filename; size_t pos=name.rfind("."); if (pos>8 && 0==strncmp("_cat",name.c_str()+pos-8,4) && isdigit(name.c_str()[pos-4]) @@ -205,18 +205,18 @@ void VerilatedVcd::makeNameMap() { // This comes from user instantiations with no name - IE Vtop(""). bool nullScope = false; for (NameMap::iterator it=m_namemapp->begin(); it!=m_namemapp->end(); ++it) { - const string& hiername = it->first; + const std::string& hiername = it->first; if (hiername.size() >= 1 && hiername[0] == '\t') nullScope=true; } if (nullScope) { NameMap* newmapp = new NameMap; for (NameMap::iterator it=m_namemapp->begin(); it!=m_namemapp->end(); ++it) { - const string& hiername = it->first; - const string& decl = it->second; - string newname = string("top"); + const std::string& hiername = it->first; + const std::string& decl = it->second; + std::string newname = std::string("top"); if (hiername[0] != '\t') newname += ' '; newname += hiername; - newmapp->insert(make_pair(newname,decl)); + newmapp->insert(std::make_pair(newname,decl)); } deleteNameMap(); m_namemapp = newmapp; @@ -234,7 +234,7 @@ VerilatedVcd::~VerilatedVcd() { deleteNameMap(); if (m_filep && m_fileNewed) { delete m_filep; m_filep = NULL; } // Remove from list of traces - vector::iterator pos = find(s_vcdVecp.begin(), s_vcdVecp.end(), this); + VcdVec::iterator pos = find(s_vcdVecp.begin(), s_vcdVecp.end(), this); if (pos != s_vcdVecp.end()) { s_vcdVecp.erase(pos); } } @@ -326,7 +326,7 @@ void VerilatedVcd::bufferFlush () { } else if (got < 0) { if (errno != EAGAIN && errno != EINTR) { // write failed, presume error (perhaps out of disk space) - string msg = (string)"VerilatedVcd::bufferFlush: "+strerror(errno); + std::string msg = (std::string)"VerilatedVcd::bufferFlush: "+strerror(errno); vl_fatal("",0,"",msg.c_str()); closeErr(); break; @@ -369,7 +369,7 @@ double VerilatedVcd::timescaleToDouble (const char* unitp) { return value; } -string VerilatedVcd::doubleToTimescale (double value) { +std::string VerilatedVcd::doubleToTimescale (double value) { const char* suffixp = "s"; if (value>=1e0) { suffixp="s"; value *= 1e0; } else if (value>=1e-3 ) { suffixp="ms"; value *= 1e3; } @@ -398,7 +398,7 @@ void VerilatedVcd::dumpHeader () { printStr("$date "); printStr(ctime(&time_str)); printStr(" $end\n"); printStr("$timescale "); - const string& timeResStr = doubleToTimescale(m_timeRes); + const std::string& timeResStr = doubleToTimescale(m_timeRes); printStr(timeResStr.c_str()); printStr(" $end\n"); @@ -417,8 +417,8 @@ void VerilatedVcd::dumpHeader () { // Print the signal names const char* lastName = ""; for (NameMap::iterator it=m_namemapp->begin(); it!=m_namemapp->end(); ++it) { - const string& hiernamestr = it->first; - const string& decl = it->second; + const std::string& hiernamestr = it->first; + const std::string& decl = it->second; // Determine difference between the old and new names const char* hiername = hiernamestr.c_str(); @@ -472,7 +472,7 @@ void VerilatedVcd::dumpHeader () { deleteNameMap(); } -void VerilatedVcd::module (const string& name) { +void VerilatedVcd::module (const std::string& name) { m_modName = name; } @@ -485,7 +485,7 @@ void VerilatedVcd::declare (vluint32_t code, const char* name, const char* wirep if (tri) codesNeeded *= 2; // Space in change array for __en signals // Make sure array is large enough - m_nextCode = max(nextCode(), code+codesNeeded); + m_nextCode = std::max(nextCode(), code+codesNeeded); if (m_sigs.capacity() <= m_nextCode) { m_sigs.reserve(m_nextCode*2); // Power-of-2 allocation speeds things up } @@ -503,10 +503,10 @@ void VerilatedVcd::declare (vluint32_t code, const char* name, const char* wirep // Tab separates final scope from signal name // Tab sorts before spaces, so signals nicely will print before scopes // Note the hiername may be nothing, if so we'll add "\t{name}" - string nameasstr = name; + std::string nameasstr = name; if (m_modName!="") { nameasstr = m_modName+m_scopeEscape+nameasstr; } // Optional ->module prefix - string hiername; - string basename; + std::string hiername; + std::string basename; for (const char* cp=nameasstr.c_str(); *cp; cp++) { if (isScopeEscape(*cp)) { // Ahh, we've just read a scope, not a basename @@ -520,7 +520,7 @@ void VerilatedVcd::declare (vluint32_t code, const char* name, const char* wirep hiername += "\t"+basename; // Print reference - string decl = "$var "; + std::string decl = "$var "; if (m_evcd) decl += "port"; else decl += wirep; // usually "wire" char buf [1000]; sprintf(buf, " %2d ", bits); @@ -543,7 +543,7 @@ void VerilatedVcd::declare (vluint32_t code, const char* name, const char* wirep decl += buf; } decl += " $end\n"; - m_namemapp->insert(make_pair(hiername,decl)); + m_namemapp->insert(std::make_pair(hiername,decl)); } void VerilatedVcd::declBit (vluint32_t code, const char* name, int arraynum) @@ -596,7 +596,7 @@ void VerilatedVcd::addCallback ( void* userthis) { if (VL_UNLIKELY(isOpen())) { - string msg = (string)"Internal: "+__FILE__+"::"+__FUNCTION__+" called with already open file"; + std::string msg = (std::string)"Internal: "+__FILE__+"::"+__FUNCTION__+" called with already open file"; vl_fatal(__FILE__,__LINE__,"",msg.c_str()); } VerilatedVcdCallInfo* vci = new VerilatedVcdCallInfo(initcb, fullcb, changecb, userthis, nextCode()); diff --git a/include/verilated_vcd_c.h b/include/verilated_vcd_c.h index f61b969c6..201fe9d1b 100644 --- a/include/verilated_vcd_c.h +++ b/include/verilated_vcd_c.h @@ -28,7 +28,6 @@ #include #include #include -using namespace std; class VerilatedVcd; class VerilatedVcdCallInfo; @@ -45,7 +44,7 @@ public: // METHODS VerilatedVcdFile() : m_fd(0) {} virtual ~VerilatedVcdFile() {} - virtual bool open(const string& name); + virtual bool open(const std::string& name); virtual void close(); virtual ssize_t write(const char* bufp, ssize_t len); }; @@ -80,13 +79,13 @@ private: bool m_fileNewed; ///< m_filep needs destruction bool m_isOpen; ///< True indicates open file bool m_evcd; ///< True for evcd format - string m_filename; ///< Filename we're writing to (if open) + std::string m_filename; ///< Filename we're writing to (if open) vluint64_t m_rolloverMB; ///< MB of file size to rollover at char m_scopeEscape; ///< Character to separate scope components int m_modDepth; ///< Depth of module hierarchy bool m_fullDump; ///< True indicates dump ignoring if changed vluint32_t m_nextCode; ///< Next code number to assign - string m_modName; ///< Module name being traced now + std::string m_modName; ///< Module name being traced now double m_timeRes; ///< Time resolution (ns/ms etc) double m_timeUnit; ///< Time units (ns/ms etc) vluint64_t m_timeLastDump; ///< Last time we did a dump @@ -98,11 +97,12 @@ private: vluint64_t m_wroteBytes; ///< Number of bytes written to this file vluint32_t* m_sigs_oldvalp; ///< Pointer to old signal values - vector m_sigs; ///< Pointer to signal information - vector m_callbacks; ///< Routines to perform dumping - typedef map NameMap; - NameMap* m_namemapp; ///< List of names for the header - static vector s_vcdVecp; ///< List of all created traces + std::vector m_sigs; ///< Pointer to signal information + std::vector m_callbacks; ///< Routines to perform dumping + typedef std::map NameMap; + NameMap* m_namemapp; ///< List of names for the header + typedef std::vector VcdVec; + static VcdVec s_vcdVecp; ///< List of all created traces void bufferResize(vluint64_t minsize); void bufferFlush(); @@ -136,8 +136,8 @@ private: if (code>=(94)) *m_writep++ = ((char)((code/94)%94+33)); *m_writep++ = ((char)((code)%94+33)); } - static string stringCode (vluint32_t code) { - string out; + static std::string stringCode (vluint32_t code) { + std::string out; if (code>=(94*94*94)) out += ((char)((code/94/94/94)%94+33)); if (code>=(94*94)) out += ((char)((code/94/94)%94+33)); if (code>=(94)) out += ((char)((code/94)%94+33)); @@ -175,13 +175,13 @@ public: void close (); ///< Close the file void set_time_unit (const char* unit); ///< Set time units (s/ms, defaults to ns) - void set_time_unit (const string& unit) { set_time_unit(unit.c_str()); } + void set_time_unit (const std::string& unit) { set_time_unit(unit.c_str()); } void set_time_resolution (const char* unit); ///< Set time resolution (s/ms, defaults to ns) - void set_time_resolution (const string& unit) { set_time_resolution(unit.c_str()); } + void set_time_resolution (const std::string& unit) { set_time_resolution(unit.c_str()); } double timescaleToDouble (const char* unitp); - string doubleToTimescale (double value); + std::string doubleToTimescale (double value); /// Inside dumping routines, called each cycle to make the dump void dump (vluint64_t timeui); @@ -194,7 +194,7 @@ public: void* userthis); /// Inside dumping routines, declare a module - void module (const string& name); + void module (const std::string& name); /// Inside dumping routines, declare a signal void declBit (vluint32_t code, const char* name, int arraynum); void declBus (vluint32_t code, const char* name, int arraynum, int msb, int lsb); @@ -433,11 +433,11 @@ public: /// Set time units (s/ms, defaults to ns) /// See also VL_TIME_PRECISION, and VL_TIME_MULTIPLIER in verilated.h void set_time_unit (const char* unit) { m_sptrace.set_time_unit(unit); } - void set_time_unit (const string& unit) { set_time_unit(unit.c_str()); } + void set_time_unit (const std::string& unit) { set_time_unit(unit.c_str()); } /// Set time resolution (s/ms, defaults to ns) /// See also VL_TIME_PRECISION, and VL_TIME_MULTIPLIER in verilated.h void set_time_resolution (const char* unit) { m_sptrace.set_time_resolution(unit); } - void set_time_resolution (const string& unit) { set_time_resolution(unit.c_str()); } + void set_time_resolution (const std::string& unit) { set_time_resolution(unit.c_str()); } /// Internal class access inline VerilatedVcd* spTrace () { return &m_sptrace; }; diff --git a/include/verilated_vpi.cpp b/include/verilated_vpi.cpp index 9ca7dc05f..5b22f40a7 100644 --- a/include/verilated_vpi.cpp +++ b/include/verilated_vpi.cpp @@ -386,7 +386,7 @@ const char* VerilatedVpiError::strFromVpiProp(PLI_INT32 vpiVal) { #define CHECK_RESULT_CSTR(got, exp) \ if (strcmp((got),(exp))) { \ - string msg = string("%Error: ") \ + std::string msg = std::string("%Error: ") \ + "GOT = '"+((got)?(got):"")+"'" \ + " EXP = '"+((exp)?(exp):"")+"'"; \ vl_fatal(__FILE__,__LINE__,"",msg.c_str()); \ @@ -502,9 +502,9 @@ vpiHandle vpi_handle_by_name(PLI_BYTE8* namep, vpiHandle scope) { VerilatedVpioScope* voScopep = VerilatedVpioScope::castp(scope); const VerilatedVar* varp; const VerilatedScope* scopep; - string scopeAndName = namep; + std::string scopeAndName = namep; if (voScopep) { - scopeAndName = string(voScopep->fullname()) + "." + namep; + scopeAndName = std::string(voScopep->fullname()) + "." + namep; namep = (PLI_BYTE8*)scopeAndName.c_str(); } { @@ -514,11 +514,11 @@ vpiHandle vpi_handle_by_name(PLI_BYTE8* namep, vpiHandle scope) { return (new VerilatedVpioScope(scopep))->castVpiHandle(); } const char* baseNamep = scopeAndName.c_str(); - string scopename; + std::string scopename; const char* dotp = strrchr(namep, '.'); if (VL_LIKELY(dotp)) { baseNamep = dotp+1; - scopename = string(namep,dotp-namep); + scopename = std::string(namep,dotp-namep); } scopep = Verilated::scopeFind(scopename.c_str()); if (!scopep) return NULL; diff --git a/include/verilated_vpi.h b/include/verilated_vpi.h index 9f3b97085..a360c222b 100644 --- a/include/verilated_vpi.h +++ b/include/verilated_vpi.h @@ -215,8 +215,8 @@ public: virtual const VerilatedRange* rangep() const { return &get_range(); } virtual const char* name() { return m_varp->name(); } virtual const char* fullname() { - VL_STATIC_OR_THREAD string out; - out = string(m_scopep->name())+"."+name(); + VL_STATIC_OR_THREAD std::string out; + out = std::string(m_scopep->name())+"."+name(); return out.c_str(); } void* prevDatap() const { return m_prevDatap; } @@ -243,9 +243,9 @@ public: virtual vluint32_t size() const { return varp()->range().elements(); } virtual const VerilatedRange* rangep() const { return &(varp()->range()); } virtual const char* fullname() { - VL_STATIC_OR_THREAD string out; + VL_STATIC_OR_THREAD std::string out; char num[20]; sprintf(num,"%d",m_index); - out = string(scopep()->name())+"."+name()+"["+num+"]"; + out = std::string(scopep()->name())+"."+name()+"["+num+"]"; return out.c_str(); } }; @@ -301,8 +301,8 @@ public: struct VerilatedVpiTimedCbsCmp { /// Ordering sets keyed by time, then callback descriptor - bool operator() (const pair& a, - const pair& b) const { + bool operator() (const std::pair& a, + const std::pair& b) const { if (a.first < b.first) return 1; if (a.first > b.first) return 0; return a.second < b.second; @@ -313,8 +313,8 @@ class VerilatedVpiError; class VerilatedVpi { enum { CB_ENUM_MAX_VALUE = cbAtEndOfSimTime+1 }; // Maxium callback reason - typedef list VpioCbList; - typedef set,VerilatedVpiTimedCbsCmp > VpioTimedCbs; + typedef std::list VpioCbList; + typedef std::set,VerilatedVpiTimedCbsCmp > VpioTimedCbs; struct product_info { PLI_BYTE8* product; @@ -339,7 +339,7 @@ public: s_s.m_cbObjLists[vop->reason()].push_back(vop); } static void cbTimedAdd(VerilatedVpioCb* vop) { - s_s.m_timedCbs.insert(make_pair(vop->time(), vop)); + s_s.m_timedCbs.insert(std::make_pair(vop->time(), vop)); } static void cbReasonRemove(VerilatedVpioCb* cbp) { VpioCbList& cbObjList = s_s.m_cbObjLists[cbp->reason()]; @@ -350,7 +350,7 @@ public: } } static void cbTimedRemove(VerilatedVpioCb* cbp) { - VpioTimedCbs::iterator it=s_s.m_timedCbs.find(make_pair(cbp->time(),cbp)); + VpioTimedCbs::iterator it=s_s.m_timedCbs.find(std::make_pair(cbp->time(),cbp)); if (VL_LIKELY(it != s_s.m_timedCbs.end())) { s_s.m_timedCbs.erase(it); } @@ -389,7 +389,8 @@ public: } static void callValueCbs() { VpioCbList& cbObjList = s_s.m_cbObjLists[cbValueChange]; - set update; // set of objects to update after callbacks + typedef std::set VpioVarSet; + VpioVarSet update; // set of objects to update after callbacks for (VpioCbList::iterator it=cbObjList.begin(); it!=cbObjList.end();) { if (VL_UNLIKELY(!*it)) { // Deleted earlier, cleanup it = cbObjList.erase(it); @@ -411,7 +412,7 @@ public: } } } - for (set::iterator it=update.begin(); it!=update.end(); ++it) { + for (VpioVarSet::iterator it=update.begin(); it!=update.end(); ++it) { memcpy((*it)->prevDatap(), (*it)->varDatap(), (*it)->entSize()); } } @@ -462,8 +463,8 @@ public: m_errorInfo.level = level; return this; } - void setMessage(string file, PLI_INT32 line, string message, ...) { - static VL_THREAD string filehold; + void setMessage(std::string file, PLI_INT32 line, std::string message, ...) { + static VL_THREAD std::string filehold; _VL_VPI_ERROR_SET; m_errorInfo.state = vpiPLI; filehold = file; diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index 6dee14db8..d42e41f20 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -226,7 +226,7 @@ string AstVar::vlArgType(bool named, bool forReturn, bool forFunc) const { arg += "float"; } else if (strtype) { if (isInOnly()) arg += "const "; - arg += "string"; + arg += "std::string"; } else if (widthMin() <= 8) { arg += "CData"; } else if (widthMin() <= 16) { diff --git a/src/V3EmitC.cpp b/src/V3EmitC.cpp index a56288d98..35d84bf96 100644 --- a/src/V3EmitC.cpp +++ b/src/V3EmitC.cpp @@ -607,7 +607,7 @@ public: } void emitCvtPackStr(AstNode* nodep) { if (AstConst* constp = nodep->castConst()) { - putbs("string("); + putbs("std::string("); putsQuoted(constp->num().toString()); puts(")"); } else { @@ -627,7 +627,7 @@ public: if (nodep->num().isFourState()) { nodep->v3error("Unsupported: 4-state numbers in this context"); } else if (nodep->num().isString()) { - putbs("string("); + putbs("std::string("); putsQuoted(nodep->num().toString()); puts(")"); } else if (nodep->isWide()) { @@ -1558,8 +1558,8 @@ void EmitCImp::emitCoverageImp(AstNodeModule* modp) { puts( " \"filename\",filenamep,"); puts( " \"lineno\",lineno,"); puts( " \"column\",column,\n"); - //puts( "\"hier\",string(__VlSymsp->name())+hierp,"); // Need to move hier into scopes and back out if do this - puts( "\"hier\",string(name())+hierp,"); + //puts( "\"hier\",std::string(__VlSymsp->name())+hierp,"); // Need to move hier into scopes and back out if do this + puts( "\"hier\",std::string(name())+hierp,"); puts( " \"page\",pagep,"); puts( " \"comment\",commentp);\n"); puts("}\n"); diff --git a/test_regress/t/t_dpi_var.cpp b/test_regress/t/t_dpi_var.cpp index af86f950f..220c0730b 100644 --- a/test_regress/t/t_dpi_var.cpp +++ b/test_regress/t/t_dpi_var.cpp @@ -51,7 +51,7 @@ void mon_class_name(const char* namep) { VL_PRINTF("- mon_class_name(\"%s\");\n", namep); #endif // Check the C's calling name of "" doesn't lead to extra dots in the name() - if (namep && namep[0]=='.') vl_fatal(__FILE__,__LINE__,"", (string("Unexp class name ")+namep).c_str()); + if (namep && namep[0]=='.') vl_fatal(__FILE__,__LINE__,"", (std::string("Unexp class name ")+namep).c_str()); } extern "C" void mon_scope_name(const char* namep); @@ -60,8 +60,8 @@ void mon_scope_name(const char* namep) { #ifdef TEST_VERBOSE VL_PRINTF("- mon_scope_name('%s', \"%s\");\n", modp, namep); #endif - if (strcmp(namep,"t.sub")) vl_fatal(__FILE__,__LINE__,"", (string("Unexp scope name ")+namep).c_str()); - if (strcmp(modp,"t.sub")) vl_fatal(__FILE__,__LINE__,"", (string("Unexp dpiscope name ")+modp).c_str()); + if (strcmp(namep,"t.sub")) vl_fatal(__FILE__,__LINE__,"", (std::string("Unexp scope name ")+namep).c_str()); + if (strcmp(modp,"t.sub")) vl_fatal(__FILE__,__LINE__,"", (std::string("Unexp dpiscope name ")+modp).c_str()); } extern "C" void mon_register_b(const char* namep, int isOut); diff --git a/test_regress/t/t_vpi_unimpl.cpp b/test_regress/t/t_vpi_unimpl.cpp index 35148bc4c..3a204cace 100644 --- a/test_regress/t/t_vpi_unimpl.cpp +++ b/test_regress/t/t_vpi_unimpl.cpp @@ -52,15 +52,15 @@ unsigned int callback_count = false; // Use cout to avoid issues with %d/%lx etc #define CHECK_RESULT(got, exp) \ if ((got != exp)) { \ - cout<