Создание параметров для функции с clang

У меня есть исходный код, который выглядит следующим образом.

void update();

void update()
{
}

Я пытаюсь разобрать этот код с помощью clang и изменить код на этот.

typedef float v4sf attribute ((vector_size(16)));
void update(v4sf& v1, v4sf& v2);

void update(v4sf& v1, v4sf& v2)
{
}

Я просмотрел классы clang в Rewriter. В функции, которую я написал, как показано ниже,

MyRecursiveASTVisitor::VisitFunctionDecl(FunctionDecl *f) 

FunctionDecl имеет метод setParams(), который я мог бы использовать. Мне пришлось бы создать параметры с помощью этого метода.

  static ParmVarDecl *Create(ASTContext &C, DeclContext *DC,
                             SourceLocation StartLoc,
                             SourceLocation IdLoc, IdentifierInfo *Id,
                             QualType T, TypeSourceInfo *TInfo,
                             StorageClass S, StorageClass SCAsWritten,
                             Expr *DefArg);

Первые четыре аргумента функции создания можно получить из FunctionDecl. Я не уверен, какими должны быть остальные.

Как создавать типы, а также присваивать им значения в clang? Типы не обязательно должны быть встроенными и могут быть такими, как добавленный (v4sf) в преобразованном исходном коде.

Это способ (с использованием методов clang) для выполнения преобразований или я могу использовать Rewriter.InsertText() для добавления параметров?

6
задан excray 25 May 2012 в 01:44
поделиться