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
+2
View File
@@ -3218,6 +3218,8 @@ private:
std::shared_ptr<TestParserClient> parseCode(std::string code, bool logErrors = true)
{
NameHierarchy::setDelimiter("::");
m_args.logErrors = logErrors;
m_args.language = "c++";
m_args.languageStandard = "1z";
+29 -27
View File
@@ -14,7 +14,7 @@
class JavaParserTestSuite//: public CxxTest::TestSuite
class JavaParserTestSuite: public CxxTest::TestSuite
{
public:
///////////////////////////////////////////////////////////////////////////////
@@ -854,7 +854,7 @@ private:
std::vector<std::string>* bin = getBinForSymbolKind(symbolKind);
if (bin != nullptr)
{
bin->push_back(addAccessPrefix(symbolName.getQualifiedNameWithSignature("."), access));
bin->push_back(addAccessPrefix(symbolName.getQualifiedNameWithSignature(), access));
}
return 0;
}
@@ -867,7 +867,7 @@ private:
std::vector<std::string>* bin = getBinForSymbolKind(symbolKind);
if (bin != nullptr)
{
bin->push_back(addLocationSuffix(addAccessPrefix(symbolName.getQualifiedNameWithSignature("."), access), location));
bin->push_back(addLocationSuffix(addAccessPrefix(symbolName.getQualifiedNameWithSignature(), access), location));
}
return 0;
}
@@ -880,7 +880,7 @@ private:
std::vector<std::string>* bin = getBinForSymbolKind(symbolKind);
if (bin != nullptr)
{
bin->push_back(addLocationSuffix(addAccessPrefix(symbolName.getQualifiedNameWithSignature("."), access), location, scopeLocation));
bin->push_back(addLocationSuffix(addAccessPrefix(symbolName.getQualifiedNameWithSignature(), access), location, scopeLocation));
}
return 0;
}
@@ -935,7 +935,7 @@ private:
if (referenceContainer != nullptr)
{
referenceContainer->push_back(addLocationSuffix(
contextName.getQualifiedNameWithSignature(".") + " -> " + referencedName.getQualifiedNameWithSignature("."), location)
contextName.getQualifiedNameWithSignature() + " -> " + referencedName.getQualifiedNameWithSignature(), location)
);
}
}
@@ -966,7 +966,7 @@ private:
const ParseLocation& location, const NameHierarchy& typedefName, AccessKind access, bool isImplicit
)
{
std::string str = addAccessPrefix(typedefName.getQualifiedName("."), access);
std::string str = addAccessPrefix(typedefName.getQualifiedName(), access);
typedefs.push_back(addLocationSuffix(str, location));
}
@@ -974,37 +974,37 @@ private:
const ParseLocation& location, const NameHierarchy& nameHierarchy, AccessKind access,
const ParseLocation& scopeLocation, bool isImplicit)
{
classes.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName("."), access), location, scopeLocation));
classes.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName(), access), location, scopeLocation));
}
virtual void onStructParsed(
const ParseLocation& location, const NameHierarchy& nameHierarchy, AccessKind access,
const ParseLocation& scopeLocation, bool isImplicit)
{
structs.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName("."), access), location, scopeLocation));
structs.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName(), access), location, scopeLocation));
}
virtual void onGlobalVariableParsed(const ParseLocation& location, const NameHierarchy& variable, bool isImplicit)
{
globalVariables.push_back(addLocationSuffix(variable.getQualifiedName("."), location));
globalVariables.push_back(addLocationSuffix(variable.getQualifiedName(), location));
}
virtual void onFieldParsed(const ParseLocation& location, const NameHierarchy& field, AccessKind access, bool isImplicit)
{
fields.push_back(addLocationSuffix(addAccessPrefix(field.getQualifiedName("."), access), location));
fields.push_back(addLocationSuffix(addAccessPrefix(field.getQualifiedName(), access), location));
}
virtual void onFunctionParsed(
const ParseLocation& location, const NameHierarchy& function, const ParseLocation& scopeLocation, bool isImplicit)
{
functions.push_back(addLocationSuffix(function.getQualifiedNameWithSignature("."), location, scopeLocation));
functions.push_back(addLocationSuffix(function.getQualifiedNameWithSignature(), location, scopeLocation));
}
virtual void onMethodParsed(
const ParseLocation& location, const NameHierarchy& method, AccessKind access, AbstractionType abstraction,
const ParseLocation& scopeLocation, bool isImplicit)
{
std::string str = method.getQualifiedNameWithSignature(".");
std::string str = method.getQualifiedNameWithSignature();
str = addAbstractionPrefix(str, abstraction);
str = addAccessPrefix(str, access);
str = addLocationSuffix(str, location, scopeLocation);
@@ -1014,26 +1014,26 @@ private:
virtual void onNamespaceParsed(
const ParseLocation& location, const NameHierarchy& nameHierarchy, const ParseLocation& scopeLocation, bool isImplicit)
{
namespaces.push_back(addLocationSuffix(nameHierarchy.getQualifiedName("."), location, scopeLocation));
namespaces.push_back(addLocationSuffix(nameHierarchy.getQualifiedName(), location, scopeLocation));
}
virtual void onEnumParsed(
const ParseLocation& location, const NameHierarchy& nameHierarchy, AccessKind access,
const ParseLocation& scopeLocation, bool isImplicit)
{
enums.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName("."), access), location, scopeLocation));
enums.push_back(addLocationSuffix(addAccessPrefix(nameHierarchy.getQualifiedName(), access), location, scopeLocation));
}
virtual void onEnumConstantParsed(const ParseLocation& location, const NameHierarchy& nameHierarchy, bool isImplicit)
{
enumConstants.push_back(addLocationSuffix(nameHierarchy.getQualifiedName("."), location));
enumConstants.push_back(addLocationSuffix(nameHierarchy.getQualifiedName(), location));
}
virtual void onTemplateParameterTypeParsed(
const ParseLocation& location, const NameHierarchy& templateParameterTypeNameHierarchy, bool isImplicit)
{
templateParameterTypes.push_back(
addLocationSuffix(templateParameterTypeNameHierarchy.getQualifiedName("."), location)
addLocationSuffix(templateParameterTypeNameHierarchy.getQualifiedName(), location)
);
}
@@ -1049,7 +1049,7 @@ private:
virtual void onMacroExpandParsed(const ParseLocation& location, const NameHierarchy& macroNameHierarchy)
{
macroUses.push_back(addLocationSuffix(macroNameHierarchy.getQualifiedName(".") ,location));
macroUses.push_back(addLocationSuffix(macroNameHierarchy.getQualifiedName() ,location));
}
virtual void onCommentParsed(const ParseLocation& location)
@@ -1062,31 +1062,31 @@ private:
const ParseLocation& location, const NameHierarchy& childNameHierarchy,
const NameHierarchy& parentNameHierarchy)
{
std::string str = childNameHierarchy.getQualifiedName(".") + " : " + parentNameHierarchy.getQualifiedName(".");
std::string str = childNameHierarchy.getQualifiedName() + " : " + parentNameHierarchy.getQualifiedName();
inheritances.push_back(addLocationSuffix(str, location));
}
virtual void onMethodOverrideParsed(
const ParseLocation& location, const NameHierarchy& overridden, const NameHierarchy& overrider)
{
overrides.push_back(addLocationSuffix(overridden.getQualifiedNameWithSignature(".") + " -> " + overrider.getQualifiedNameWithSignature("."), location));
overrides.push_back(addLocationSuffix(overridden.getQualifiedNameWithSignature() + " -> " + overrider.getQualifiedNameWithSignature(), location));
}
virtual void onCallParsed(
const ParseLocation& location, const NameHierarchy& caller, const NameHierarchy& callee)
{
calls.push_back(addLocationSuffix(caller.getQualifiedNameWithSignature(".") + " -> " + callee.getQualifiedNameWithSignature("."), location));
calls.push_back(addLocationSuffix(caller.getQualifiedNameWithSignature() + " -> " + callee.getQualifiedNameWithSignature(), location));
}
virtual void onUsageParsed(
const ParseLocation& location, const NameHierarchy& userName, SymbolKind usedType, const NameHierarchy& usedName)
{
usages.push_back(addLocationSuffix(userName.getQualifiedNameWithSignature(".") + " -> " + usedName.getQualifiedName("."), location));
usages.push_back(addLocationSuffix(userName.getQualifiedNameWithSignature() + " -> " + usedName.getQualifiedName(), location));
}
virtual void onTypeUsageParsed(const ParseLocation& location, const NameHierarchy& user, const NameHierarchy& used)
{
typeUses.push_back(addLocationSuffix(user.getQualifiedNameWithSignature(".") + " -> " + used.getQualifiedNameWithSignature("."), location));
typeUses.push_back(addLocationSuffix(user.getQualifiedNameWithSignature() + " -> " + used.getQualifiedNameWithSignature(), location));
}
virtual void onTemplateArgumentTypeParsed(
@@ -1094,7 +1094,7 @@ private:
const NameHierarchy& templateNameHierarchy)
{
templateArgumentTypes.push_back(
addLocationSuffix(templateNameHierarchy.getQualifiedNameWithSignature(".") + "->" + argumentTypeNameHierarchy.getQualifiedName("."), location)
addLocationSuffix(templateNameHierarchy.getQualifiedNameWithSignature() + "->" + argumentTypeNameHierarchy.getQualifiedName(), location)
);
}
@@ -1103,7 +1103,7 @@ private:
const NameHierarchy& templateParameterNameHierarchy)
{
templateDefaultArgumentTypes.push_back(
addLocationSuffix(defaultArgumentTypeNameHierarchy.getQualifiedNameWithSignature(".") + " -> " + templateParameterNameHierarchy.getQualifiedName("."), location)
addLocationSuffix(defaultArgumentTypeNameHierarchy.getQualifiedNameWithSignature() + " -> " + templateParameterNameHierarchy.getQualifiedName(), location)
);
}
@@ -1112,7 +1112,7 @@ private:
const NameHierarchy& specializedFromNameHierarchy)
{
templateSpecializations.push_back(addLocationSuffix(
specializedNameHierarchy.getQualifiedNameWithSignature(".") + " -> " + specializedFromNameHierarchy.getQualifiedNameWithSignature("."), location
specializedNameHierarchy.getQualifiedNameWithSignature() + " -> " + specializedFromNameHierarchy.getQualifiedNameWithSignature(), location
));
}
@@ -1120,7 +1120,7 @@ private:
const ParseLocation& location, const NameHierarchy& instantiatedFunction, const NameHierarchy& specializedFunction)
{
templateMemberSpecializations.push_back(addLocationSuffix(
instantiatedFunction.getQualifiedNameWithSignature(".") + " -> " + specializedFunction.getQualifiedNameWithSignature("."), location
instantiatedFunction.getQualifiedNameWithSignature() + " -> " + specializedFunction.getQualifiedNameWithSignature(), location
));
}
@@ -1133,7 +1133,7 @@ private:
virtual void onMacroDefineParsed(
const ParseLocation& location, const NameHierarchy& macroNameHierarchy, const ParseLocation& scopeLocation)
{
macros.push_back(addLocationSuffix(macroNameHierarchy.getQualifiedName("."), location, scopeLocation));
macros.push_back(addLocationSuffix(macroNameHierarchy.getQualifiedName(), location, scopeLocation));
}
std::vector<std::string> errors;
@@ -1175,6 +1175,8 @@ private:
std::shared_ptr<TestParserClient> parseCode(std::string code, bool logErrors = true)
{
NameHierarchy::setDelimiter(".");
m_args.logErrors = logErrors;
m_args.language = "Java";
m_args.languageStandard = "1.8";