Re: [pygccxml-development] pyplusplus status
Brought to you by:
mbaas,
roman_yakovenko
From: Allen B. <al...@vr...> - 2006-07-12 20:24:07
|
Roman: As promised, here is a short list of the things I have found while using pyplusplus recently. - 90% of users should never have to delve beyond the "easy API" (never need to know about creators). The current API is close to this, but there are still some times when IMHO users have to suddenly delve very deep into the internal code. - template support: I would like to see an API that allows users to more easily wrap templates. I have had to manually create some code that does this but I am sure something better could be done. You can see what I have done at: https://realityforge.vrsource.org/viewvc/pyopensg/trunk/src/gen_bindings.py?view=markup Look for the TemplateBuilder helper class. - Merging header files. I have found it very helpful to specify a single temporary header file to the module builder that just includes all of the headers for the API I want to wrap. This can result in significant speed increases when calling gccxml because the header files for a library often include much code in common. It would be nice if the module builder had a flag in it's constructor (like: combine_headers) that would make pypp do this automatically. - finalize(): I would really, really, really appreciate a true finalize() method being defined for all decls. There are a lot of times where I know I want the class to be final so I don't want a wrapper or anything else extra. - mdecl returns: See the thread "mdecl and methods that return values" from 5/30/2006. This is a capability that I still very much need. - Documentation - Summary: Make a simple, complete, tutorial document like the one for Pyste. Just show how to do the things in the "easy API" that 90% of people want to do (see above) - simple, complete documentation of user API and what can be done - documentation for all paramemters of builder methods. - what does compilation_mode, start_with_declarations, etc do in __init__ - Same with build_code_creator - what do the params do and how could/should they be used - How do I do this... documentation of standard things a user wants to do - Pyste documentation is very good about this. - Wrap method: Add API for just wrapping an existing method with a new defined method. (right now this can be cone but you have to exclude the current method and then call add_code with a 'def'. It is just too complex for a new user and makes the wrapper gen script look complicated.) - Add an API to ask if has decl and/or number of found decls - Add ability to add user code to namespace or global *without* having to use code creators directly - Cache parsing and preparing query optimizer. If the input has not changed (the headers are the same) why do I have to wait for all the processing of the declarations and query optimization each time. Can't we cache all of that? - This is a small nitpick, but unless you are making a lot of money from Google AdSense, could you remove the Google ads in the table of contents on the website. They are just annoying and make the documentation harder to read. - Better job of not including platform specific files. For example I have a binding right now that is adding /usr/include/c++/4.0.2/ext/mt_allocator.h as an include in all the files. Needless to say this doesn't compile on windows. :( - Performance improvements: improving performance is always good. The time waiting for all the code_creators to be created is especially long. Comments? -Allen Roman Yakovenko wrote: >Hi. I just want to describe what have been done and what I think should be done >before next version will be ready to be released. > >Done: >1. pyplusplus now preserves the order of generated code. I mean if you >run pyplusplus > twice, than second run will not change any file. If you see a >different behaviour, please > report a bug. > >2. Usability of pyplusplus has been improved. Now by default it will >print only very important > messages: > 1. gccxml command line ( printed text will start with "INFO" word ) > 2. declarations, that user asked to export, but for some reason, >pyplusplus can > not export them ( ( printed text will start with "WARNING" word ) > 3. a list of updated(created) files ( printed text will start with >"INFO" word ) > > It is possible to configure pyplusplus to print much more information: > > import logger > from pyplusplus import module_builder > module_builder.set_logger_level( logging.DEBUG ) > >3. pyplusplus is able to generate code for indexing suite v2. > You need explicitly to enable it: > mb = module_builder.module_builder_t( ..., indexing_suite_version=2 ) > > The documentation for this feature is in progress > >What still should be done? > >1. Georgiy Dernovoy contributed code, that extracts doxygen >documentation from source > files. I will add code to pyplusplus that will generate documentation. > >2. I should find solution for long standing problem: the number of >include directives > in generated source files. > >3. I am going to work a little on file_writers package. The main >missing future here is > to add user code to generated source file. > >4. Documentation. > >For items (2) and (3), I'd like to know your opinion: > 1. What code pyplusplus should generate? > 2. How do you prefer to configure the feature? ( user interface ) > >I don't want to set release day, but from now I will try to keep >source code in >"release ready" mode. If you can try source code from "Subversion" and >report bugs >it will be grate. > > > |