data: storing type modifiers in edges

- ASTVisitor uses DataType instead of string to pass on type information.
- Edges can have EdgeComponents.
- EdgeComponentDataType stores information that modifies the type a ...TYPE_OF edge points to.
- EdgeComponentDataType can create a complete DataType using it's internal information.
- Fixed a bug where DataTypeModifiers did not apply their qualifiers.
This commit is contained in:
malte_langkabel
2014-07-10 11:54:29 +02:00
parent 2eaecc4913
commit f1f2ea0ccd
25 changed files with 311 additions and 111 deletions
+8 -7
View File
@@ -6,6 +6,7 @@
struct ParseLocation;
struct ParseVariable;
struct DataType;
class ParserClient
{
@@ -27,9 +28,8 @@ public:
virtual ~ParserClient();
virtual void onTypedefParsed(
const ParseLocation& location, const std::string& fullName, const std::string& underlyingFullName,
AccessType access
) = 0;
const ParseLocation& location, const std::string& fullName, const DataType& underlyingType,
AccessType access) = 0;
virtual void onClassParsed(const ParseLocation& location, const std::string& fullName, AccessType access) = 0;
virtual void onStructParsed(const ParseLocation& location, const std::string& fullName, AccessType access) = 0;
@@ -37,11 +37,12 @@ public:
virtual void onFieldParsed(const ParseLocation& location, const ParseVariable& variable, AccessType access) = 0;
virtual void onFunctionParsed(
const ParseLocation& location, const std::string& fullName, const std::string& returnTypeName,
const ParseLocation& location, const std::string& fullName, const DataType& returnType,
const std::vector<ParseVariable>& parameters) = 0;
virtual void onMethodParsed(const ParseLocation& location, const std::string& fullName,
const std::string& returnTypeName, const std::vector<ParseVariable>& parameters, AccessType access,
AbstractionType abstraction, bool isConst, bool isStatic) = 0;
virtual void onMethodParsed(
const ParseLocation& location, const std::string& fullName, const DataType& returnType,
const std::vector<ParseVariable>& parameters, AccessType access, AbstractionType abstraction,
bool isConst, bool isStatic) = 0;
virtual void onNamespaceParsed(const ParseLocation& location, const std::string& fullName) = 0;