You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.1 KiB
120 lines
3.1 KiB
/***************************************************************************
|
|
copyright : (C) 2006 by David Nolden
|
|
email : david.nolden.tdevelop@art-master.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
#ifndef SIMPLETYPECATALOG_H
|
|
#define SIMPLETYPECATALOG_H
|
|
|
|
#include "simpletype.h"
|
|
|
|
class SimpleTypeCatalog : public SimpleTypeImpl {
|
|
|
|
public:
|
|
|
|
SimpleTypeCatalog() {
|
|
};
|
|
|
|
virtual DeclarationInfo getDeclarationInfo();
|
|
|
|
SimpleTypeCatalog( SimpleTypeCatalog* rhs ) : SimpleTypeImpl( rhs ), m_tag( rhs->m_tag ) {
|
|
};
|
|
|
|
static CppCodeCompletion* data;
|
|
|
|
virtual bool isNamespace() const {
|
|
return m_tag.kind() == Tag::Kind_Namespace;
|
|
}
|
|
|
|
/** empty scope means global scope */
|
|
SimpleTypeCatalog( const TQStringList& scope ) : SimpleTypeImpl( scope ) {
|
|
init();
|
|
}
|
|
|
|
SimpleTypeCatalog( SimpleTypeImpl* rhs ) : SimpleTypeImpl( rhs ) {
|
|
init();
|
|
};
|
|
|
|
SimpleTypeCatalog( Tag& tag ) {
|
|
m_tag = tag;
|
|
initFromTag();
|
|
}
|
|
|
|
virtual TQString comment() const {
|
|
return m_tag.comment();
|
|
};
|
|
|
|
virtual TypePointer clone();
|
|
|
|
virtual Repository rep() const {
|
|
return RepoCatalog;
|
|
}
|
|
|
|
virtual bool hasNode() const {
|
|
return (bool)m_tag;
|
|
};
|
|
|
|
virtual TQStringList getBaseStrings();
|
|
|
|
virtual TemplateParamInfo getTemplateParamInfo();
|
|
|
|
virtual const LocateResult findTemplateParam( const TQString& name );
|
|
|
|
virtual TQString specialization() const;
|
|
|
|
virtual void addAliasesTo( SimpleTypeNamespace* ns );
|
|
|
|
private:
|
|
Tag m_tag;
|
|
|
|
int pointerDepthFromString( const TQString& str ) {
|
|
TQRegExp ptrRx( "(\\*|\\&)" );
|
|
TQString ptr = str.mid( str.find( ptrRx ) );
|
|
TQStringList ptrList = TQStringList::split( "", ptr );
|
|
return ptrList.size();
|
|
}
|
|
|
|
Tag findSubTag( const TQString& name );
|
|
|
|
TQValueList<Tag> getBaseClassList();
|
|
|
|
void initFromTag();
|
|
|
|
void init();
|
|
|
|
protected:
|
|
const Tag& tag() {
|
|
return m_tag;
|
|
}
|
|
|
|
struct CatalogBuildInfo : public TypeBuildInfo {
|
|
Tag m_tag;
|
|
TypeDesc m_desc;
|
|
TypePointer m_parent;
|
|
|
|
CatalogBuildInfo( Tag tag , const TypeDesc& desc, TypePointer parent ) : m_tag( tag ) , m_desc( desc ), m_parent( parent ) {
|
|
}
|
|
|
|
virtual TypePointer build();
|
|
};
|
|
|
|
virtual MemberInfo findMember( TypeDesc name, MemberInfo::MemberType type = MemberInfo::AllTypes);
|
|
|
|
virtual TQValueList<TypePointer> getMemberClasses( const TypeDesc& name ) ;
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|
|
// kate: indent-mode csands; tab-width 4;
|
|
|