namespace foo
{
int one_function(oneStruct *arg);
};
When I get the clang::FunctionDecl * for one_function, I then get a ParmVarDecl * for arg.
To get the type I can use one of the QualType type = ParmVarDecl::get*Type() functions.
However, when I get the type as a string, it’s oneStruct * and not foo:oneStruct *
How can I get the fully scoped name of this parameter? (using clang 3.1)
NamedDecl has getQualifiedNameAsString(). If you drill through to the decl from the type (in your case getPointeeCXXRecordDecl should do) you can use it to get the fully qualified name. (There might be easier ways I’m not aware of
2012/11/14 Manuel Klimek <klimek@google.com>
NamedDecl has getQualifiedNameAsString(). If you drill through to the decl from the type (in your case getPointeeCXXRecordDecl should do) you can use it to get the fully qualified name. (There might be easier ways I’m not aware of
Hi Manuel,
When reading your answer I realized that there was a typo in my question: I’m actually looking for the fully scoped type of the parameter.
I still can’t get what I want:
Will give me the scope for a struct or class pointer parameter. However it does not work if I have a struct parameter (without a pointer)
or any other type (scoped typedefs for example).
I can re-formulate my question as: from a ParmVarDecl *, how can I retrieve a pointer to the declaration of the parameter type?
You’ll want something like:
pdecl->getType()->getAsCXXRecordDecl() (if it’s not a pointer) or pdecl->getType()->getPointeeCXXRecordDecl() if it’s a pointer.