[LLVMdev] Process the initializers of a C++ class properly
Miguel Aguilar
miguel.aguilar at ice.rwth-aachen.de
Wed Feb 6 05:28:43 PST 2013
Hi,
I have been trying to get information from the initializers of a C++
class. For example if I have something like this:
classA { };
classB :public A {
float f;
public:
B(A& a) : A(a), f(3.14159) { }
};
I wold like to get the initialization values for each member. In this
example the values a and 3.14159 for the members A and f respectively.
What I have done so far is this:
I am using the method VisitCXXConstructorDecl and then getting the
initalizers by means of iterator CXXConstructorDecl::init_iterator. I am
able to get the members that are being initialized by means of getMember
<http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html#a877f0bab49ff048f7e0faddf3f528977>
() method for each initializer.
However, I want to have the initialization values themselves (a and
3.14...), then I tried to get the initializer expression (getInit
<http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b>
()) and then cast it to CXXConstructExpr in order to try to get the
arguments of the call to the constructors of A and f.
The problem is that the method getInit() is not returning the
initialization expression. Any ideas what could be wrong, or other ways
to get the initialization values for the members.
Thanks,
Miguel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130206/675cd75b/attachment.html>
More information about the llvm-dev
mailing list