Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/tools/qdoc3/node.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the tools applications of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    7373        Property,
    7474        Variable,
    75         Target
     75#ifdef QDOC_QML
     76        Target,
     77        QmlProperty,
     78        QmlSignal,
     79        QmlMethod,
     80        LastType
     81#else
     82        Target,
     83        LastType
     84#endif
     85    };
     86
     87    enum SubType {
     88        NoSubType,
     89        Example,
     90        HeaderFile,
     91        File,
     92        Image,
     93        Group,
     94        Module,
     95        Page,
     96#ifdef QDOC_QML
     97        ExternalPage,
     98        QmlClass,
     99        QmlPropertyGroup
     100#else
     101        ExternalPage
     102#endif
    76103    };
    77104   
     
    100127        PreviousLink,
    101128        ContentsLink,
    102         IndexLink /*,
     129        IndexLink,
     130        InheritsLink /*,
    103131        GlossaryLink,
    104132        CopyrightLink,
     
    124152
    125153    virtual bool isInnerNode() const = 0;
     154    virtual bool isReimp() const { return false; }
     155    virtual bool isFunction() const { return false; }
    126156    Type type() const { return typ; }
     157    virtual SubType subType() const { return NoSubType; }
    127158    InnerNode *parent() const { return par; }
    128159    InnerNode *relates() const { return rel; }
     
    131162    QString moduleName() const;
    132163    QString url() const;
     164    virtual QString nameForLists() const { return nam; }
    133165
    134166    Access access() const { return acc; }
     
    144176    void clearRelated() { rel = 0; }
    145177
    146     QString fileBase() const;
     178    virtual QString fileBase() const;
    147179
    148180 protected:
     
    150182
    151183 private:
     184
    152185#ifdef Q_WS_WIN
    153186    Type typ;
     
    181214{
    182215 public:
    183     ~InnerNode();
     216    virtual ~InnerNode();
    184217
    185218    Node *findNode(const QString& name);
     
    203236    const NodeList & childNodes() const { return children; }
    204237    const NodeList & relatedNodes() const { return related; }
     238    int count() const { return children.size(); }
    205239    int overloadNumber(const FunctionNode *func) const;
    206240    int numOverloads(const QString& funcName) const;
    207241    NodeList overloads(const QString &funcName) const;
    208242    const QStringList& includes() const { return inc; }
     243
     244    QStringList primaryKeys();
     245    QStringList secondaryKeys();
    209246
    210247 protected:
     
    232269 public:
    233270    LeafNode();
     271    virtual ~LeafNode() { }
    234272
    235273    virtual bool isInnerNode() const;
    236274
    237275 protected:
    238     LeafNode(Type type, InnerNode *parent, const QString& name);
     276    LeafNode(Type type, InnerNode* parent, const QString& name);
    239277};
    240278
     
    243281 public:
    244282    NamespaceNode(InnerNode *parent, const QString& name);
     283    virtual ~NamespaceNode() { }
    245284};
    246285
     
    266305 public:
    267306    ClassNode(InnerNode *parent, const QString& name);
     307    virtual ~ClassNode() { }
    268308
    269309    void addBaseClass(Access access,
     
    280320    QString serviceName() const { return sname; }
    281321    void setServiceName(const QString& value) { sname = value; }
     322    QString qmlElement() const { return qmlelement; }
     323    void setQmlElement(const QString& value) { qmlelement = value; }
    282324
    283325 private:
     
    286328    bool hidden;
    287329    QString sname;
     330    QString qmlelement;
    288331};
    289332
     
    291334{
    292335 public:
    293     enum SubType {
    294         Example,
    295         HeaderFile,
    296         File,
    297         Group,
    298         Module,
    299         Page,
    300         ExternalPage,
    301         QmlClass
    302     };
    303336
    304337    FakeNode(InnerNode *parent, const QString& name, SubType subType);
     338    virtual ~FakeNode() { }
    305339
    306340    void setTitle(const QString &title) { tle = title; }
     
    313347    QString subTitle() const;
    314348    const NodeList &groupMembers() const { return gr; }
     349    virtual QString nameForLists() const { return title(); }
    315350
    316351 private:
     
    321356};
    322357
    323 class QmlNode : public FakeNode
    324 {
    325  public:
    326     QmlNode(InnerNode *parent, const QString& name, const ClassNode* cn)
    327         : FakeNode(parent, name, QmlClass), cnode(cn) { }
     358#ifdef QDOC_QML
     359class QmlClassNode : public FakeNode
     360{
     361 public:
     362    QmlClassNode(InnerNode *parent,
     363                 const QString& name,
     364                 const ClassNode* cn);
     365    virtual ~QmlClassNode() { }
    328366
    329367    const ClassNode* classNode() const { return cnode; }
     368    virtual QString fileBase() const;
     369
     370    static bool qmlOnly;
    330371
    331372 private:
    332373    const ClassNode* cnode;
    333374};
     375
     376class QmlPropGroupNode : public FakeNode
     377{
     378 public:
     379    QmlPropGroupNode(QmlClassNode* parent,
     380                     const QString& name,
     381                     bool attached);
     382    virtual ~QmlPropGroupNode() { }
     383
     384    const QString& element() const { return parent()->name(); }
     385    void setDefault() { isdefault = true; }
     386    bool isDefault() const { return isdefault; }
     387    bool isAttached() const { return att; }
     388
     389 private:
     390    bool    isdefault;
     391    bool    att;
     392};
     393
     394class QmlPropertyNode : public LeafNode
     395{
     396 public:
     397    QmlPropertyNode(QmlPropGroupNode* parent,
     398                    const QString& name,
     399                    const QString& type,
     400                    bool attached);
     401    virtual ~QmlPropertyNode() { }
     402
     403    void setDataType(const QString& dataType) { dt = dataType; }
     404    void setStored(bool stored) { sto = toTrool(stored); }
     405    void setDesignable(bool designable) { des = toTrool(designable); }
     406    void setWritable(bool writable) { wri = toTrool(writable); }
     407
     408    const QString &dataType() const { return dt; }
     409    QString qualifiedDataType() const { return dt; }
     410    bool isStored() const { return fromTrool(sto,true); }
     411    bool isDesignable() const { return fromTrool(des,false); }
     412    bool isWritable() const { return fromTrool(wri,true); }
     413    bool isAttached() const { return att; }
     414
     415    const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); }
     416
     417 private:
     418    enum Trool { Trool_True, Trool_False, Trool_Default };
     419
     420    static Trool toTrool(bool boolean);
     421    static bool fromTrool(Trool troolean, bool defaultValue);
     422
     423    QString dt;
     424    Trool   sto;
     425    Trool   des;
     426    Trool   wri;
     427    bool    att;
     428};
     429#endif
    334430
    335431class EnumItem
     
    358454 public:
    359455    EnumNode(InnerNode *parent, const QString& name);
     456    virtual ~EnumNode() { }
    360457
    361458    void addItem(const EnumItem& item);
     
    378475 public:
    379476    TypedefNode(InnerNode *parent, const QString& name);
     477    virtual ~TypedefNode() { }
    380478
    381479    const EnumNode *associatedEnum() const { return ae; }
     
    400498 public:
    401499    Parameter() {}
    402     Parameter(const QString& leftType, const QString& rightType = "",
    403                const QString& name = "", const QString& defaultValue = "");
     500    Parameter(const QString& leftType,
     501              const QString& rightType = "",
     502              const QString& name = "",
     503              const QString& defaultValue = "");
    404504    Parameter(const Parameter& p);
    405505
     
    413513    const QString& name() const { return nam; }
    414514    const QString& defaultValue() const { return def; }
     515
     516    QString reconstruct(bool value = false) const;
    415517
    416518 private:
     
    438540
    439541    FunctionNode(InnerNode *parent, const QString &name);
     542    FunctionNode(Type type, InnerNode *parent, const QString &name, bool attached);
     543    virtual ~FunctionNode() { }
    440544
    441545    void setReturnType(const QString& returnType) { rt = returnType; }
     546    void setParentPath(const QStringList& parentPath) { pp = parentPath; }
    442547    void setMetaness(Metaness metaness) { met = metaness; }
    443548    void setVirtualness(Virtualness virtualness) { vir = virtualness; }
     
    445550    void setStatic(bool statique) { sta = statique; }
    446551    void setOverload(bool overlode);
     552    void setReimp(bool r);
    447553    void addParameter(const Parameter& parameter);
    448554    inline void setParameters(const QList<Parameter>& parameters);
     
    459565    bool isStatic() const { return sta; }
    460566    bool isOverload() const { return ove; }
     567    bool isReimp() const { return reimp; }
     568    bool isFunction() const { return true; }
    461569    int overloadNumber() const;
    462570    int numOverloads() const;
     
    466574    const QList<FunctionNode *> &reimplementedBy() const { return rb; }
    467575    const PropertyNode *associatedProperty() const { return ap; }
     576    const QStringList& parentPath() const { return pp; }
     577
     578    QStringList reconstructParams(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;
    468584
    469585 private:
     
    473589    friend class PropertyNode;
    474590
    475     QString rt;
     591    QString     rt;
     592    QStringList pp;
    476593#ifdef Q_WS_WIN
    477     Metaness met;
     594    Metaness    met;
    478595    Virtualness vir;
    479596#else
     
    484601    bool sta : 1;
    485602    bool ove : 1;
     603    bool reimp: 1;
     604    bool att: 1;
    486605    QList<Parameter> params;
    487606    const FunctionNode *rf;
     
    493612{
    494613 public:
    495     enum FunctionRole { Getter, Setter, Resetter };
    496     enum { NumFunctionRoles = Resetter + 1 };
     614    enum FunctionRole { Getter, Setter, Resetter, Notifier };
     615    enum { NumFunctionRoles = Notifier + 1 };
    497616
    498617    PropertyNode(InnerNode *parent, const QString& name);
     618    virtual ~PropertyNode() { }
    499619
    500620    void setDataType(const QString& dataType) { dt = dataType; }
    501621    void addFunction(FunctionNode *function, FunctionRole role);
     622    void addSignal(FunctionNode *function, FunctionRole role);
    502623    void setStored(bool stored) { sto = toTrool(stored); }
    503624    void setDesignable(bool designable) { des = toTrool(designable); }
     625    void setWritable(bool writable) { wri = toTrool(writable); }
    504626    void setOverriddenFrom(const PropertyNode *baseProperty);
    505627
     
    511633    NodeList setters() const { return functions(Setter); }
    512634    NodeList resetters() const { return functions(Resetter); }
     635    NodeList notifiers() const { return functions(Notifier); }
    513636    bool isStored() const { return fromTrool(sto, storedDefault()); }
    514637    bool isDesignable() const { return fromTrool(des, designableDefault()); }
     638    bool isWritable() const { return fromTrool(wri, writableDefault()); }
    515639    const PropertyNode *overriddenFrom() const { return overrides; }
    516640
     
    523647    bool storedDefault() const { return true; }
    524648    bool designableDefault() const { return !setters().isEmpty(); }
     649    bool writableDefault() const { return !setters().isEmpty(); }
    525650
    526651    QString dt;
     
    528653    Trool sto;
    529654    Trool des;
     655    Trool wri;
    530656    const PropertyNode *overrides;
    531657};
     
    540666    funcs[(int)role].append(function);
    541667    function->setAssociatedProperty(this);
     668}
     669
     670inline void PropertyNode::addSignal(FunctionNode *function, FunctionRole role)
     671{
     672    funcs[(int)role].append(function);
    542673}
    543674
     
    554685 public:
    555686    VariableNode(InnerNode *parent, const QString &name);
     687    virtual ~VariableNode() { }
    556688
    557689    void setLeftType(const QString &leftType) { lt = leftType; }
     
    579711 public:
    580712    TargetNode(InnerNode *parent, const QString& name);
     713    virtual ~TargetNode() { }
    581714
    582715    virtual bool isInnerNode() const;
Note: See TracChangeset for help on using the changeset viewer.