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:
+13
-13
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = "@";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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 "@";
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user