Internals: Remove duplicate filenameNonExt. No functional change.

This commit is contained in:
Wilson Snyder 2024-07-14 11:31:32 -04:00
parent 8c3b754bac
commit 74ae879c2f
5 changed files with 23 additions and 13 deletions

View File

@ -209,7 +209,7 @@ public:
of.puts("VM_USER_CLASSES = \\\n"); of.puts("VM_USER_CLASSES = \\\n");
const V3StringSet& cppFiles = v3Global.opt.cppFiles(); const V3StringSet& cppFiles = v3Global.opt.cppFiles();
for (const auto& cppfile : cppFiles) { for (const auto& cppfile : cppFiles) {
of.puts("\t" + V3Os::filenameNonExt(cppfile) + " \\\n"); of.puts("\t" + V3Os::filenameNonDirExt(cppfile) + " \\\n");
const string dir = V3Os::filenameDir(cppfile); const string dir = V3Os::filenameDir(cppfile);
dirs.insert(dir); dirs.insert(dir);
} }
@ -237,7 +237,7 @@ public:
} }
for (const string& cppfile : cppFiles) { for (const string& cppfile : cppFiles) {
const string basename = V3Os::filenameNonExt(cppfile); const string basename = V3Os::filenameNonDirExt(cppfile);
// NOLINTNEXTLINE(performance-inefficient-string-concatenation) // NOLINTNEXTLINE(performance-inefficient-string-concatenation)
of.puts(basename + ".o: " + cppfile + "\n"); of.puts(basename + ".o: " + cppfile + "\n");
of.puts("\t$(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $<\n"); of.puts("\t$(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $<\n");

View File

@ -1025,10 +1025,9 @@ void V3Options::parseOpts(FileLine* fl, int argc, char** argv) VL_MT_DISABLED {
} }
// Default prefix to the filename // Default prefix to the filename
if (prefix() == "" && topModule() != "") if (prefix() == "" && topModule() != "") m_prefix = "V"s + AstNode::encodeName(topModule());
m_prefix = string{"V"} + AstNode::encodeName(topModule());
if (prefix() == "" && vFilesList.size() >= 1) if (prefix() == "" && vFilesList.size() >= 1)
m_prefix = string{"V"} + AstNode::encodeName(V3Os::filenameNonExt(*(vFilesList.begin()))); m_prefix = "V"s + AstNode::encodeName(V3Os::filenameNonDirExt(*(vFilesList.begin())));
if (modPrefix() == "") m_modPrefix = prefix(); if (modPrefix() == "") m_modPrefix = prefix();
// Find files in makedir // Find files in makedir

View File

@ -165,6 +165,17 @@ string V3Os::filenameDir(const string& filename) VL_PURE {
} }
} }
string V3Os::filenameExt(const string& filename) VL_PURE {
string base = filenameNonDir(filename);
string::size_type pos;
if ((pos = base.find('.')) != string::npos) {
base.erase(0, pos);
return base;
} else {
return "";
}
}
string V3Os::filenameNonDir(const string& filename) VL_PURE { string V3Os::filenameNonDir(const string& filename) VL_PURE {
// std::filesystem::path::filename // std::filesystem::path::filename
auto it = filename.rbegin(); auto it = filename.rbegin();
@ -174,17 +185,13 @@ string V3Os::filenameNonDir(const string& filename) VL_PURE {
return string{it.base(), filename.end()}; return string{it.base(), filename.end()};
} }
string V3Os::filenameNonExt(const string& filename) VL_PURE { string V3Os::filenameNonDirExt(const string& filename) VL_PURE {
string base = filenameNonDir(filename); string base = filenameNonDir(filename);
string::size_type pos; string::size_type pos;
if ((pos = base.find('.')) != string::npos) base.erase(pos); if ((pos = base.find('.')) != string::npos) base.erase(pos);
return base; return base;
} }
string V3Os::filenameNonDirExt(const string& filename) VL_PURE {
return filenameNonExt(filenameNonDir(filename));
}
string V3Os::filenameSubstitute(const string& filename) { string V3Os::filenameSubstitute(const string& filename) {
string result; string result;
// cppcheck-has-bug-suppress unusedLabel // cppcheck-has-bug-suppress unusedLabel
@ -441,5 +448,9 @@ void V3Os::selfTest() {
UASSERT_SELFTEST(string, filenameCleanup("aaa/bbb/ccc/"), "aaa/bbb/ccc"); UASSERT_SELFTEST(string, filenameCleanup("aaa/bbb/ccc/"), "aaa/bbb/ccc");
UASSERT_SELFTEST(string, filenameCleanup("./aaa/bbb/ccc/"), "aaa/bbb/ccc"); UASSERT_SELFTEST(string, filenameCleanup("./aaa/bbb/ccc/"), "aaa/bbb/ccc");
UASSERT_SELFTEST(string, filenameCleanup("../aaa/bbb/ccc/"), "../aaa/bbb/ccc"); UASSERT_SELFTEST(string, filenameCleanup("../aaa/bbb/ccc/"), "../aaa/bbb/ccc");
UASSERT_SELFTEST(string, filenameDir("a.a/b.b/f.e"), "a.a/b.b");
UASSERT_SELFTEST(string, filenameExt("a.a/b.b/f"), "");
UASSERT_SELFTEST(string, filenameExt("a.a/b.b/f.e"), ".e");
UASSERT_SELFTEST(string, filenameNonDirExt("a.a/b.b/f.e"), "f");
#endif #endif
} }

View File

@ -43,10 +43,10 @@ public:
}; };
///< @return file path without repeated separators and ./ prefix ///< @return file path without repeated separators and ./ prefix
static string filenameCleanup(const string& filename) VL_PURE; static string filenameCleanup(const string& filename) VL_PURE;
///< @return extension (.) part of filename
static string filenameExt(const string& filename) VL_PURE;
///< @return non-directory part of filename ///< @return non-directory part of filename
static string filenameNonDir(const string& filename) VL_PURE; static string filenameNonDir(const string& filename) VL_PURE;
///< @return non-extensioned (no .) part of filename
static string filenameNonExt(const string& filename) VL_PURE;
///< @return basename of filename ///< @return basename of filename
static string filenameNonDirExt(const string& filename) VL_PURE; static string filenameNonDirExt(const string& filename) VL_PURE;
///< @return directory part of filename ///< @return directory part of filename

View File

@ -287,7 +287,7 @@ void V3ParseImp::preprocDumps(std::ostream& os, bool forInputs) {
void V3ParseImp::parseFile(FileLine* fileline, const string& modfilename, bool inLibrary, void V3ParseImp::parseFile(FileLine* fileline, const string& modfilename, bool inLibrary,
const string& errmsg) { // "" for no error, make fake node const string& errmsg) { // "" for no error, make fake node
const string nondirname = V3Os::filenameNonDir(modfilename); const string nondirname = V3Os::filenameNonDir(modfilename);
const string modname = V3Os::filenameNonExt(modfilename); const string modname = V3Os::filenameNonDirExt(modfilename);
UINFO(2, __FUNCTION__ << ": " << modname << (inLibrary ? " [LIB]" : "") << endl); UINFO(2, __FUNCTION__ << ": " << modname << (inLibrary ? " [LIB]" : "") << endl);
m_lexFileline = new FileLine{fileline}; m_lexFileline = new FileLine{fileline};