260327.10 · ec4047eb560ed3fe15ad175719709bb15573cdb8
refactored SyntaxReader class to use C++17 features
reading declarations
Changes to src/core/syntaxreader.cpp. All files
@@ -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 << "\","; }