From f06b64bd996bcd15c26cc87d7901666ac55804db Mon Sep 17 00:00:00 2001 From: Martchus Date: Mon, 6 Jun 2016 20:46:30 +0200 Subject: [PATCH] Improve implementation of TagTarget::toString --- tagtarget.cpp | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/tagtarget.cpp b/tagtarget.cpp index 4f98353..fa222c1 100644 --- a/tagtarget.cpp +++ b/tagtarget.cpp @@ -59,28 +59,29 @@ const char *tagTargetLevelName(TagTargetLevel tagTargetLevel) */ string TagTarget::toString(TagTargetLevel tagTargetLevel) const { - list parts; - parts.emplace_back(); - string &level = parts.back(); - if(this->level()) { - level.append("level " + numberToString(this->level())); + string levelString; + if(level()) { + levelString += "level "; + levelString += numberToString(level()); } - string name; - if(!levelName().empty()) { - name = levelName(); - } else { - name = tagTargetLevelName(tagTargetLevel); - } - if(!name.empty()) { - if(!level.empty()) { - level.append(" "); + const char *defaultLevelName; + if(!levelName().empty() || *(defaultLevelName = tagTargetLevelName(tagTargetLevel))) { + if(!levelString.empty()) { + levelString += ' '; } - level.append("»"); - level.append(name); - level.append("«"); + levelString += '\''; + if(!levelName().empty()) { + levelString += levelName(); + } else { + levelString += defaultLevelName; + } + levelString += '\''; } - if(level.empty()) { - level.append("undefined target"); + list parts; + if(levelString.empty()) { + parts.emplace_back("undefined target"); + } else { + parts.emplace_back(move(levelString)); } for(auto v : tracks()) { parts.emplace_back("track " + numberToString(v));