Alien-SmokeQt
view release on metacpan or search on metacpan
generator/name_compiler.cpp view on Meta::CPAN
if (op_id->op && op_id->op->op) {
tmp += decode(m_session, op_id->op, true);
} else {
TypeCompiler tc(m_session, m_visitor);
tc.run(op_id->type_specifier);
tc.run(op_id->ptr_ops);
m_castType = tc.type();
tmp += " " + tc.type().toString();
}
tmp_name = IndexedString(tmp);
m_typeSpecifier = op_id->type_specifier;
}
m_currentIdentifier = tmp_name.str();
if (node->template_arguments)
{
visitNodes(this, node->template_arguments);
}/*else if(node->end_token == node->start_token + 3 && node->id == node->start_token && m_session->token_stream->token(node->id+1).symbol() == KDevelop::IndexedString('<')) {
///@todo Represent this nicer in the AST
///It's probably a type-specifier with instantiation of the default-parameter, like "Bla<>".
m_currentIdentifier.appendTemplateIdentifier( IndexedTypeIdentifier() );
}*/
m_name.push_back(m_currentIdentifier);
}
TypeSpecifierAST* NameCompiler::lastTypeSpecifier() const {
return m_typeSpecifier;
}
void NameCompiler::visitTemplateArgument(TemplateArgumentAST *node)
{
if (!node->type_id) {
QString ret;
for (int i = node->expression->start_token; i < node->expression->end_token; i++) {
ret.append(m_session->token_stream->token(i).symbolString());
}
// TODO: Better use a new struct here - expressions aren't really types.
m_templateArgs[m_name.count()] << Type(ret);
return;
}
TypeCompiler tc(m_session, m_visitor);
tc.run(node->type_id->type_specifier, node->type_id->declarator ? node->type_id->declarator : 0);
m_templateArgs[m_name.count()] << tc.type();
}
/*const QualifiedIdentifier& NameCompiler::identifier() const
{
return *_M_name;
}*/
void NameCompiler::run(NameAST *node/*, QualifiedIdentifier* target*/)
{
// if(target)
// _M_name = target;
// else
// _M_name = &m_localName;
m_typeSpecifier = 0; internal_run(node); /*if(node && node->global) _M_name->setExplicitlyGlobal( node->global );*/
}
( run in 0.894 second using v1.01-cache-2.11-cpan-13bb782fe5a )