Changeset 846 for trunk/tools/qdoc3/node.h
- Timestamp:
- May 5, 2011, 5:36:53 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.7.2 (added) merged: 845 /branches/vendor/nokia/qt/current merged: 844 /branches/vendor/nokia/qt/4.6.3 removed
- Property svn:mergeinfo changed
-
trunk/tools/qdoc3/node.h
r651 r846 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 201 0Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 201 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation ([email protected]) … … 56 56 #include "location.h" 57 57 #include "text.h" 58 58 59 59 60 QT_BEGIN_NAMESPACE … … 97 98 ExternalPage, 98 99 QmlClass, 99 QmlPropertyGroup 100 QmlPropertyGroup, 101 QmlBasicType 100 102 #else 101 103 ExternalPage … … 137 139 }; 138 140 141 142 143 144 145 146 147 139 148 virtual ~Node(); 140 149 … … 145 154 void setThreadSafeness(ThreadSafeness safeness) { saf = safeness; } 146 155 void setSince(const QString &since) { sinc = since; } 147 void setRelates(InnerNode *pseudoParent);156 void setRelates(InnerNodepseudoParent); 148 157 void setModuleName(const QString &module) { mod = module; } 149 158 void setLink(LinkType linkType, const QString &link, const QString &desc); 150 159 void setUrl(const QString &url); 151 160 void setTemplateStuff(const QString &templateStuff) { tpl = templateStuff; } 161 162 152 163 153 164 virtual bool isInnerNode() const = 0; 154 165 virtual bool isReimp() const { return false; } 155 166 virtual bool isFunction() const { return false; } 167 156 168 Type type() const { return typ; } 157 169 virtual SubType subType() const { return NoSubType; } 158 InnerNode *parent() const { return par; }159 InnerNode *relates() const { return rel; }170 InnerNodeparent() const { return par; } 171 InnerNoderelates() const { return rel; } 160 172 const QString& name() const { return nam; } 161 173 QMap<LinkType, QPair<QString,QString> > links() const { return linkMap; } … … 165 177 166 178 Access access() const { return acc; } 179 167 180 const Location& location() const { return loc; } 168 181 const Doc& doc() const { return d; } … … 173 186 QString since() const { return sinc; } 174 187 QString templateStuff() const { return tpl; } 188 189 175 190 176 191 void clearRelated() { rel = 0; } 177 192 178 193 virtual QString fileBase() const; 194 195 196 179 197 180 198 protected: 181 Node(Type type, InnerNode *parent, const QString& name);199 Node(Type type, InnerNodeparent, const QString& name); 182 200 183 201 private: … … 186 204 Type typ; 187 205 Access acc; 206 207 188 208 Status sta; 189 ThreadSafeness saf;190 209 #else 191 210 Type typ : 4; 192 211 Access acc : 2; 212 213 193 214 Status sta : 3; 194 ThreadSafeness saf : 2;195 215 #endif 196 InnerNode *par;197 InnerNode *rel;216 InnerNodepar; 217 InnerNoderel; 198 218 QString nam; 199 219 Location loc; … … 204 224 QString sinc; 205 225 QString tpl; 226 206 227 }; 207 228 … … 209 230 class EnumNode; 210 231 211 typedef QList<Node 232 typedef QList<Node*> NodeList; 212 233 213 234 class InnerNode : public Node … … 216 237 virtual ~InnerNode(); 217 238 218 Node *findNode(const QString& name);219 Node *findNode(const QString& name, Type type);220 FunctionNode *findFunctionNode(const QString& name);221 FunctionNode *findFunctionNode(const FunctionNode *clone);239 NodefindNode(const QString& name); 240 NodefindNode(const QString& name, Type type); 241 FunctionNodefindFunctionNode(const QString& name); 242 FunctionNodeclone); 222 243 void addInclude(const QString &include); 223 244 void setIncludes(const QStringList &includes); 224 void setOverload(const FunctionNode *func, bool overlode);245 void setOverload(const FunctionNodefunc, bool overlode); 225 246 void normalizeOverloads(); 226 247 void makeUndocumentedChildrenInternal(); … … 229 250 230 251 virtual bool isInnerNode() const; 231 const Node *findNode(const QString& name) const;232 const Node *findNode(const QString& name, Type type) const;233 const FunctionNode *findFunctionNode(const QString& name) const;234 const FunctionNode *findFunctionNode(const FunctionNode *clone) const;235 const EnumNode *findEnumNodeForValue(const QString &enumValue) const;252 const NodefindNode(const QString& name) const; 253 const NodefindNode(const QString& name, Type type) const; 254 const FunctionNodefindFunctionNode(const QString& name) const; 255 const FunctionNodeclone) const; 256 const EnumNodefindEnumNodeForValue(const QString &enumValue) const; 236 257 const NodeList & childNodes() const { return children; } 237 258 const NodeList & relatedNodes() const { return related; } 238 259 int count() const { return children.size(); } 239 int overloadNumber(const FunctionNode *func) const;260 int overloadNumber(const FunctionNodefunc) const; 240 261 int numOverloads(const QString& funcName) const; 241 262 NodeList overloads(const QString &funcName) const; … … 244 265 QStringList primaryKeys(); 245 266 QStringList secondaryKeys(); 267 268 269 270 246 271 247 272 protected: 248 InnerNode(Type type, InnerNode *parent, const QString& name);273 InnerNode(Type type, InnerNodeparent, const QString& name); 249 274 250 275 private: 251 276 friend class Node; 252 277 253 static bool isSameSignature(const FunctionNode *f1, const FunctionNode *f2); 254 void addChild(Node *child); 255 void removeChild(Node *child); 256 void removeRelated(Node *pseudoChild); 257 278 static bool isSameSignature(const FunctionNode* f1, const FunctionNode* f2); 279 void addChild(Node* child); 280 void removeChild(Node* child); 281 void removeRelated(Node* pseudoChild); 282 283 QStringList pageKeywds; 258 284 QStringList inc; 259 285 NodeList children; 260 286 NodeList enumChildren; 261 287 NodeList related; 262 QMap<QString, Node 263 QMap<QString, Node 288 QMap<QString, Node*> childMap; 289 QMap<QString, Node*> primaryFunctionMap; 264 290 QMap<QString, NodeList> secondaryFunctionMap; 265 291 }; … … 280 306 { 281 307 public: 282 NamespaceNode(InnerNode *parent, const QString& name);308 NamespaceNode(InnerNodeparent, const QString& name); 283 309 virtual ~NamespaceNode() { } 284 310 }; … … 295 321 node(node0), 296 322 dataTypeWithTemplateArgs(dataTypeWithTemplateArgs0) { } 323 297 324 298 325 Node::Access access; … … 301 328 }; 302 329 330 331 303 332 class ClassNode : public InnerNode 304 333 { 305 334 public: 306 ClassNode(InnerNode *parent, const QString& name);335 ClassNode(InnerNodeparent, const QString& name); 307 336 virtual ~ClassNode() { } 308 337 309 338 void addBaseClass(Access access, 310 ClassNode *node,339 ClassNodenode, 311 340 const QString &dataTypeWithTemplateArgs = ""); 312 341 void fixBaseClasses(); 313 342 314 const QList<RelatedClass> &baseClasses() const { return bas; } 315 const QList<RelatedClass> &derivedClasses() const { return der; } 343 const QList<RelatedClass> &baseClasses() const { return bases; } 344 const QList<RelatedClass> &derivedClasses() const { return derived; } 345 const QList<RelatedClass> &ignoredBaseClasses() const { return ignoredBases; } 316 346 317 347 bool hideFromMainList() const { return hidden; } … … 322 352 QString qmlElement() const { return qmlelement; } 323 353 void setQmlElement(const QString& value) { qmlelement = value; } 324 325 private: 326 QList<RelatedClass> bas; 327 QList<RelatedClass> der; 354 virtual bool isAbstract() const { return abstract; } 355 virtual void setAbstract(bool b) { abstract = b; } 356 const PropertyNode* findPropertyNode(const QString& name) const; 357 358 private: 359 QList<RelatedClass> bases; 360 QList<RelatedClass> derived; 361 QList<RelatedClass> ignoredBases; 328 362 bool hidden; 363 329 364 QString sname; 330 365 QString qmlelement; … … 335 370 public: 336 371 337 FakeNode(InnerNode *parent, const QString& name, SubType subType);372 FakeNode(InnerNodeparent, const QString& name, SubType subType); 338 373 virtual ~FakeNode() { } 339 374 340 375 void setTitle(const QString &title) { tle = title; } 341 376 void setSubTitle(const QString &subTitle) { stle = subTitle; } 342 void addGroupMember(Node *node) { gr.append(node); }377 void addGroupMember(Nodenode) { gr.append(node); } 343 378 344 379 SubType subType() const { return sub; } 345 QString title() const { return tle; }346 QString fullTitle() const;347 QString subTitle() const;380 381 QString fullTitle() const; 382 QString subTitle() const; 348 383 const NodeList &groupMembers() const { return gr; } 349 384 virtual QString nameForLists() const { return title(); } … … 360 395 { 361 396 public: 362 QmlClassNode(InnerNode *parent,397 QmlClassNode(InnerNodeparent, 363 398 const QString& name, 364 399 const ClassNode* cn); 365 virtual ~QmlClassNode() { } 400 virtual ~QmlClassNode(); 401 virtual bool isQmlNode() const { return true; } 366 402 367 403 const ClassNode* classNode() const { return cnode; } 368 404 virtual QString fileBase() const; 369 405 static void addInheritedBy(const QString& base, Node* sub); 406 static void subclasses(const QString& base, NodeList& subs); 407 static void clear(); 408 409 public: 370 410 static bool qmlOnly; 371 372 private: 373 const ClassNode* cnode; 411 static QMultiMap<QString,Node*> inheritedBy; 412 413 private: 414 const ClassNode* cnode; 415 }; 416 417 class QmlBasicTypeNode : public FakeNode 418 { 419 public: 420 QmlBasicTypeNode(InnerNode* parent, 421 const QString& name); 422 virtual ~QmlBasicTypeNode() { } 423 virtual bool isQmlNode() const { return true; } 374 424 }; 375 425 … … 381 431 bool attached); 382 432 virtual ~QmlPropGroupNode() { } 433 383 434 384 435 const QString& element() const { return parent()->name(); } … … 391 442 bool att; 392 443 }; 444 445 393 446 394 447 class QmlPropertyNode : public LeafNode … … 410 463 bool isStored() const { return fromTrool(sto,true); } 411 464 bool isDesignable() const { return fromTrool(des,false); } 412 bool isWritable( ) const { return fromTrool(wri,true); }465 bool isWritable( 413 466 bool isAttached() const { return att; } 467 414 468 415 469 const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); } … … 453 507 { 454 508 public: 455 EnumNode(InnerNode *parent, const QString& name);509 EnumNode(InnerNodeparent, const QString& name); 456 510 virtual ~EnumNode() { } 457 511 458 512 void addItem(const EnumItem& item); 459 void setFlagsType(TypedefNode *typedeff);513 void setFlagsType(TypedefNodetypedeff); 460 514 bool hasItem(const QString &name) const { return names.contains(name); } 461 515 462 516 const QList<EnumItem>& items() const { return itms; } 463 517 Access itemAccess(const QString& name) const; 464 const TypedefNode *flagsType() const { return ft; }518 const TypedefNodeflagsType() const { return ft; } 465 519 QString itemValue(const QString &name) const; 466 520 … … 468 522 QList<EnumItem> itms; 469 523 QSet<QString> names; 470 const TypedefNode *ft;524 const TypedefNodeft; 471 525 }; 472 526 … … 474 528 { 475 529 public: 476 TypedefNode(InnerNode *parent, const QString& name);530 TypedefNode(InnerNodeparent, const QString& name); 477 531 virtual ~TypedefNode() { } 478 532 479 const EnumNode *associatedEnum() const { return ae; }480 481 private: 482 void setAssociatedEnum(const EnumNode *enume);533 const EnumNodeassociatedEnum() const { return ae; } 534 535 private: 536 void setAssociatedEnum(const EnumNodeenume); 483 537 484 538 friend class EnumNode; 485 539 486 const EnumNode *ae;487 }; 488 489 inline void EnumNode::setFlagsType(TypedefNode *typedeff)540 const EnumNodeae; 541 }; 542 543 inline void EnumNode::setFlagsType(TypedefNodetypedeff) 490 544 { 491 545 ft = typedeff; … … 539 593 enum Virtualness { NonVirtual, ImpureVirtual, PureVirtual }; 540 594 541 FunctionNode(InnerNode *parent, const QString &name);542 FunctionNode(Type type, InnerNode *parent, const QString &name, bool attached);595 FunctionNode(InnerNodeparent, const QString &name); 596 FunctionNode(Type type, InnerNodeparent, const QString &name, bool attached); 543 597 virtual ~FunctionNode() { } 544 598 … … 546 600 void setParentPath(const QStringList& parentPath) { pp = parentPath; } 547 601 void setMetaness(Metaness metaness) { met = metaness; } 548 void setVirtualness(Virtualness virtualness) { vir = virtualness; }602 void setVirtualness(Virtualness virtualness) 549 603 void setConst(bool conste) { con = conste; } 550 604 void setStatic(bool statique) { sta = statique; } … … 553 607 void addParameter(const Parameter& parameter); 554 608 inline void setParameters(const QList<Parameter>& parameters); 555 void borrowParameterNames(const FunctionNode *source);556 void setReimplementedFrom(FunctionNode *from);609 void borrowParameterNames(const FunctionNodesource); 610 void setReimplementedFrom(FunctionNodefrom); 557 611 558 612 const QString& returnType() const { return rt; } … … 571 625 const QList<Parameter>& parameters() const { return params; } 572 626 QStringList parameterNames() const; 573 const FunctionNode *reimplementedFrom() const { return rf; } 574 const QList<FunctionNode *> &reimplementedBy() const { return rb; } 575 const PropertyNode *associatedProperty() const { return ap; } 627 QString rawParameters(bool names = false, bool values = false) const; 628 const FunctionNode* reimplementedFrom() const { return rf; } 629 const QList<FunctionNode*> &reimplementedBy() const { return rb; } 630 const PropertyNode* associatedProperty() const { return ap; } 576 631 const QStringList& parentPath() const { return pp; } 577 632 … … 580 635 const QString& element() const { return parent()->name(); } 581 636 bool isAttached() const { return att; } 637 638 639 582 640 583 641 void debug() const; 584 642 585 643 private: 586 void setAssociatedProperty(PropertyNode *property);644 void setAssociatedProperty(PropertyNodeproperty); 587 645 588 646 friend class InnerNode; … … 604 662 bool att: 1; 605 663 QList<Parameter> params; 606 const FunctionNode *rf;607 const PropertyNode *ap;608 QList<FunctionNode 664 const FunctionNoderf; 665 const PropertyNodeap; 666 QList<FunctionNode*> rb; 609 667 }; 610 668 … … 615 673 enum { NumFunctionRoles = Notifier + 1 }; 616 674 617 PropertyNode(InnerNode *parent, const QString& name);675 PropertyNode(InnerNodeparent, const QString& name); 618 676 virtual ~PropertyNode() { } 619 677 620 678 void setDataType(const QString& dataType) { dt = dataType; } 621 void addFunction(FunctionNode *function, FunctionRole role);622 void addSignal(FunctionNode *function, FunctionRole role);679 void addFunction(FunctionNodefunction, FunctionRole role); 680 void addSignal(FunctionNodefunction, FunctionRole role); 623 681 void setStored(bool stored) { sto = toTrool(stored); } 624 682 void setDesignable(bool designable) { des = toTrool(designable); } 683 625 684 void setWritable(bool writable) { wri = toTrool(writable); } 626 void setOverriddenFrom(const PropertyNode *baseProperty); 685 void setUser(bool user) { usr = toTrool(user); } 686 void setOverriddenFrom(const PropertyNode* baseProperty); 687 void setRuntimeDesFunc(const QString& rdf) { runtimeDesFunc = rdf; } 688 void setRuntimeScrFunc(const QString& scrf) { runtimeScrFunc = scrf; } 689 void setConstant() { cst = true; } 690 void setFinal() { fnl = true; } 627 691 628 692 const QString &dataType() const { return dt; } … … 636 700 bool isStored() const { return fromTrool(sto, storedDefault()); } 637 701 bool isDesignable() const { return fromTrool(des, designableDefault()); } 702 703 704 638 705 bool isWritable() const { return fromTrool(wri, writableDefault()); } 639 const PropertyNode *overriddenFrom() const { return overrides; } 706 bool isUser() const { return fromTrool(usr, userDefault()); } 707 bool isConstant() const { return cst; } 708 bool isFinal() const { return fnl; } 709 const PropertyNode* overriddenFrom() const { return overrides; } 710 711 bool storedDefault() const { return true; } 712 bool userDefault() const { return false; } 713 bool designableDefault() const { return !setters().isEmpty(); } 714 bool scriptableDefault() const { return true; } 715 bool writableDefault() const { return !setters().isEmpty(); } 640 716 641 717 private: … … 645 721 static bool fromTrool(Trool troolean, bool defaultValue); 646 722 647 bool storedDefault() const { return true; }648 bool designableDefault() const { return !setters().isEmpty(); }649 bool writableDefault() const { return !setters().isEmpty(); }650 651 723 QString dt; 724 725 652 726 NodeList funcs[NumFunctionRoles]; 653 727 Trool sto; 654 728 Trool des; 729 655 730 Trool wri; 656 const PropertyNode *overrides; 731 Trool usr; 732 bool cst; 733 bool fnl; 734 const PropertyNode* overrides; 657 735 }; 658 736 … … 662 740 } 663 741 664 inline void PropertyNode::addFunction(FunctionNode *function, FunctionRole role)742 inline void PropertyNode::addFunction(FunctionNodefunction, FunctionRole role) 665 743 { 666 744 funcs[(int)role].append(function); … … 668 746 } 669 747 670 inline void PropertyNode::addSignal(FunctionNode *function, FunctionRole role)748 inline void PropertyNode::addSignal(FunctionNodefunction, FunctionRole role) 671 749 { 672 750 funcs[(int)role].append(function); … … 684 762 { 685 763 public: 686 VariableNode(InnerNode *parent, const QString &name);764 VariableNode(InnerNodeparent, const QString &name); 687 765 virtual ~VariableNode() { } 688 766 … … 702 780 }; 703 781 704 inline VariableNode::VariableNode(InnerNode *parent, const QString &name)782 inline VariableNode::VariableNode(InnerNodeparent, const QString &name) 705 783 : LeafNode(Variable, parent, name), sta(false) 706 784 { 785 707 786 } 708 787 … … 710 789 { 711 790 public: 712 TargetNode(InnerNode *parent, const QString& name);791 TargetNode(InnerNodeparent, const QString& name); 713 792 virtual ~TargetNode() { } 714 793
Note:
See TracChangeset
for help on using the changeset viewer.