Persistent AST and google sparsehash

Adam Treat treat at kde.org
Sat Aug 5 12:05:46 UTC 2006


Sorry to bug, but if we do decide to build serialization into the AST 
generation, then I think this reference could be very handy:

http://www.parashift.com/c++-faq-lite/serialization.html

Cheers,
Adam

On Saturday 05 August 2006 7:41 am, Adam Treat wrote:
> Hi Roberto,
>
> I've been experimenting with the google sparsehash.  I have a
> class 'KDevPersistentHash' which wraps the sparsehash in a nice API.
>
> Currently, I can create and load a sparse hash with key_type = QString and
> value_type = int.
>
> I'm currently working on using value_type = KDevAST where KDevAST is the
> TranslationUnitAST from the C++ parser.
>
> This is what I've found...
>
> The most recent version of sparse_hash_map (this is the one we want since
> it has *ultra low* memory overhead) can hash non POD types.  WOOHOO!  So we
> can definately use this for key_type = QString and value_type = KDevAST.
>
>  Unfortunately, we have to persist the key value pairs ourselves.  The
> default sparse_hash_map can only serialize extremely *simple* data types. 
> For all complex data types, we have to do it ourselves.  I'm currently
> using QDataStream to serialize my key_type=QString, value_type=int hash,
> but as you know QDataStream will not work on KDevAST pointers ;)
>
> So, this brings me back to a conversation we had awhile ago.  How do we
> make the AST/codemodel serializable.
>
> In past conversations you mentioned the idea of using PTL by Thomas
> Gschwind. This is described in this paper:
> http://www.usenix.org/events/coots01/full_papers/gschwind/gschwind_html/ind
>ex.html
>
> I did find two more solutions linked from the paper:
>
> 1. Texas -- http://www.cs.utexas.edu/users/oops/papers.html#texas
> 2. POST++ -- http://www.ispras.ru/~knizhnik/post/readme.htm
>
> I'm not sure about Texas as it is *very* old and requires a version of gdb
> that is completely outdated.  I'm not thrilled about relying upon type
> descriptions from an old version of gdb.
>
> POST++ seems reasonable enough, but I wonder if it would be easier to just
> implement a serializable interface in the kdevelop-pg ast generator. 
> Perhaps we can provide << and >> operators that write to a QDataStream?
>
> What do you think?
>
> Adam
>
> _______________________________________________
> KDevelop-devel mailing list
> KDevelop-devel at barney.cs.uni-potsdam.de
> http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel




More information about the KDevelop-devel mailing list