@ 261105.1

260327.10 · ec4047eb560ed3fe15ad175719709bb15573cdb8

refactored SyntaxReader class to use C++17 features

reading declarations

Changes to src/core/syntaxreader.cpp. All files

src/core/syntaxreader.cpp

@@ -86,16 +86,17 @@ SyntaxReader::SyntaxReader() :  SyntaxReader::~SyntaxReader() {-    for ( auto it=regex.begin(); it!=regex.end(); it++ ) {-        delete *it;+    for ( auto* r : regex ) {+        delete r;     }-    if (validateStateChangeFct) delete validateStateChangeFct;-    if (decorateFct) delete decorateFct;-    if (decorateLineBeginFct) delete decorateLineBeginFct;-    if (decorateLineEndFct) delete decorateLineEndFct;-    if (luaState) delete luaState;-    for (unsigned int i=0; i<pluginChunks.size(); i++) {-        delete pluginChunks[i];+    delete validateStateChangeFct;+    delete decorateFct;+    delete decorateLineBeginFct;+    delete decorateLineEndFct;+    delete luaState;++    for (auto* chunk : pluginChunks) {+        delete chunk;     }     pluginChunks.clear(); }@@ -455,25 +456,25 @@ LoadResult SyntaxReader::load ( const string& langDefPath, const string& pluginR }  -void SyntaxReader::addKeyword(unsigned int groupID, const string& kw)+void SyntaxReader::addKeyword(unsigned int groupID, std::string_view kw) {     if (!isKeyword ( kw )) {-        keywords.insert ( make_pair (kw, groupID ) );+        keywords.insert ( {string(kw), groupID} );     } }-void SyntaxReader::removeKeyword(const string& kw)+void SyntaxReader::removeKeyword(std::string_view kw) {-    keywords.erase(kw);+    keywords.erase(string(kw)); } -bool SyntaxReader::isKeyword ( const string &s )+bool SyntaxReader::isKeyword ( std::string_view s ) {-    return ( s.length() && keywords.count ( s ) ) ;+    return ( !s.empty() && keywords.find( s ) != keywords.end() ) ; } -int SyntaxReader::getKeywordListGroup ( const string &s ) {-    if (isKeyword(s)) {-        return keywords[s];+int SyntaxReader::getKeywordListGroup ( std::string_view s ) {+    if (auto it = keywords.find(s); it != keywords.end()) {+        return it->second;     }     return 0; }@@ -512,9 +513,9 @@ int SyntaxReader::luaRemoveKeyword (lua_State *L) }  -void SyntaxReader::overrideParam(const string& name, const string& val)+void SyntaxReader::overrideParam(std::string_view name, std::string_view val) {-    pluginConfigOverride[name] = val;+    pluginConfigOverride[string(name)] = string(val);     paramsNeedUpdate=true; } @@ -536,16 +537,21 @@ int SyntaxReader::luaOverrideParam (lua_State *L)     return 1; } -void SyntaxReader::restoreLangEndDelim(const string& langPath)+void SyntaxReader::restoreLangEndDelim(std::string_view langPath) {-    if ( !langPath.empty()&& nestedStateEndDelimiters.count(langPath) ) {-        regex.insert (regex.begin(),1, new RegexElement ( EMBEDDED_CODE_END,EMBEDDED_CODE_END, nestedStateEndDelimiters[langPath] ) );+    if ( !langPath.empty() ) {+        if (auto it = nestedStateEndDelimiters.find(langPath); it != nestedStateEndDelimiters.end()) {+            regex.insert (regex.begin(),1, new RegexElement ( EMBEDDED_CODE_END,EMBEDDED_CODE_END, it->second ) );+        }     } } -bool SyntaxReader::allowsInnerSection(const string& langPath)+bool SyntaxReader::allowsInnerSection(std::string_view langPath) {-    return allowInnerSections[langPath];+    if (auto it = allowInnerSections.find(langPath); it != allowInnerSections.end()) {+        return it->second;+    }+    return false; }  unsigned int SyntaxReader::generateNewKWClass ( int classID, const char *prefix )@@ -586,8 +592,7 @@ string SyntaxReader::getNewPath(const string& lang) int SyntaxReader::getOpenDelimiterID ( const string& token, State s) {     boost::xpressive::smatch what;-    for (unsigned int i=0; i<getRegexElements().size(); i++ )  {-        RegexElement *regexElem = getRegexElements() [i];+    for (auto* regexElem : getRegexElements())  {         if (regexElem->open==s ) {              if( regex_match( token, what, regexElem->rex ) ) {@@ -601,8 +606,7 @@ int SyntaxReader::getOpenDelimiterID ( const string& token, State s) bool SyntaxReader::matchesOpenDelimiter ( const string& token, State s, int openDelimId) {     boost::xpressive::smatch what;-    for (unsigned int i=0; i<getRegexElements().size(); i++ )  {-        RegexElement *regexElem = getRegexElements() [i];+    for (auto* regexElem : getRegexElements())  {         if (regexElem->open==s ) {              if( regex_match( token, what, regexElem->rex ) && matchingDelimiters[regexElem->instanceId]==openDelimId) {@@ -614,7 +618,7 @@ bool SyntaxReader::matchesOpenDelimiter ( const string& token, State s, int open     return false; } -void SyntaxReader::addPersistentKeyword(unsigned int groupID, const string& kw){+void SyntaxReader::addPersistentKeyword(unsigned int groupID, std::string_view kw){     ostringstream expr;     expr <<"AddKeyword(\""<<kw<<"\", "<<groupID<<")"; @@ -622,7 +626,7 @@ void SyntaxReader::addPersistentKeyword(unsigned int groupID, const string& kw){     persistentSyntaxDescriptions.insert(langDesc); } -void SyntaxReader::addPersistentStateRange(unsigned int groupID, unsigned int column,unsigned int length, unsigned int lineNumber, const string& fileName){+void SyntaxReader::addPersistentStateRange(unsigned int groupID, unsigned int column,unsigned int length, unsigned int lineNumber, std::string_view fileName){     ostringstream expr;     expr <<"table.insert(Keywords,\n"          << "{ Id="<<groupID<<",\n"@@ -642,7 +646,7 @@ string SyntaxReader::getPersistentHookConditions() {     ostringstream expr;     expr << "ValidDesc = {"; -    for (auto desc: persistentSyntaxDescriptions) {+    for (const auto& desc: persistentSyntaxDescriptions) {         expr << "\"" << desc << "\",";     }