[r1854]: pygccxml_dev / docs / history / history.rest  Maximize  Restore  History

Download this file

590 lines (379 with data), 19.0 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
===================
Development history
===================
------------
Contributors
------------
Thanks to all the people that have contributed patches, bug reports and suggestions:
* My wife - Yulia
* John Pallister
* Matthias Baas
* Allen Bierbaum
* Georgiy Dernovoy
* Darren Garnier
* Gottfried Ganssauge
* Gaetan Lehmann
* Martin Preisler
* Miguel Lobo
* Jeremy Sanders
* Ben Schleimer
* Gustavo Carneiro
* Christopher Bruns
* Alejandro Dubrovsky
* Aron Xu
-----------
SVN Version
-----------
1. Experimental back-ends based on ``.pdb`` and ``.bsc`` files were removed.
2. Ability to extract different information from binary files ( ``.pdb``, ``.so``,
``.map`` ) and merge it with a declarations tree was added.
3. Ability to load `GCC-XML`_ configuration from ``.ini`` like file was added.
See :func:`pygccxml.parser.config.load_gccxml_configuration` for details.
4. From now on, :doc:`pygccxml <../pygccxml>` will use `Sphinx <http://sphinx.pocoo.org/>`_
for all documentation. The documentation format and content were updated.
5. From now on, `pygccxml` will provide convenient setup for latest `GCC-XML`_
version (CVS). See :doc:`download <../download>` document.
6. Bug `[ 2431993 ] pygccxml parses const volatile variable args as just const <http://sourceforge.net/tracker/index.php?func=detail&aid=2431993&group_id=118209&atid=684318>`_
was fixed.
7. Bug `[ 2779781 ] pygccxml reverses array dimensions <https://sourceforge.net/tracker/index.php?func=detail&aid=2779781&group_id=118209&atid=684318>`_
was fixed.
8. "explicit" property was added to ``declarations.constructor_t`` class.
Many thanks to Christopher Bruns, for finding out how this property
works in `GCC-XML`_.
9. "List symbols" (`nm`) utility invocation was improved and now handles
right relative paths and paths with spaces. Many thanks to Alejandro Dubrovsky
for providing the patch.
10. Small fix, which allows pygccxml to be usable on FreeBSD too: replace
`elif sys.platform == 'linux2' or sys.platform == 'darwin'` with `os.name == 'posix'`,
as suggested by `Jakub Wilk <http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/572d2286ca0b2cec?pli=1>`
11. "__int128_t" and "__uint128_t" types were introduced. Many thanks to Gustavo Carneiro
for providing the patch.
12. Thanks to Aron Xu, for pointing out that it is better to use "os.name",
instead of "sys.platform" for platform specific logic.
13. "has_inline" property was added to ``declarations.calldef_t`` class.
-----------
Version 1.0
-----------
1. Support for ellipsis was added.
Warning: this feature introduce backward compatibility problem!
Description:
.. code-block:: c++
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.
2. New experimental back-end, based on ``.pdb`` (progam database file), was added.
3. New high-level API wrapper for ``.bsc`` (browse source code file) was added.
4. 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.
5. ``declarations.decl_printer_t`` class dumps almost all available information
about a declaration.
6. ``declarations.is_same_function`` was fixed and now it treats
"covariant returns" right.
7. Search algorithm was improved for template instantiated classes. From
now, a spaces within the class name doesn't matter.
8. pygccxml unit tests functionality was improved. Many thanks to Gustavo Carneiro.
-------------
Version 0.9.5
-------------
1. Class ``free_operator_t`` is now able to provide references to the class declarations
instances it works on.
2. Support for `GCC-XML attributes`_ was added. Many thanks to Miguel Lobo for
the implementation.
.. _`GCC-XML attributes`: http://www.gccxml.org/HTML/Running.html
3. A bug in parsing a function exception specification was fixed. Many thanks to
Jeremy Sanders.
4. Support for a type/class "align", "offset" and "size" was added. Many thanks to
Ben Schleimer for the implementation.
5. Support for GCC-XML 0.9 was added.
6. Support for ``__restrict__`` was added.
7. ``declarations.has_trivial_copy`` was renamed to ``declarations.has_copy_constructor``.
The old name is still available, but will be removed soon.
8. ``declarations.priority_queue`` was renamed to ``declarations.priority_queue_traits``.
9. ``declarations.find_container_traits`` function was added.
10. Support for "partial name" was added. "Partial name" is the class name, without
template default arguments. The functionality was added to std containers
classes.
11. ``declarations.class_t`` and ``declarations.class_declaration_t`` has new property -
``container_traits``. This property describes std container element class.
12. All logging is now done to ``stderr`` instead of ``stdout``.
-------------
Version 0.9.0
-------------
1. Performance was improved. :doc:`pygccxml <../pygccxml>` is now 30-50% faster. The improvement
was achieved by using `cElementTree`_ package, ``iterparse`` functionality,
instead of standard XML SAX API. If `cElementTree`_ package is not available,
the built-in XML SAX package is used.
.. _`cElementTree` : http://effbot.org/zone/celementtree.htm
2. ``is_base_and_derived`` function was changed. The second argument could be
a tuple, which contains classes. The function returns ``True`` if at least one
class derives from the base one.
.. line separator
3. Class ``calldef_t`` has property - ``does_throw``. It describes
whether the function throws any exception or not.
.. line separator
4. Bug fixes: small bug was fixed in functionality that corrects GCC-XML reported
function default arguments. Reference to "enum" declaration extracted properly.
Many thanks to Martin Preisler for reporting the bug.
.. line separator
5. New type traits have been added:
* ``is_std_ostream``
* ``is_std_wostream``
.. line separator
6. C++ does not define implicit conversion between an integral type and ``void*``.
``declarations.is_convertible`` type traits was fixed.
.. line separator
7. ``declarations.is_noncopyable`` type traits implementation was slightly changed.
Now it checks explicitly that class has:
* default constructor
* copy constructor
* ``operator=``
* destructor
If all listed functions exist, than the algorithm returns ``False``, otherwise
it will continue to execute previous logic.
.. line separator
8. ``declarations.class_declaration_t`` has new property - ``aliases``. This is
a list of all aliases to the class declaration.
.. line separator
9. The message of the exception, which is raised from ``declarations.mdecl_wrapper_t``
class was improved and now clearly explains what the problem is.
.. line separator
-------------
Version 0.8.5
-------------
1. Added new functionality: "I depend on them". Every declaration can report
types and declarations it depends on.
2. ``signed char`` and ``char`` are two different types. This bug was fixed and
now :doc:`pygccxml <../pygccxml>` treats them right. Many thanks to Gaetan Lehmann for reporting
the bug.
3. Declarations, read from GCC-XML generated file, could be saved in cache.
4. New type traits have been added:
* ``is_bool``
5. Small improvement to algorithm, which extracts ``value_type``
( ``mapped_type`` ) from "std" containers.
6. 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``
================================= ==========================
7. Fixing bug related to array size and cache.
-------------
Version 0.8.2
-------------
1. Few small bug fix and unit tests have been introduced on 64 Bit platforms.
Many thanks to Gottfried Ganssauge! He also help me to discover and fix
some important bug in ``type_traits.__remove_alias`` function, by introducing
small example that reproduced the error.
2. Huge speed improvement has been achieved (x10). Allen Bierbaum suggested to
save and reuse results of different :doc:`pygccxml <../pygccxml>` algorithms:
* ``declarations.remove_alias``
* ``declarations.full_name``
* ``declarations.access_type``
* ``declarations.demangled_name``
* ``declarations.declaration_path``
3. Interface changes:
* ``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.
4. New type traits have been added:
* ``is_same_function``
5. Few bug were fixed.
6. Documentation was improved.
-------------
Version 0.8.1
-------------
1. :doc:`pygccxml <../pygccxml>` has been ported to MacOS X. Many thanks to Darren Garnier!
2. New type traits have been added:
* ``enum_traits``
* ``class_traits``
* ``class_declaration_traits``
* ``is_std_string``
* ``is_std_wstring``
* ``remove_declarated``
* ``has_public_less``
* ``has_public_equal``
* ``has_public_binary_operator``
* ``smart_pointer_traits``
* ``list_traits``
* ``deque_traits``
* ``queue_traits``
* ``priority_queue``
* ``vector_traits``
* ``stack_traits``
* ``map_traits``
* ``multimap_traits``
* ``hash_map_traits``
* ``hash_multimap_traits``
* ``set_traits``
* ``hash_set_traits``
* ``multiset_traits``
* ``hash_multiset_traits``
3. ``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.
4. Now you can pass operator symbol, as a name to query functions:
.. code-block:: python
cls = global_namespace.class_( 'my_class' )
op = cls.operator( '<' )
#instead of
op = cls.operator( symbol='<' )
5. :doc:`pygccxml <../pygccxml>` improved a lot functionality related to providing feedback to user:
* every package has its own logger
* only important user messages are written to ``stdout``
* user messages are clear
6. Support to Java native types has been added.
7. It is possible to pass an arbitrary string as a parameter to `GCC-XML`_.
8. Native java types has been added to fundamental types.
9. Cache classes implementation was improved.
10. Few bug were fixed.
11. Documentation was improved.
12. ``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:
.. code-block:: python
classes = ns.decls("class")
classes.decls("method")
This will fail because it finds the attribute decls which is not a callable.
-----------
Version 0.8
-----------
1. :doc:`pygccxml <../pygccxml>` now has power "select" interface. Read more about this cool feature
in tutorials.
2. Improved support for template instantiations. :doc:`pygccxml <../pygccxml>` now take into
account demangled name of declarations. Please refer to documentation for
more explanantion.
3. ``dummy_type_t`` - new type in types hierarchy. This is a very useful class
for code generation projects.
4. New function - ``get_global_namespace``. As you can guess, it will find and
return reference to global namespace.
5. New functionality in ``type_traits`` - ``has_public_assign``. This function
will return True, if class has public assign operator.
6. ``declarations.class_t`` has new property - ``aliases``. This is a list of
all class aliases.
7. Bug fixes.
8. Documentation has been updated/written/improved.
-------------
Version 0.7.1
-------------
**Attention - this going to be last version that is tested with Python 2.3**
1. New fundamental types has been added
* complex float
* complex double
* complex long double
2. **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.
3. Few new type traits has been added
* *type_traits.has_destructor*
* *type_traits.has_public_destructor*
* *type_traits.has_public_constructor*
* *type_traits.is_noncopyable*
4. ``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!
5. 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.
6. Sometimes, there is a need to find a declaration that match some criteria.
The was such functionality in :doc:`pygccxml <../pygccxml>`, but it was too limited. This
release fix the situation. :doc:`pygccxml <../pygccxml>` adds a set of classes that will help
you to deal with this problem.
7. 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!
8. ``parser.file_cache_t`` has been improved a lot.
Thanks to Allen Bierbaum!
9. 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.
10. Few helper functions has been added in order to make construction of
configuration file to be as easy as possible:
* ``parser.create_text_fc`` - creates file configuration, that contains text
* ``parser.create_source_fc`` - creates file configuration, that contains
reference to regular source file
* ``parser.create_gccxml_fc`` - creates file configuration, that contains
reference to `GCC-XML`_ generated file
* ``parser.create_cached_source_fc`` - creates file configuration, that
contains reference to 2 files: `GCC-XML`_ generated file and regular source
file
11. Small bug fixes.
12. Documentation. Allen Bierbaum and Matthias Baas contributed so much in this
area. Almost every public function/class has now documentation string.
13. Logging functionality has been added. :doc:`pygccxml <../pygccxml>` creates new logger
"pygccxml". Now it is possible to see what :doc:`pygccxml <../pygccxml>` is doing right now.
14. I am sure I forgot something.
-------------
Version 0.6.9
-------------
1. New functions:
* *type_traits.is_void_pointer*
* *type_traits.array_size*
* *type_traits.array_item_type*
2. Class *declarations.variable_t* has new property - *bit_fields*
3. Now it is possible to specify "undefined" directives using
*parser.config_t* class.
4. *patch* functionality has been introduced. `GCC-XML`_ generates wrong
default values for function arguments. *patch* functionality tries to fix
this.
5. Small bug fixes
-------------
Version 0.6.8
-------------
1. Small bug has been fixed.
-------------
Version 0.6.7
-------------
1. New functions:
* *type_traits.remove_pointer*
* *type_traits.base_type*
* *type_traits.is_convertible*
2. A lot of small bug fixes.
3. Few English mistakes have been fixed.
.. attention::
There are 2 none backward compatible changes:
* class with name **compaund_t** has been renamed to **compound_t**
* word **pathes** has been replaced with **paths**
4. There are new properties on
* *declarations.declaration_t.top_parent*
* *declarations.class_t.recursive_bases* returns all base classes of the
class
* *declarations.class_t.recursive_derived* returns all derived classes of
the class
* *member_calldef_t.access_type*
5. New type has been introduced: *unknown_t*. There are use cases when
`GCC-XML`_ does not returns function return type.
6. New implementation of *make_flatten* algorithm using generators.
By default old implementation will be used.
7. *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.
8. There are some cases when `GCC-XML`_ reports *"restricted"*. In this case
:doc:`pygccxml <../pygccxml>` replaces *"restricted"* with *"volatile"*.
.. _`SourceForge`: http://sourceforge.net/index.php
.. _`GCC-XML`: http://www.gccxml.org

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks