ui: language dependent symbol name delimiter

* implemented symbol delimiter as static field of NameHierarchy which is set when a project is created.
This commit is contained in:
malte_langkabel
2016-08-18 15:22:25 +02:00
parent c269493942
commit 9255d45b94
8 changed files with 76 additions and 46 deletions
+13 -13
View File
@@ -136,14 +136,22 @@ void Application::createAndLoadProject(const FilePath& projectSettingsFilePath)
m_storageCache->clear();
m_project = Project::create(projectSettingsFilePath, m_storageCache.get());
loadProject(projectSettingsFilePath);
if (m_hasGUI)
if (m_project)
{
setTitle("Coati - " + projectSettingsFilePath.fileName());
m_mainView->hideStartScreen();
if (m_hasGUI)
{
setTitle("Coati - " + projectSettingsFilePath.fileName());
m_mainView->hideStartScreen();
m_componentManager->refreshViews();
m_componentManager->clearComponents();
m_componentManager->refreshViews();
}
}
else
{
LOG_ERROR_STREAM(<< "Failed to load project.");
MessageStatus("Failed to load project.", true).dispatch();
}
}
catch (...)
@@ -153,14 +161,6 @@ void Application::createAndLoadProject(const FilePath& projectSettingsFilePath)
}
}
void Application::loadProject(const FilePath& projectSettingsFilePath)
{
if (m_hasGUI)
{
m_componentManager->clearComponents();
}
}
void Application::refreshProject(bool force)
{
MessageStatus("Refreshing Project").dispatch();
+1
View File
@@ -115,6 +115,7 @@ void Project::load()
bool loadedSettings = projectSettings->reload();
if (loadedSettings)
{
NameHierarchy::setDelimiter(getSymbolNameDelimiterForLanguage(projectSettings->getLanguage()));
const FilePath projectSettingsPath = projectSettings->getFilePath();
const FilePath dbPath = FilePath(projectSettingsPath).replaceExtension("coatidb");
m_storage = std::make_shared<PersistentStorage>(dbPath);
+11 -4
View File
@@ -37,6 +37,11 @@ NameHierarchy NameHierarchy::deserialize(const std::string& serializedName)
return nameHierarchy;
}
void NameHierarchy::setDelimiter(const std::string& delimiter)
{
s_delimiter = delimiter;
}
NameHierarchy::NameHierarchy()
{
}
@@ -87,23 +92,23 @@ size_t NameHierarchy::size() const
return m_elements.size();
}
std::string NameHierarchy::getQualifiedName(const std::string& delimiter) const
std::string NameHierarchy::getQualifiedName() const
{
std::string name;
for (size_t i = 0; i < m_elements.size(); i++)
{
if (i > 0)
{
name += delimiter;
name += s_delimiter;
}
name += m_elements[i]->getName();
}
return name;
}
std::string NameHierarchy::getQualifiedNameWithSignature(const std::string& delimiter) const
std::string NameHierarchy::getQualifiedNameWithSignature() const
{
std::string name = getQualifiedName(delimiter);
std::string name = getQualifiedName();
if (m_elements.size())
{
name = m_elements.back()->getSignature().qualifyName(name); // todo: use separator for signature!
@@ -128,3 +133,5 @@ std::string NameHierarchy::getRawNameWithSignature() const
}
return "";
}
std::string NameHierarchy::s_delimiter = "@";
+5 -2
View File
@@ -12,6 +12,7 @@ class NameHierarchy
public:
static std::string serialize(NameHierarchy nameHierarchy);
static NameHierarchy deserialize(const std::string& serializedName);
static void setDelimiter(const std::string& delimiter);
NameHierarchy();
NameHierarchy(const std::string& name);
@@ -24,12 +25,14 @@ public:
std::shared_ptr<NameElement> operator[](size_t pos) const;
size_t size() const;
std::string getQualifiedName(const std::string& delimiter = "::") const;
std::string getQualifiedNameWithSignature(const std::string& delimiter = "::") const;
std::string getQualifiedName() const;
std::string getQualifiedNameWithSignature() const;
std::string getRawName() const;
std::string getRawNameWithSignature() const;
private:
static std::string s_delimiter;
std::vector<std::shared_ptr<NameElement>> m_elements;
};
+13
View File
@@ -30,3 +30,16 @@ LanguageType stringToLanguageType(std::string s)
}
return LANGUAGE_UNKNOWN;
}
std::string getSymbolNameDelimiterForLanguage(LanguageType t)
{
switch (t)
{
case LANGUAGE_C:
case LANGUAGE_CPP:
return "::";
case LANGUAGE_JAVA:
return ".";
}
return "@";
}
+2
View File
@@ -14,4 +14,6 @@ enum LanguageType
std::string languageTypeToString(LanguageType t);
LanguageType stringToLanguageType(std::string s);
std::string getSymbolNameDelimiterForLanguage(LanguageType t);
#endif // LANGUAGE_TYPE_H