📄 codemodel.h
字号:
void setParent(Scope *parent) { m_parent = parent; } virtual ClassType *toClassType() const { return const_cast<ClassType*>(this); }private: Scope *m_parent; ClassScope *m_scope;};struct BuiltinType: public Type{protected: BuiltinType(const QByteArray &name, Scope *parent) : m_name(name), m_parent(parent) {}public: QByteArray name() const { return m_name; } Scope *parent() const { return m_parent; } virtual BuiltinType *toBuiltinType() const { return const_cast<BuiltinType*>(this); } static BuiltinType Bool; static BuiltinType Void; static BuiltinType Char; static BuiltinType Short; static BuiltinType Int; static BuiltinType Long; static BuiltinType Double; static BuiltinType Float; static BuiltinType Unsigned; static BuiltinType Signed; // ### moreprivate: QByteArray m_name; Scope *m_parent;};struct PointerType: public Type{ PointerType() : m_parent(0), m_baseType(0) {} Type *baseType() const { return m_baseType; } void setBaseType(Type *baseType) { m_baseType = baseType; } QByteArray name() const { return m_baseType->name(); } Scope *parent() const { return m_parent; } void setParent(Scope *parent) { m_parent = parent; } virtual PointerType *toPointerType() const { return const_cast<PointerType*>(this); }private: Scope *m_parent; Type *m_baseType;};struct ReferenceType: public Type{ ReferenceType() : m_parent(0), m_baseType(0) {} Type *baseType() const { return m_baseType; } void setBaseType(Type *baseType) { m_baseType = baseType; } QByteArray name() const { return m_baseType->name(); } Scope *parent() const { return m_parent; } void setParent(Scope *parent) { m_parent = parent; } virtual ReferenceType *toReferenceType() const { return const_cast<ReferenceType*>(this); }private: Scope *m_parent; Type *m_baseType;};struct GenericType: public Type // ### implement me{ virtual GenericType *toGenericType() const { return const_cast<GenericType*>(this); }};struct AliasType: public Type // ### implement me{ AliasType () : m_parent(0) {} QByteArray name() const { return m_name; } Scope *parent() const { return m_parent; } virtual AliasType *toAliasType() const { return const_cast<AliasType*>(this); }private: QByteArray m_name; Scope *m_parent;};struct Argument: public Item{ Argument() : m_parent(0), m_type(0) {} Type *type() const { return m_type; } void setType(Type *type) { m_type = type; } QByteArray name() const { return m_name; } void setName(const QByteArray &name) { m_name = name; } TokenEngine::TokenRef nameToken() const { return m_nameToken; } void setNameToken(TokenEngine::TokenRef nameToken) { m_nameToken = nameToken; } virtual FunctionMember *parent() const { return m_parent; } void setParent(FunctionMember *parent) { m_parent = parent; }private: FunctionMember *m_parent; Type *m_type; QByteArray m_name; TokenEngine::TokenRef m_nameToken;};struct FunctionMember: public Member{ inline FunctionMember() : m_returnType(0), m_functionBodyScope(0), m_signal(0), m_virtual(0), m_abstract(0) { m_slot = 0; } virtual FunctionMember *toFunctionMember() const { return const_cast<FunctionMember*>(this); } Type *returnType() const { return m_returnType; } void setReturnType(Type *type) { m_returnType = type; } const Collection<Argument> arguments() const { return m_arguments; } void addArgument(Argument *argument) { m_arguments.insert(argument->name(), argument); } void setFunctionBodyScope(BlockScope *functionBodyScope) { m_functionBodyScope = functionBodyScope; } BlockScope *functionBodyScope() const {return m_functionBodyScope;} bool isSignal() const { return m_signal; } void setSignal(bool b) { m_signal = b; } bool isSlot() const { return m_slot; } void setSlot(bool b) { m_slot = b; } bool isVirtual() const { return m_virtual; } void setVirtual(bool b) { m_virtual = b; } bool isAbstract() const { return m_abstract; } void setAbstract(bool b) { m_abstract = b; }private: Type *m_returnType; Collection<Argument> m_arguments; BlockScope *m_functionBodyScope; uint m_signal: 1; uint m_slot: 1; uint m_virtual: 1; uint m_abstract: 1;};struct VariableMember: public Member{ VariableMember() : m_type(0) {} Type *type() const { return m_type; } void setType(Type *type) { m_type = type; } virtual VariableMember *toVariableMember() const { return const_cast<VariableMember*>(this); }private: Type *m_type;};struct UsingDeclarationMember: public Member{ UsingDeclarationMember() : m_member(0) {} virtual UsingDeclarationMember *toUsingDeclarationMember() const { return const_cast<UsingDeclarationMember*>(this); } Member *member() const { return m_member; } void setMember(Member *member) { m_member = member; }private: Member *m_member;};struct NamespaceMember: public Member{ NamespaceMember() :m_namespaceScope(0) {} virtual NamespaceMember *toNamespaceMember() const { return const_cast<NamespaceMember*>(this); } NamespaceScope *namespaceScope() const { return m_namespaceScope; } void setNamespaceScope(NamespaceScope *namespaceScope) { m_namespaceScope = namespaceScope; }private: NamespaceScope *m_namespaceScope;};struct TypeMember: public Member{ TypeMember() :m_type(0) {} virtual TypeMember *toTypeMember() const { return const_cast<TypeMember*>(this); } Type *type() const { return m_type; } void setType(Type *type) { m_type = type; }private: Type *m_type;};struct NameUse: public Item{ NameUse() : m_declaration(0), m_parent(0) {} QByteArray name() const { return m_name; } void setName(const QByteArray &name) { m_name = name; } TokenEngine::TokenRef nameToken() const { return m_nameToken; } void setNameToken(TokenEngine::TokenRef nameToken) { m_nameToken = nameToken; } Scope *parent() const { return m_parent; } void setParent(Scope *parent) { m_parent = parent; } Member *declaration() const { return m_declaration; } void setDeclaration(Member *parent) { m_declaration = parent; }private: QByteArray m_name; TokenEngine::TokenRef m_nameToken; Member *m_declaration; Scope *m_parent;};struct UsingDirectiveLink: public Item{ UsingDirectiveLink() : m_parent(0) {} QByteArray name() const { return QByteArray(); } Scope *parent() const { return m_parent; } void setParent(Scope *parent) { m_parent = parent; } NamespaceScope *targetNamespace() const { return m_targetNamespace; } void setTargetNamespace(NamespaceScope *targetNamespace) { m_targetNamespace = targetNamespace; } NamespaceScope *insertionNamespace() const { return m_insertionNamespace; } void setInsertionNamespace(NamespaceScope *insertionNamespace) { m_insertionNamespace = insertionNamespace; }private: Scope *m_parent; // targetNamespace is the namespace specified by the using directive. NamespaceScope *m_targetNamespace; // m_insertionNamespace is the namespace where the names from // targetNamespace will be inserted. The C++ standard (7.3.4.1) // defines this as the nearest namespace that includes both m_parent // and m_targetNamespace. NamespaceScope *m_insertionNamespace;};template <class T>T *Create(TypedPool<CodeModel::Item> *p){ return new (p->allocate(sizeof(T))) T();}} // namespace CodeModel#endif // CODEMODEL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -