Ich habe Quellcode, die wie folgt aussieht,Erstellen Parameter für eine Funktion mit Klirren
void update();
void update()
{
}
Iam versuchen, diesen Code mit Klirren zu analysieren und den Code dieses ändern.
typedef float v4sf attribute ((vector_size(16)));
void update(v4sf& v1, v4sf& v2);
void update(v4sf& v1, v4sf& v2)
{
}
Ich schaute auf die Rewriter Klassen von Clang. In der Funktion, die ich, wie unten gezeigt schrieb,
MyRecursiveASTVisitor::VisitFunctionDecl(FunctionDecl *f)
FunctionDecl hat setParams() -Methode, die ich verwenden könnte. Ich müsste mit dieser Methode Params erstellen.
static ParmVarDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation StartLoc,
SourceLocation IdLoc, IdentifierInfo *Id,
QualType T, TypeSourceInfo *TInfo,
StorageClass S, StorageClass SCAsWritten,
Expr *DefArg);
Die ersten vier Argumente für die create-Funktion können von FunctionDecl abgerufen werden. Ich bin mir nicht sicher, was der Rest von ihnen sein muss.
Wie erstelle ich Typen und weise ihnen auch Werte zu? Die Typen müssen nicht eingebaut sein und könnten dem im transformierten Quellcode hinzugefügten (v4sf) ähnlich sein.
Auf diese Weise (mithilfe von Clang-Methoden) Transformationen durchführen oder kann ich Rewriter.InsertText() verwenden, um die Parameter hinzuzufügen?
Vielen Dank! Ich benutze Rewriter, aber ich habe ein paar Probleme mit dem Umschreiben von Obj-c-Nachrichten, könnten Sie meine Frage http://stackoverflow.com/questions/20418933/clang-tool-rewrite-objcmessageexpr? – BergP
Wie fügen Clang-Plugins z.B. Instrumentierung? – gnzlbg