diff --git a/include/verilated_cov.cpp b/include/verilated_cov.cpp index cda239a1e..48c2dbb7e 100644 --- a/include/verilated_cov.cpp +++ b/include/verilated_cov.cpp @@ -128,7 +128,7 @@ private: m_indexValues.insert(std::make_pair(nextIndex, value)); return nextIndex; } - std::string dequote(const std::string& text) { + static std::string dequote(const std::string& text) { // Quote any special characters std::string rtn; for (const char* pos = text.c_str(); *pos; ++pos) { @@ -141,7 +141,7 @@ private: } return rtn; } - bool legalKey(const std::string& key) { + static 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,7 +150,7 @@ private: if (key.length()==2 && isdigit(key[1])) return false; return true; } - std::string keyValueFormatter (const std::string& key, const std::string& value) { + static std::string keyValueFormatter (const std::string& key, const std::string& value) { std::string name; if (key.length()==1 && isalpha(key[0])) { name += std::string("\001")+key; @@ -160,7 +160,7 @@ private: name += std::string("\002")+dequote(value); return name; } - std::string combineHier (const std::string& old, const std::string& add) { + static 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.* @@ -206,7 +206,7 @@ private: } return false; } - void selftest() { + static void selftest() { // Little selftest if (combineHier ("a.b.c","a.b.c") !="a.b.c") vl_fatal(__FILE__,__LINE__,"","%Error: selftest\n"); if (combineHier ("a.b.c","a.b") !="a.b*") vl_fatal(__FILE__,__LINE__,"","%Error: selftest\n"); diff --git a/include/verilated_save.cpp b/include/verilated_save.cpp index cd8601804..3d1465af0 100644 --- a/include/verilated_save.cpp +++ b/include/verilated_save.cpp @@ -40,8 +40,8 @@ #endif // CONSTANTS -static const char* VLTSAVE_HEADER_STR = "verilatorsave01\n"; ///< Value of first bytes of each file -static const char* VLTSAVE_TRAILER_STR = "vltsaved"; ///< Value of last bytes of each file +static const char* const VLTSAVE_HEADER_STR = "verilatorsave01\n"; ///< Value of first bytes of each file +static const char* const VLTSAVE_TRAILER_STR = "vltsaved"; ///< Value of last bytes of each file //============================================================================= //============================================================================= diff --git a/include/verilated_vpi.cpp b/include/verilated_vpi.cpp index 61be1a02e..357491356 100644 --- a/include/verilated_vpi.cpp +++ b/include/verilated_vpi.cpp @@ -52,7 +52,7 @@ VerilatedVpiError* VerilatedVpi::error_info() { // VerilatedVpiError Methods const char* VerilatedVpiError::strFromVpiVal(PLI_INT32 vpiVal) { - static const char *names[] = { + static const char* const names[] = { "*undefined*", "vpiBinStrVal", "vpiOctStrVal", @@ -77,7 +77,7 @@ const char* VerilatedVpiError::strFromVpiVal(PLI_INT32 vpiVal) { return names[(vpiVal<=vpiRawFourStateVal)?vpiVal:0]; } const char* VerilatedVpiError::strFromVpiObjType(PLI_INT32 vpiVal) { - static const char *names[] = { + static const char* const names[] = { "*undefined*", "vpiAlways", "vpiAssignStmt", @@ -219,7 +219,7 @@ const char* VerilatedVpiError::strFromVpiObjType(PLI_INT32 vpiVal) { return names[(vpiVal<=vpiGenVar)?vpiVal:0]; } const char* VerilatedVpiError::strFromVpiMethod(PLI_INT32 vpiVal) { - static const char *names[] = { + static const char* const names[] = { "vpiCondition", "vpiDelay", "vpiElseStmt", @@ -262,7 +262,7 @@ const char* VerilatedVpiError::strFromVpiMethod(PLI_INT32 vpiVal) { } const char* VerilatedVpiError::strFromVpiCallbackReason(PLI_INT32 vpiVal) { - static const char *names[] = { + static const char* const names[] = { "*undefined*", "cbValueChange", "cbStmt", @@ -301,7 +301,7 @@ const char* VerilatedVpiError::strFromVpiCallbackReason(PLI_INT32 vpiVal) { } const char* VerilatedVpiError::strFromVpiProp(PLI_INT32 vpiVal) { - static const char *names[] = { + static const char* const names[] = { "*undefined or other*", "vpiType", "vpiName", diff --git a/include/verilated_vpi.h b/include/verilated_vpi.h index 1f6f76d38..d22446abb 100644 --- a/include/verilated_vpi.h +++ b/include/verilated_vpi.h @@ -96,10 +96,10 @@ public: static inline VerilatedVpio* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } inline vpiHandle castVpiHandle() { return (vpiHandle)(this); } // ACCESSORS - virtual const char* name() { return ""; } - virtual const char* fullname() { return ""; } - virtual const char* defname() { return ""; } - virtual vluint32_t type() { return 0; } + virtual const char* name() const { return ""; } + virtual const char* fullname() const { return ""; } + virtual const char* defname() const { return ""; } + virtual vluint32_t type() const { return 0; } virtual vluint32_t size() const { return 0; } virtual const VerilatedRange* rangep() const { return NULL; } virtual vpiHandle dovpi_scan() { return 0; } @@ -120,7 +120,7 @@ public: } virtual ~VerilatedVpioCb() {} static inline VerilatedVpioCb* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiCallback; } + virtual vluint32_t type() const { return vpiCallback; } vluint32_t reason() const { return m_cbData.reason; } VerilatedPliCb cb_rtnp() const { return m_cbData.cb_rtn; } t_cb_data* cb_datap() { return &(m_cbData); } @@ -133,7 +133,7 @@ public: explicit VerilatedVpioConst(vlsint32_t num) : m_num(num) {} virtual ~VerilatedVpioConst() {} static inline VerilatedVpioConst* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiUndefined; } + virtual vluint32_t type() const { return vpiUndefined; } vlsint32_t num() const { return m_num; } }; @@ -144,7 +144,7 @@ public: explicit VerilatedVpioRange(const VerilatedRange* range) : m_range(range), m_iteration(0) {} virtual ~VerilatedVpioRange() {} static inline VerilatedVpioRange* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiRange; } + virtual vluint32_t type() const { return vpiRange; } virtual vluint32_t size() const { return m_range->elements(); } virtual const VerilatedRange* rangep() const { return m_range; } int iteration() const { return m_iteration; } @@ -167,10 +167,10 @@ public: : m_scopep(scopep) {} virtual ~VerilatedVpioScope() {} static inline VerilatedVpioScope* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiScope; } + virtual vluint32_t type() const { return vpiScope; } const VerilatedScope* scopep() const { return m_scopep; } - virtual const char* name() { return m_scopep->name(); } - virtual const char* fullname() { return m_scopep->name(); } + virtual const char* name() const { return m_scopep->name(); } + virtual const char* fullname() const { return m_scopep->name(); } }; class VerilatedVpioVar : public VerilatedVpio { @@ -207,14 +207,14 @@ public: vluint8_t mask_byte(int idx) { return m_mask.u8[idx & 3]; } vluint32_t entSize() const { return m_entSize; } vluint32_t index() { return m_index; } - virtual vluint32_t type() { + virtual vluint32_t type() const { if (varp()->vldir() != vpiNoDirection) return vpiPort; return (varp()->dims()>1) ? vpiMemory : vpiReg; /* but might be wire, logic */ } virtual vluint32_t size() const { return get_range().elements(); } virtual const VerilatedRange* rangep() const { return &get_range(); } - virtual const char* name() { return m_varp->name(); } - virtual const char* fullname() { + virtual const char* name() const { return m_varp->name(); } + virtual const char* fullname() const { static VL_THREAD_LOCAL std::string out; out = std::string(m_scopep->name())+"."+name(); return out.c_str(); @@ -239,10 +239,10 @@ public: } virtual ~VerilatedVpioMemoryWord() {} static inline VerilatedVpioMemoryWord* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiMemoryWord; } + virtual vluint32_t type() const { return vpiMemoryWord; } virtual vluint32_t size() const { return varp()->range().elements(); } virtual const VerilatedRange* rangep() const { return &(varp()->range()); } - virtual const char* fullname() { + virtual const char* fullname() const { static VL_THREAD_LOCAL std::string out; char num[20]; sprintf(num,"%d",m_index); out = std::string(scopep()->name())+"."+name()+"["+num+"]"; @@ -259,7 +259,7 @@ public: : m_scopep(scopep), m_started(false) { } virtual ~VerilatedVpioVarIter() {} static inline VerilatedVpioVarIter* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiIterator; } + virtual vluint32_t type() const { return vpiIterator; } virtual vpiHandle dovpi_scan() { if (VL_LIKELY(m_scopep->varsp())) { VerilatedVarNameMap* varsp = m_scopep->varsp(); @@ -286,7 +286,7 @@ public: : m_handle(handle), m_varp(varp), m_iteration(varp->array().right()), m_direction(VL_LIKELY(varp->array().left()>varp->array().right())?1:-1), m_done(false) { } virtual ~VerilatedVpioMemoryWordIter() {} static inline VerilatedVpioMemoryWordIter* castp(vpiHandle h) { return dynamic_cast((VerilatedVpio*)h); } - virtual vluint32_t type() { return vpiIterator; } + virtual vluint32_t type() const { return vpiIterator; } void iterationInc() { if (!(m_done = (m_iteration == m_varp->array().left()))) m_iteration+=m_direction; } virtual vpiHandle dovpi_scan() { vpiHandle result; diff --git a/src/V3Ast.h b/src/V3Ast.h index 7336e1674..142ca8ded 100644 --- a/src/V3Ast.h +++ b/src/V3Ast.h @@ -82,7 +82,7 @@ public: }; enum en m_e; const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "UNSIGNED","SIGNED","NOSIGN" }; return names[m_e]; @@ -203,14 +203,14 @@ public: return AstEdgeType::ET_ILLEGAL; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "%E-edge", "ANY", "BOTH", "POS", "NEG", "HIGH", "LOW", "COMBO","INITIAL","SETTLE","NEVER" }; return names[m_e]; }; const char* verilogKwd() const { - static const char* names[] = { + static const char* const names[] = { "%E-edge", "[any]", "edge", "posedge", "negedge", "[high]","[low]", "*","[initial]","[settle]","[never]" }; @@ -270,7 +270,7 @@ public: }; enum en m_e; const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "%E-AT", "DIM_BITS", "DIM_DIMENSIONS", "DIM_HIGH", "DIM_INCREMENT", "DIM_LEFT", "DIM_LOW", "DIM_RIGHT", "DIM_SIZE", "DIM_UNPK_DIMENSIONS", @@ -315,7 +315,7 @@ public: }; enum en m_e; const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "%E-unk", "bit", "byte", "chandle", "int", "integer", "logic", "longint", "real", "shortint", "shortreal", "time", @@ -328,7 +328,7 @@ public: return names[m_e]; }; const char* dpiType() const { - static const char* names[] = { + static const char* const names[] = { "%E-unk", "unsigned char", "char", "void*", "int", "int", "svLogic", "long long", "double", "short int", "float", "long long", @@ -446,7 +446,7 @@ public: explicit inline AstVarType (int _e) : m_e(static_cast(_e)) {} operator en () const { return m_e; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "?","GPARAM","LPARAM","GENVAR", "VAR","INPUT","OUTPUT","INOUT", "SUPPLY0","SUPPLY1","WIRE","WREAL","IMPLICITWIRE", @@ -489,7 +489,7 @@ public: else return m_e; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "","VL_LIKELY","VL_UNLIKELY"}; return names[m_e]; } }; @@ -522,7 +522,7 @@ public: else return m_e; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "","clker","non_clker"}; return names[m_e]; } }; @@ -548,7 +548,7 @@ public: explicit inline VAlwaysKwd (int _e) : m_e(static_cast(_e)) {} operator en () const { return m_e; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "always","always_ff","always_latch","always_comb"}; return names[m_e]; } }; @@ -598,7 +598,7 @@ public: bool addNewline() const { return m_e!=DT_WRITE; } bool needScopeTracking() const { return m_e!=DT_DISPLAY && m_e!=DT_WRITE; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "display","write","info","error","warning","fatal"}; return names[m_e]; } }; @@ -621,7 +621,7 @@ public: explicit inline AstParseRefExp (int _e) : m_e(static_cast(_e)) {} operator en () const { return m_e; } const char* ascii() const { - static const char* names[] = { + static const char* const names[] = { "","TEXT","PREDOT"}; return names[m_e]; } }; diff --git a/src/V3Error.cpp b/src/V3Error.cpp index 7a47813d1..14f721ff3 100644 --- a/src/V3Error.cpp +++ b/src/V3Error.cpp @@ -85,7 +85,7 @@ string V3Error::lineStr (const char* filename, int lineno) { const char* fnslashp = strrchr (filename, '/'); if (fnslashp) filename = fnslashp+1; out<20) numsp = 20; out<<(spaces + numsp); return out.str(); diff --git a/src/V3LangCode.h b/src/V3LangCode.h index bb2ebc391..69d2e3f74 100644 --- a/src/V3LangCode.h +++ b/src/V3LangCode.h @@ -46,7 +46,7 @@ public: _ENUM_END }; const char* ascii() const { - const char* names[] = { + const char* const names[] = { // These must match the `begin_keywords values. " ERROR", "1364-1995", diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp index 921fd1de1..7ba72b86e 100644 --- a/src/V3LinkDot.cpp +++ b/src/V3LinkDot.cpp @@ -1482,7 +1482,7 @@ private: m_unresolved = false; m_unlinkedScope = NULL; } string ascii() const { - static const char* names[] = { "NONE","PACKAGE","SCOPE","FINAL","MEMBER" }; + static const char* const names[] = { "NONE","PACKAGE","SCOPE","FINAL","MEMBER" }; ostringstream sstr; sstr<<"ds="<fileline()->v3error(errmsg); - static const char* colonmsg = "syntax error, unexpected ::, "; + static const char* const colonmsg = "syntax error, unexpected ::, "; //tokens; if (0==strncmp(errmsg, colonmsg, strlen(colonmsg)) && PARSEP->prevBisonVal().token == yaID__ETC