Esempio n. 1
0
QString declaratorToString( DeclaratorAST* declarator, const QString& scope, bool skipPtrOp )
{
   if( !declarator )
       return QString();

   QString text;

   if( !skipPtrOp ){
       QList<AST*> ptrOpList = declarator->ptrOpList();
       for( int i = 0; i < ptrOpList.size(); ++i ) {
          text += ptrOpList.at(i)->text();
       }
       text += ' ';
   }

   text += scope;

   if( declarator->subDeclarator() )
       text += QString::fromLatin1("(") + declaratorToString(declarator->subDeclarator()) + QString::fromLatin1(")");

   if( declarator->declaratorId() )
       text += declarator->declaratorId()->text();

   QList<AST*> arrays = declarator->arrayDimensionList();
   for( int i = 0; i < arrays.size(); ++i ) {
       text += "[]";
   }

   if( declarator->parameterDeclarationClause() ){
       text += "( ";

       ParameterDeclarationListAST* l = declarator->parameterDeclarationClause()->parameterDeclarationList();
       if( l != 0 ){
           QList<ParameterDeclarationAST*> params = l->parameterList();
           for( int i = 0; i < params.size(); ++i ) {
               QString type = typeSpecToString( params.at(i)->typeSpec() );
               text += type;
               if( !type.isEmpty() )
                   text += ' ';
               text += declaratorToString( params.at(i)->declarator() );

               if( params.at(i) )
                   text += ", ";
           }
       }

       text += " )";

       if( declarator->constant() != 0 )
           text += " const";
   }

   return text.replace( QRegExp(" :: "), "::" ).simplified();
}
Esempio n. 2
0
void CppTree2Uml::parseFunctionArguments(DeclaratorAST* declarator,
                                         UMLOperation* method)
{
    if (!declarator)
        return;
    ParameterDeclarationClauseAST* clause = declarator->parameterDeclarationClause();

    if (clause && clause->parameterDeclarationList()){
        ParameterDeclarationListAST* params = clause->parameterDeclarationList();
        QList<ParameterDeclarationAST*> l(params->parameterList());
        for (int i = 0; i < l.size(); ++i) {
            ParameterDeclarationAST* param = l.at(i);

            QString name;
            if (param->declarator())
                name = declaratorToString(param->declarator(), QString(), true);

            QString tp = typeOfDeclaration(param->typeSpec(), param->declarator());

            if (tp != QLatin1String("void"))
                Import_Utils::addMethodParameter(method, tp, name);
        }
    }
}