src: refactored name resolvers

* added classes that represent different name kinds
* rewrote NameResolvers to return the new name classes instead of NameElement and NameHierarchy
* removed DataType classes since their functionality moved to the CxxTypeName class.
This commit is contained in:
malte_langkabel
2016-11-16 15:37:02 +01:00
parent a35e8a53de
commit 7873710ba8
42 changed files with 873 additions and 691 deletions
-13
View File
@@ -159,19 +159,6 @@ add_files(
data/search/SearchMatch.cpp
data/search/SearchMatch.h
data/type/ArrayModifiedDataType.cpp
data/type/ArrayModifiedDataType.h
data/type/DataType.cpp
data/type/DataType.h
data/type/ModifiedDataType.cpp
data/type/ModifiedDataType.h
data/type/NamedDataType.cpp
data/type/NamedDataType.h
data/type/PointerModifiedDataType.cpp
data/type/PointerModifiedDataType.h
data/type/ReferenceModifiedDataType.cpp
data/type/ReferenceModifiedDataType.h
data/DefinitionType.cpp
data/DefinitionType.h
data/ErrorCountInfo.h
-1
View File
@@ -25,7 +25,6 @@
#include "data/location/TokenLocationFile.h"
#include "data/location/TokenLocationLine.h"
#include "data/parser/ParseLocation.h"
#include "data/type/DataType.h"
PersistentStorage::PersistentStorage(const FilePath& dbPath)
: m_sqliteStorage(dbPath)
+1 -1
View File
@@ -38,7 +38,7 @@ std::string NameElement::Signature::qualifyName(const std::string& name) const
}
std::string qualifiedName = m_prefix;
if (name.size() > 0)
if (!name.empty())
{
if (!m_prefix.empty())
{
-1
View File
@@ -3,7 +3,6 @@
#include <sstream>
#include "data/parser/ParseLocation.h"
#include "data/type/DataType.h"
#include "utility/utilityString.h"
std::string ParserClient::addAccessPrefix(const std::string& str, AccessKind access)
@@ -1,15 +0,0 @@
#include "data/type/ArrayModifiedDataType.h"
ArrayModifiedDataType::ArrayModifiedDataType(std::shared_ptr<DataType> dataType)
: ModifiedDataType(dataType)
{
}
ArrayModifiedDataType::~ArrayModifiedDataType()
{
}
void ArrayModifiedDataType::applyModifier(std::string& typeName) const
{
typeName.append(" []");
}
-16
View File
@@ -1,16 +0,0 @@
#ifndef ARRAY_MODIFIED_DATA_TYPE_H
#define ARRAY_MODIFIED_DATA_TYPE_H
#include "ModifiedDataType.h"
class ArrayModifiedDataType: public ModifiedDataType
{
public:
ArrayModifiedDataType(std::shared_ptr<DataType> dataType);
virtual ~ArrayModifiedDataType();
protected:
virtual void applyModifier(std::string& typeName) const;
};
#endif // ARRAY_MODIFIED_DATA_TYPE_H
-33
View File
@@ -1,33 +0,0 @@
#include "data/type/DataType.h"
DataType::DataType()
: m_qualifiers(QUALIFIER_NONE)
{
}
DataType::~DataType()
{
}
void DataType::addQualifier(QualifierType qualifier)
{
m_qualifiers = m_qualifiers | qualifier;
}
void DataType::removeQualifier(QualifierType qualifier)
{
m_qualifiers = m_qualifiers & ~qualifier;
}
bool DataType::hasQualifier(QualifierType qualifier) const
{
return (m_qualifiers & qualifier) > 0;
}
void DataType::applyQualifieres(std::string& typeName) const
{
if (hasQualifier(QUALIFIER_CONST))
{
typeName += " const";
}
}
-35
View File
@@ -1,35 +0,0 @@
#ifndef DATA_TYPE_H
#define DATA_TYPE_H
#include <string>
#include "data/name/NameHierarchy.h"
class DataType
{
public:
enum QualifierType
{
QUALIFIER_NONE = 0,
QUALIFIER_CONST = 1
};
DataType();
virtual ~DataType();
virtual std::string getFullTypeName() const = 0;
virtual std::string getRawTypeName() const = 0;
virtual const NameHierarchy& getTypeNameHierarchy() const = 0;
void addQualifier(QualifierType qualifier);
void removeQualifier(QualifierType qualifier);
bool hasQualifier(QualifierType qualifier) const;
protected:
void applyQualifieres(std::string& typeName) const;
private:
char m_qualifiers;
};
#endif // DATA_TYPE_H
-28
View File
@@ -1,28 +0,0 @@
#include "data/type/ModifiedDataType.h"
ModifiedDataType::ModifiedDataType(std::shared_ptr<DataType> dataType)
: m_dataType(dataType)
{
}
ModifiedDataType::~ModifiedDataType()
{
}
std::string ModifiedDataType::getFullTypeName() const
{
std::string fullTypeName = m_dataType->getFullTypeName();
applyModifier(fullTypeName);
applyQualifieres(fullTypeName);
return fullTypeName;
}
std::string ModifiedDataType::getRawTypeName() const
{
return m_dataType->getRawTypeName();
}
const NameHierarchy& ModifiedDataType::getTypeNameHierarchy() const
{
return m_dataType->getTypeNameHierarchy();
}
-25
View File
@@ -1,25 +0,0 @@
#ifndef MODIFIED_DATA_TYPE_H
#define MODIFIED_DATA_TYPE_H
#include <memory>
#include "DataType.h"
class ModifiedDataType: public DataType
{
public:
ModifiedDataType(std::shared_ptr<DataType> dataType);
virtual ~ModifiedDataType();
virtual std::string getFullTypeName() const;
virtual std::string getRawTypeName() const;
virtual const NameHierarchy& getTypeNameHierarchy() const;
protected:
virtual void applyModifier(std::string& typeName) const = 0;
private:
const std::shared_ptr<DataType> m_dataType;
};
#endif // MODIFIED_DATA_TYPE_H
-29
View File
@@ -1,29 +0,0 @@
#include "data/type/NamedDataType.h"
#include "utility/utilityString.h"
NamedDataType::NamedDataType(const NameHierarchy& nameHierarchy)
: m_nameHierarchy(nameHierarchy)
{
}
NamedDataType::~NamedDataType()
{
}
std::string NamedDataType::getFullTypeName() const
{
std::string fullTypeName = getRawTypeName();
applyQualifieres(fullTypeName);
return fullTypeName;
}
std::string NamedDataType::getRawTypeName() const
{
return m_nameHierarchy.getQualifiedNameWithSignature();
}
const NameHierarchy& NamedDataType::getTypeNameHierarchy() const
{
return m_nameHierarchy;
}
-21
View File
@@ -1,21 +0,0 @@
#ifndef NAMED_DATA_TYPE_H
#define NAMED_DATA_TYPE_H
#include "data/type/DataType.h"
class NamedDataType: public DataType
{
public:
NamedDataType(const NameHierarchy& nameHierarchy);
virtual ~NamedDataType();
virtual std::string getFullTypeName() const;
virtual std::string getRawTypeName() const;
virtual const NameHierarchy& getTypeNameHierarchy() const;
private:
const NameHierarchy m_nameHierarchy;
};
#endif // NAMED_DATA_TYPE_H
@@ -1,15 +0,0 @@
#include "data/type/PointerModifiedDataType.h"
PointerModifiedDataType::PointerModifiedDataType(std::shared_ptr<DataType> dataType)
: ModifiedDataType(dataType)
{
}
PointerModifiedDataType::~PointerModifiedDataType()
{
}
void PointerModifiedDataType::applyModifier(std::string& typeName) const
{
typeName.append(" *");
}
@@ -1,16 +0,0 @@
#ifndef POINTER_MODIFIED_DATA_TYPE_H
#define POINTER_MODIFIED_DATA_TYPE_H
#include "ModifiedDataType.h"
class PointerModifiedDataType: public ModifiedDataType
{
public:
PointerModifiedDataType(std::shared_ptr<DataType> dataType);
virtual ~PointerModifiedDataType();
protected:
virtual void applyModifier(std::string& typeName) const;
};
#endif // POINTER_MODIFIED_DATA_TYPE_H
@@ -1,15 +0,0 @@
#include "data/type/ReferenceModifiedDataType.h"
ReferenceModifiedDataType::ReferenceModifiedDataType(std::shared_ptr<DataType> dataType)
: ModifiedDataType(dataType)
{
}
ReferenceModifiedDataType::~ReferenceModifiedDataType()
{
}
void ReferenceModifiedDataType::applyModifier(std::string& typeName) const
{
typeName.append(" &");
}
@@ -1,16 +0,0 @@
#ifndef REFERENCE_MODIFIED_DATA_TYPE_H
#define REFERENCE_MODIFIED_DATA_TYPE_H
#include "ModifiedDataType.h"
class ReferenceModifiedDataType: public ModifiedDataType
{
public:
ReferenceModifiedDataType(std::shared_ptr<DataType> dataType);
virtual ~ReferenceModifiedDataType();
protected:
virtual void applyModifier(std::string& typeName) const;
};
#endif // REFERENCE_MODIFIED_DATA_TYPE_H