Thanks to all the people that have contributed patches, bug reports and suggestions:
Support for ellipsis was added.
Warning: this feature introduce backward compatibility problem!
Description:
void do_smth( int, ... )
Before this change, pygccxml would report that the function do_smth has only one argument.
After this change, pygccxml will report that the function has two arguments. The second argument type will be declarations.ellipsis_t. All classes, which describe callables, have new property has_ellipsis. It the value of the property is True, than the function has ellipsis in its definition.
New experimental back-end, based on .pdb (progam database file), was added.
New high-level API wrapper for .bsc (browse source code file) was added.
The recomended GCC-XML version to use with this release is CVS revision 123. This revision introduces small, but very important feature. GCC-XML started to dump artificial declarations (constructor, destructor, operator=). pygccxml.declarations.type_traits functions were updated to use the new information.
declarations.decl_printer_t class dumps almost all available information about a declaration.
declarations.is_same_function was fixed and now it treats “covariant returns” right.
Search algorithm was improved for template instantiated classes. From now, a spaces within the class name doesn’t matter.
pygccxml unit tests functionality was improved. Many thanks to Gustavo Carneiro.
declarations.is_noncopyable type traits implementation was slightly changed. Now it checks explicitly that class has:
If all listed functions exist, than the algorithm returns False, otherwise it will continue to execute previous logic.
Added new functionality: “I depend on them”. Every declaration can report types and declarations it depends on.
signed char and char are two different types. This bug was fixed and now pygccxml treats them right. Many thanks to Gaetan Lehmann for reporting the bug.
Declarations, read from GCC-XML generated file, could be saved in cache.
New type traits have been added:
Small improvement to algorithm, which extracts value_type ( mapped_type ) from “std” containers.
Few aliases to long method name were introduced:
Name |
Alias |
|---|---|
scopedef_t.variable |
scopedef_t.var |
scopedef_t.variables |
scopedef_t.vars |
scopedef_t.member_function |
scopedef_t.mem_fun |
scopedef_t.member_functions |
scopedef_t.mem_funs |
scopedef_t.free_function |
scopedef_t.free_fun |
scopedef_t.free_functions |
scopedef_t.free_funs |
Fixing bug related to array size and cache.
- declarations.class_t:
- set_members method was removed
- adopt_declaration method was introduced, instead of set_members
- declarations.array_t class “set” accessor for size property was added.
- declarations.namespace_t.adopt_declaration method was added.
- declarations.variable_t.access_type property was added.
pygccxml has been ported to MacOS X. Many thanks to Darren Garnier!
New type traits have been added:
enumeration_t class interface was changed. Enumeration values are kept in a list, instead of a dictionary. get_name2value_dict will build for you dictionary, where key is an enumeration name, and value is an enumeration value.
This has been done in order to provide stable order of enumeration values.
Now you can pass operator symbol, as a name to query functions:
cls = global_namespace.class_( 'my_class' ) op = cls.operator( '<' ) #instead of op = cls.operator( symbol='<' )
pygccxml improved a lot functionality related to providing feedback to user:
Support to Java native types has been added.
It is possible to pass an arbitrary string as a parameter to GCC-XML.
Native java types has been added to fundamental types.
Cache classes implementation was improved.
Few bug were fixed.
Documentation was improved.
mdecl_wrapper_t.decls property was renamed to declarations. The reason is that the current name ( decls ) conflicts with the method of the same name in the decl interface from declarations.scopedef_t class.
So for example:
classes = ns.decls("class")
classes.decls("method")
This will fail because it finds the attribute decls which is not a callable.
Attention - this going to be last version that is tested with Python 2.3
New fundamental types has been added
Attention - non backward compatible change
declarations.filtering.user_defined and declarations.filtering.by_location implementation has been changed. In previous version of those functions, decls list has been changed in place. This was wrong behavior. Now, those functions will return new list, which contains all desired declarations.
Few new type traits has been added
decl_printer_t class and print_declarations function have been added. Now you can print in a nice way your declaration tree or part of it. Thanks to Allen Bierbaum!
New class declarations.decl_factory_t has been added. This is a default factory for all declarations. From now all relevant parser classes takes as input instance of this class or Null. In case of Null instance of declarations.decl_factory_t will be created. Using this class you can easily extend functionality provided by built-in declarations.
Sometimes, there is a need to find a declaration that match some criteria. The was such functionality in pygccxml, but it was too limited. This release fix the situation. pygccxml adds a set of classes that will help you to deal with this problem.
New cache - parser.directory_cache_t has been implemented. parser.directory_cache_t uses individual files stored in a dedicated cache directory to store the cached contents. Thanks to Matthias Baas!
parser.file_cache_t has been improved a lot. Thanks to Allen Bierbaum!
New file configuration is available: “cached source file”. parser.project_reader_t class will check for existence of GCC-XML generated file. If it does not exist it will create one. If it do exist, then the parser will use that file.
Few helper functions has been added in order to make construction of configuration file to be as easy as possible:
Small bug fixes.
Documentation. Allen Bierbaum and Matthias Baas contributed so much in this area. Almost every public function/class has now documentation string.
Logging functionality has been added. pygccxml creates new logger “pygccxml”. Now it is possible to see what pygccxml is doing right now.
I am sure I forgot something.
New functions:
A lot of small bug fixes.
Few English mistakes have been fixed.
Attention
There are 2 none backward compatible changes:
There are new properties on
New type has been introduced: unknown_t. There are use cases when GCC-XML does not returns function return type.
New implementation of make_flatten algorithm using generators. By default old implementation will be used.
parser.file_configuration_t interface has been changed. Now it is able to keep: source file, text or GCC-XML generated file. If you are doing something with code that is not changing you’d better use GCC-XML generated file as content of the parser.file_configuration_t. Save your time.
There are some cases when GCC-XML reports “restricted”. In this case pygccxml replaces “restricted” with “volatile”.