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; |
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> ¶meters) |
659 inline void FunctionNode::setParameters(const QList<Parameter> ¶meters) |
657 { |
660 { |