MCPcopy Create free account
hub / github.com/Xtra-Computing/thundersvm / setModules

Method setModules

src/thundersvm/util/log.cpp:1872–1942  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1870 }
1871
1872 void VRegistry::setModules(const char* modules) {
1873 base::threading::ScopedLock scopedLock(lock());
1874 auto addSuffix = [](std::stringstream& ss, const char* sfx, const char* prev) {
1875 if (prev != nullptr && base::utils::Str::endsWith(ss.str(), std::string(prev))) {
1876 std::string chr(ss.str().substr(0, ss.str().size() - strlen(prev)));
1877 ss.str(std::string(""));
1878 ss << chr;
1879 }
1880 if (base::utils::Str::endsWith(ss.str(), std::string(sfx))) {
1881 std::string chr(ss.str().substr(0, ss.str().size() - strlen(sfx)));
1882 ss.str(std::string(""));
1883 ss << chr;
1884 }
1885 ss << sfx;
1886 };
1887 auto insert = [&](std::stringstream& ss, base::type::VerboseLevel level) {
1888 if (!base::utils::hasFlag(LoggingFlag::DisableVModulesExtensions, *m_pFlags)) {
1889 addSuffix(ss, ".h", nullptr);
1890 m_modules.insert(std::make_pair(ss.str(), level));
1891 addSuffix(ss, ".c", ".h");
1892 m_modules.insert(std::make_pair(ss.str(), level));
1893 addSuffix(ss, ".cpp", ".c");
1894 m_modules.insert(std::make_pair(ss.str(), level));
1895 addSuffix(ss, ".cc", ".cpp");
1896 m_modules.insert(std::make_pair(ss.str(), level));
1897 addSuffix(ss, ".cxx", ".cc");
1898 m_modules.insert(std::make_pair(ss.str(), level));
1899 addSuffix(ss, ".-inl.h", ".cxx");
1900 m_modules.insert(std::make_pair(ss.str(), level));
1901 addSuffix(ss, ".hxx", ".-inl.h");
1902 m_modules.insert(std::make_pair(ss.str(), level));
1903 addSuffix(ss, ".hpp", ".hxx");
1904 m_modules.insert(std::make_pair(ss.str(), level));
1905 addSuffix(ss, ".hh", ".hpp");
1906 }
1907 m_modules.insert(std::make_pair(ss.str(), level));
1908 };
1909 bool isMod = true;
1910 bool isLevel = false;
1911 std::stringstream ss;
1912 int level = -1;
1913 for (; *modules; ++modules) {
1914 switch (*modules) {
1915 case '=':
1916 isLevel = true;
1917 isMod = false;
1918 break;
1919 case ',':
1920 isLevel = false;
1921 isMod = true;
1922 if (!ss.str().empty() && level != -1) {
1923 insert(ss, static_cast<base::type::VerboseLevel>(level));
1924 ss.str(std::string(""));
1925 level = -1;
1926 }
1927 break;
1928 default:
1929 if (isMod) {

Callers 1

setVModulesMethod · 0.80

Calls 3

hasFlagFunction · 0.85
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected