[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdevelop/languages/cpp/parser
From: Roberto Raggi <roberto () kdevelop ! org>
Date: 2006-04-30 18:10:51
Message-ID: 1146420651.499602.14719.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 535921 by raggi:
references
M +31 -0 typesystem.cpp
M +43 -3 typesystem.h
--- trunk/KDE/kdevelop/languages/cpp/parser/typesystem.cpp #535920:535921
@@ -29,6 +29,11 @@
return qHash (t.baseType ());
}
+uint qHash (const ReferenceType &t)
+{
+ return qHash (t.baseType ());
+}
+
uint qHash (const FunctionType &t)
{
QVector<const AbstractType *> arguments (t.arguments ());
@@ -59,6 +64,11 @@
return &*_M_pointer_type_table.insert (PointerType (baseType));
}
+const ReferenceType *TypeEnvironment::referenceType (const AbstractType *baseType)
+{
+ return &*_M_reference_type_table.insert (ReferenceType (baseType));
+}
+
const FunctionType *TypeEnvironment::functionType (const AbstractType *returnType,
const QVector<const AbstractType *> &arguments)
{
@@ -87,3 +97,24 @@
return &*_M_function_type_table.insert (FunctionType (returnType, arguments));
}
+const FunctionType *TypeEnvironment::functionType (const AbstractType *returnType, \
const AbstractType *arg_1, + const AbstractType *arg_2, const AbstractType *arg_3)
+{
+ QVector<const AbstractType *> arguments (3);
+ arguments[0] = arg_1;
+ arguments[1] = arg_2;
+ arguments[2] = arg_3;
+ return &*_M_function_type_table.insert (FunctionType (returnType, arguments));
+}
+
+const FunctionType *TypeEnvironment::functionType (const AbstractType *returnType, \
const AbstractType *arg_1, + const AbstractType *arg_2, const AbstractType *arg_3,
+ const AbstractType *arg_4)
+{
+ QVector<const AbstractType *> arguments (4);
+ arguments[0] = arg_1;
+ arguments[1] = arg_2;
+ arguments[2] = arg_3;
+ arguments[3] = arg_4;
+ return &*_M_function_type_table.insert (FunctionType (returnType, arguments));
+}
--- trunk/KDE/kdevelop/languages/cpp/parser/typesystem.h #535920:535921
@@ -26,6 +26,7 @@
class AbstractType;
class IntegralType;
class PointerType;
+class ReferenceType;
class FunctionType;
@@ -43,12 +44,13 @@
virtual bool visit (const PointerType *) { return true; }
virtual void endVisit (const PointerType *) {}
+ virtual bool visit (const ReferenceType *) { return true; }
+ virtual void endVisit (const ReferenceType *) {}
+
virtual bool visit (const FunctionType *) { return true; }
virtual void endVisit (const FunctionType *) {}
};
-
-
class AbstractType
{
public:
@@ -125,6 +127,34 @@
const AbstractType *_M_baseType;
};
+class ReferenceType: public AbstractType
+{
+public:
+ ReferenceType (const AbstractType *baseType):
+ _M_baseType (baseType) {}
+
+ inline const AbstractType *baseType () const
+ { return _M_baseType; }
+
+ inline bool operator == (const ReferenceType &__other) const
+ { return _M_baseType == __other._M_baseType; }
+
+ inline bool operator != (const ReferenceType &__other) const
+ { return _M_baseType != __other._M_baseType; }
+
+protected:
+ virtual void accept0 (TypeVisitor *v) const
+ {
+ if (v->visit (this))
+ acceptType (_M_baseType, v);
+
+ v->endVisit (this);
+ }
+
+private:
+ const AbstractType *_M_baseType;
+};
+
class FunctionType: public AbstractType
{
public:
@@ -169,6 +199,7 @@
typedef QSet<QString> NameTable;
typedef QSet<IntegralType> IntegralTypeTable;
typedef QSet<PointerType> PointerTypeTable;
+ typedef QSet<ReferenceType> ReferenceTypeTable;
typedef QSet<FunctionType> FunctionTypeTable;
public:
@@ -178,21 +209,30 @@
const IntegralType *integralType (const QString *name);
const PointerType *pointerType (const AbstractType *baseType);
+ const ReferenceType *referenceType (const AbstractType *baseType);
const FunctionType *functionType (const AbstractType *returnType, const \
QVector<const AbstractType *> &arguments); const FunctionType *functionType (const \
AbstractType *returnType); const FunctionType *functionType (const AbstractType \
*returnType, const AbstractType *arg_1);
- const FunctionType *functionType (const AbstractType *returnType, const \
AbstractType *arg_1, const AbstractType *arg_2); + const FunctionType *functionType \
(const AbstractType *returnType, const AbstractType *arg_1, + \
const AbstractType *arg_2); + const FunctionType *functionType (const AbstractType \
*returnType, const AbstractType *arg_1, + const \
AbstractType *arg_2, const AbstractType *arg_3); + const FunctionType *functionType \
(const AbstractType *returnType, const AbstractType *arg_1, + \
const AbstractType *arg_2, const AbstractType *arg_3, + \
const AbstractType *arg_4);
private:
NameTable _M_name_table;
IntegralTypeTable _M_integral_type_table;
PointerTypeTable _M_pointer_type_table;
+ ReferenceTypeTable _M_reference_type_table;
FunctionTypeTable _M_function_type_table;
};
uint qHash (const IntegralType &t);
uint qHash (const PointerType &t);
+uint qHash (const ReferenceType &t);
uint qHash (const FunctionType &t);
#endif // TYPESYSTEM_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic