tools/qdoc3/node.h
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    87     enum SubType { 
    87     enum SubType { 
    88         NoSubType,
    88         NoSubType,
    89         Example, 
    89         Example, 
    90         HeaderFile, 
    90         HeaderFile, 
    91         File,
    91         File,
       
    92         Image,
    92         Group,
    93         Group,
    93         Module,
    94         Module,
    94         Page,
    95         Page,
    95 #ifdef QDOC_QML
    96 #ifdef QDOC_QML
    96         ExternalPage,
    97         ExternalPage,
   149     void setUrl(const QString &url);
   150     void setUrl(const QString &url);
   150     void setTemplateStuff(const QString &templateStuff) { tpl = templateStuff; }
   151     void setTemplateStuff(const QString &templateStuff) { tpl = templateStuff; }
   151 
   152 
   152     virtual bool isInnerNode() const = 0;
   153     virtual bool isInnerNode() const = 0;
   153     virtual bool isReimp() const { return false; }
   154     virtual bool isReimp() const { return false; }
       
   155     virtual bool isFunction() const { return false; }
   154     Type type() const { return typ; }
   156     Type type() const { return typ; }
   155     virtual SubType subType() const { return NoSubType; }
   157     virtual SubType subType() const { return NoSubType; }
   156     InnerNode *parent() const { return par; }
   158     InnerNode *parent() const { return par; }
   157     InnerNode *relates() const { return rel; }
   159     InnerNode *relates() const { return rel; }
   158     const QString& name() const { return nam; }
   160     const QString& name() const { return nam; }
   237     int overloadNumber(const FunctionNode *func) const;
   239     int overloadNumber(const FunctionNode *func) const;
   238     int numOverloads(const QString& funcName) const;
   240     int numOverloads(const QString& funcName) const;
   239     NodeList overloads(const QString &funcName) const;
   241     NodeList overloads(const QString &funcName) const;
   240     const QStringList& includes() const { return inc; }
   242     const QStringList& includes() const { return inc; }
   241 
   243 
       
   244     QStringList primaryKeys();
       
   245     QStringList secondaryKeys();
       
   246 
   242  protected:
   247  protected:
   243     InnerNode(Type type, InnerNode *parent, const QString& name);
   248     InnerNode(Type type, InnerNode *parent, const QString& name);
   244 
   249 
   245  private:
   250  private:
   246     friend class Node;
   251     friend class Node;
   360     virtual ~QmlClassNode() { }
   365     virtual ~QmlClassNode() { }
   361 
   366 
   362     const ClassNode* classNode() const { return cnode; }
   367     const ClassNode* classNode() const { return cnode; }
   363     virtual QString fileBase() const;
   368     virtual QString fileBase() const;
   364 
   369 
       
   370     static bool qmlOnly;
       
   371 
   365  private:
   372  private:
   366     const ClassNode* cnode;
   373     const ClassNode* cnode;
   367 };
   374 };
   368 
   375 
   369 class QmlPropGroupNode : public FakeNode
   376 class QmlPropGroupNode : public FakeNode
   372     QmlPropGroupNode(QmlClassNode* parent, 
   379     QmlPropGroupNode(QmlClassNode* parent, 
   373                      const QString& name,
   380                      const QString& name,
   374                      bool attached);
   381                      bool attached);
   375     virtual ~QmlPropGroupNode() { }
   382     virtual ~QmlPropGroupNode() { }
   376 
   383 
   377     const QString& element() const { return name(); }
   384     const QString& element() const { return parent()->name(); }
   378     void setDefault() { isdefault = true; }
   385     void setDefault() { isdefault = true; }
   379     bool isDefault() const { return isdefault; }
   386     bool isDefault() const { return isdefault; }
   380     bool isAttached() const { return att; }
   387     bool isAttached() const { return att; }
   381 
   388 
   382  private:
   389  private:
   394     virtual ~QmlPropertyNode() { }
   401     virtual ~QmlPropertyNode() { }
   395 
   402 
   396     void setDataType(const QString& dataType) { dt = dataType; }
   403     void setDataType(const QString& dataType) { dt = dataType; }
   397     void setStored(bool stored) { sto = toTrool(stored); }
   404     void setStored(bool stored) { sto = toTrool(stored); }
   398     void setDesignable(bool designable) { des = toTrool(designable); }
   405     void setDesignable(bool designable) { des = toTrool(designable); }
       
   406     void setWritable(bool writable) { wri = toTrool(writable); }
   399 
   407 
   400     const QString &dataType() const { return dt; }
   408     const QString &dataType() const { return dt; }
   401     QString qualifiedDataType() const { return dt; }
   409     QString qualifiedDataType() const { return dt; }
   402     bool isStored() const { return fromTrool(sto,true); }
   410     bool isStored() const { return fromTrool(sto,true); }
   403     bool isDesignable() const { return fromTrool(des,false); }
   411     bool isDesignable() const { return fromTrool(des,false); }
       
   412     bool isWritable() const { return fromTrool(wri,true); }
   404     bool isAttached() const { return att; }
   413     bool isAttached() const { return att; }
   405 
   414 
   406     const QString& element() const { return parent()->name(); }
   415     const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); }
   407 
   416 
   408  private:
   417  private:
   409     enum Trool { Trool_True, Trool_False, Trool_Default };
   418     enum Trool { Trool_True, Trool_False, Trool_Default };
   410 
   419 
   411     static Trool toTrool(bool boolean);
   420     static Trool toTrool(bool boolean);
   412     static bool fromTrool(Trool troolean, bool defaultValue);
   421     static bool fromTrool(Trool troolean, bool defaultValue);
   413 
   422 
   414     QString dt;
   423     QString dt;
   415     Trool   sto;
   424     Trool   sto;
   416     Trool   des;
   425     Trool   des;
       
   426     Trool   wri;
   417     bool    att;
   427     bool    att;
   418 };
       
   419 
       
   420 class QmlSignalNode : public LeafNode
       
   421 {
       
   422  public:
       
   423     QmlSignalNode(QmlClassNode* parent, const QString& name);
       
   424     virtual ~QmlSignalNode() { }
       
   425 
       
   426     const QString& element() const { return parent()->name(); }
       
   427 };
       
   428 
       
   429 class QmlMethodNode : public LeafNode
       
   430 {
       
   431  public:
       
   432     QmlMethodNode(QmlClassNode* parent, const QString& name);
       
   433     virtual ~QmlMethodNode() { }
       
   434 
       
   435     const QString& element() const { return parent()->name(); }
       
   436 };
   428 };
   437 #endif
   429 #endif
   438 
   430 
   439 class EnumItem
   431 class EnumItem
   440 {
   432 {
   545         MacroWithoutParams, 
   537         MacroWithoutParams, 
   546         Native };
   538         Native };
   547     enum Virtualness { NonVirtual, ImpureVirtual, PureVirtual };
   539     enum Virtualness { NonVirtual, ImpureVirtual, PureVirtual };
   548 
   540 
   549     FunctionNode(InnerNode *parent, const QString &name);
   541     FunctionNode(InnerNode *parent, const QString &name);
       
   542     FunctionNode(Type type, InnerNode *parent, const QString &name, bool attached);
   550     virtual ~FunctionNode() { }
   543     virtual ~FunctionNode() { }
   551 
   544 
   552     void setReturnType(const QString& returnType) { rt = returnType; }
   545     void setReturnType(const QString& returnType) { rt = returnType; }
   553     void setParentPath(const QStringList& parentPath) { pp = parentPath; }
   546     void setParentPath(const QStringList& parentPath) { pp = parentPath; }
   554     void setMetaness(Metaness metaness) { met = metaness; }
   547     void setMetaness(Metaness metaness) { met = metaness; }
   570     Virtualness virtualness() const { return vir; }
   563     Virtualness virtualness() const { return vir; }
   571     bool isConst() const { return con; }
   564     bool isConst() const { return con; }
   572     bool isStatic() const { return sta; }
   565     bool isStatic() const { return sta; }
   573     bool isOverload() const { return ove; }
   566     bool isOverload() const { return ove; }
   574     bool isReimp() const { return reimp; }
   567     bool isReimp() const { return reimp; }
       
   568     bool isFunction() const { return true; }
   575     int overloadNumber() const;
   569     int overloadNumber() const;
   576     int numOverloads() const;
   570     int numOverloads() const;
   577     const QList<Parameter>& parameters() const { return params; }
   571     const QList<Parameter>& parameters() const { return params; }
   578     QStringList parameterNames() const;
   572     QStringList parameterNames() const;
   579     const FunctionNode *reimplementedFrom() const { return rf; }
   573     const FunctionNode *reimplementedFrom() const { return rf; }
   581     const PropertyNode *associatedProperty() const { return ap; }
   575     const PropertyNode *associatedProperty() const { return ap; }
   582     const QStringList& parentPath() const { return pp; }
   576     const QStringList& parentPath() const { return pp; }
   583 
   577 
   584     QStringList reconstructParams(bool values = false) const;
   578     QStringList reconstructParams(bool values = false) const;
   585     QString signature(bool values = false) const;
   579     QString signature(bool values = false) const;
       
   580     const QString& element() const { return parent()->name(); }
       
   581     bool isAttached() const { return att; }
       
   582 
       
   583     void debug() const;
   586 
   584 
   587  private:
   585  private:
   588     void setAssociatedProperty(PropertyNode *property);
   586     void setAssociatedProperty(PropertyNode *property);
   589 
   587 
   590     friend class InnerNode;
   588     friend class InnerNode;
   601 #endif
   599 #endif
   602     bool con : 1;
   600     bool con : 1;
   603     bool sta : 1;
   601     bool sta : 1;
   604     bool ove : 1;
   602     bool ove : 1;
   605     bool reimp: 1; 
   603     bool reimp: 1; 
       
   604     bool att: 1;
   606     QList<Parameter> params;
   605     QList<Parameter> params;
   607     const FunctionNode *rf;
   606     const FunctionNode *rf;
   608     const PropertyNode *ap;
   607     const PropertyNode *ap;
   609     QList<FunctionNode *> rb;
   608     QList<FunctionNode *> rb;
   610 };
   609 };
   621     void setDataType(const QString& dataType) { dt = dataType; }
   620     void setDataType(const QString& dataType) { dt = dataType; }
   622     void addFunction(FunctionNode *function, FunctionRole role);
   621     void addFunction(FunctionNode *function, FunctionRole role);
   623     void addSignal(FunctionNode *function, FunctionRole role);
   622     void addSignal(FunctionNode *function, FunctionRole role);
   624     void setStored(bool stored) { sto = toTrool(stored); }
   623     void setStored(bool stored) { sto = toTrool(stored); }
   625     void setDesignable(bool designable) { des = toTrool(designable); }
   624     void setDesignable(bool designable) { des = toTrool(designable); }
       
   625     void setWritable(bool writable) { wri = toTrool(writable); }
   626     void setOverriddenFrom(const PropertyNode *baseProperty);
   626     void setOverriddenFrom(const PropertyNode *baseProperty);
   627 
   627 
   628     const QString &dataType() const { return dt; }
   628     const QString &dataType() const { return dt; }
   629     QString qualifiedDataType() const;
   629     QString qualifiedDataType() const;
   630     NodeList functions() const;
   630     NodeList functions() const;
   633     NodeList setters() const { return functions(Setter); }
   633     NodeList setters() const { return functions(Setter); }
   634     NodeList resetters() const { return functions(Resetter); }
   634     NodeList resetters() const { return functions(Resetter); }
   635     NodeList notifiers() const { return functions(Notifier); }
   635     NodeList notifiers() const { return functions(Notifier); }
   636     bool isStored() const { return fromTrool(sto, storedDefault()); }
   636     bool isStored() const { return fromTrool(sto, storedDefault()); }
   637     bool isDesignable() const { return fromTrool(des, designableDefault()); }
   637     bool isDesignable() const { return fromTrool(des, designableDefault()); }
       
   638     bool isWritable() const { return fromTrool(wri, writableDefault()); }
   638     const PropertyNode *overriddenFrom() const { return overrides; }
   639     const PropertyNode *overriddenFrom() const { return overrides; }
   639 
   640 
   640  private:
   641  private:
   641     enum Trool { Trool_True, Trool_False, Trool_Default };
   642     enum Trool { Trool_True, Trool_False, Trool_Default };
   642 
   643 
   643     static Trool toTrool(bool boolean);
   644     static Trool toTrool(bool boolean);
   644     static bool fromTrool(Trool troolean, bool defaultValue);
   645     static bool fromTrool(Trool troolean, bool defaultValue);
   645 
   646 
   646     bool storedDefault() const { return true; }
   647     bool storedDefault() const { return true; }
   647     bool designableDefault() const { return !setters().isEmpty(); }
   648     bool designableDefault() const { return !setters().isEmpty(); }
       
   649     bool writableDefault() const { return !setters().isEmpty(); }
   648 
   650 
   649     QString dt;
   651     QString dt;
   650     NodeList funcs[NumFunctionRoles];
   652     NodeList funcs[NumFunctionRoles];
   651     Trool sto;
   653     Trool sto;
   652     Trool des;
   654     Trool des;
       
   655     Trool wri;
   653     const PropertyNode *overrides;
   656     const PropertyNode *overrides;
   654 };
   657 };
   655 
   658 
   656 inline void FunctionNode::setParameters(const QList<Parameter> &parameters)
   659 inline void FunctionNode::setParameters(const QList<Parameter> &parameters)
   657 {
   660 {