[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