[cfe-dev] Parsing C++ Header File
Matthieu Brucher
matthieu.brucher at gmail.com
Wed May 29 03:32:42 PDT 2013
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/68ddf7ad/attachment.html>
More information about the cfe-dev
mailing list