Miguel Aguilar
2013-Feb-06 13:28 UTC
[LLVMdev] Process the initializers of a C++ class properly
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>