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 )