[cfe-dev] Parsing C++ Header File
Raghavendra Keshav
ragavendrakk at gmail.com
Wed May 29 06:35:56 PDT 2013
Thanks.
Current env need to use C++ APIs and i cannot use python.
So can i get help in understanding the data structure relation ...
>From CXXRecordDecl i get FieldDecl....now how to analyse further on each
FieldDecl?
FieldDecl is DeclaratorDecl...from this how can i get CTemplateDecl...
I tried using DeclContext...also tried using getType....
I could get CXXRecordDecl...but when i used getDescribedClassTemplates
...it returned NULL...
So am stuck here.
Pls guide me how to handle from here.
regard
ragha
On Wed, May 29, 2013 at 4:02 PM, Matthieu Brucher <
matthieu.brucher at gmail.com> wrote:
> Hi,
>
> I made something like that in the past, but with gccxml, and I more or
> less achieved the same thing with pyclang.
> I made a free function called encode() and a decode() for usual data
> types, and then I use my small script (
> https://github.com/mbrucher/clang2xml) to help me generate a encode(const
> MyClass&) decode(MyClass&) that calls the appropriate encode and decode
> functions, depending on what I scanned. In my case, I also added wrappers
> for each public function (which actually was my main goal, clang2xml is not
> as advanced as what I did in the past
> http://matt.eifelle.com/2009/07/21/using-gccxml-to-automate-c-wrappers-creation/ ),
> but you can keep it simpler and only serialize and unserialize your data.
> With both libclang and the steps I used with gccxml, I think you will be
> able to achieve your goal ;)
>
> Cheers,
>
> Matthieu
>
>
>
> 2013/5/29 Raghavendra Keshav <ragavendrakk at gmail.com>
>
>> Hi,
>>
>> Problem: Want to parse C++ classes in a header file and generate
>> serialize and deserialize methods for this class.
>> example:
>> sample.h
>> #include ....
>> class Test
>> {
>> std::map<int,string> myMap;
>> int i;
>> string s;
>> A obj;
>> };
>>
>> ==>Transform it as below
>> class Test
>> {
>> std::map<int,string> myMap;
>> int i;
>> string s;
>> A obj;
>> public:
>> void* encode();
>> };
>>
>> void* Test::encode()
>> {
>> for( i- 0; i<myMap.size(); i++)
>> encodeString();
>>
>> encodeInt();
>>
>> encodeString();
>> obj.encode();
>>
>> return buf;
>> }
>>
>> With the tutotials around i could setup the compiler instance
>> and ASTConsumer and ASTVisitor/
>> In the ASTRecursive visitor... i could overload visitRecordDecl(...);
>> On getting a CXXRecordDecl...i have iterated through FieldDecl
>> Now From FieldDecl...i want to extract information like
>> it is map made from int and string...
>> Am not able get the relationship of FieldDecl to CTemplateDecl...
>> and from CTemplateDecl how to extract the params?
>>
>> Pls provide direction how to proceed further...
>>
>> regards
>> ragha
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>>
>
>
> --
> Information System Engineer, Ph.D.
> Blog: http://matt.eifelle.com
> LinkedIn: http://www.linkedin.com/in/matthieubrucher
> Music band: http://liliejay.com/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130529/df388c0f/attachment.html>
More information about the cfe-dev
mailing list