[pygccxml-commit] SF.net SVN: pygccxml:[1714] pygccxml_dev/docs
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-05-11 09:01:40
|
Revision: 1714 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1714&view=rev Author: roman_yakovenko Date: 2009-05-11 09:01:32 +0000 (Mon, 11 May 2009) Log Message: ----------- documentation update Modified Paths: -------------- index.rest pygccxml_dev/docs/apidocs/api.rest pygccxml_dev/docs/design.rest pygccxml_dev/docs/download.rest pygccxml_dev/docs/history/history.rest pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/query_interface.rest Modified: index.rest =================================================================== --- index.rest 2009-05-11 07:44:51 UTC (rev 1713) +++ index.rest 2009-05-11 09:01:32 UTC (rev 1714) @@ -1,54 +1,50 @@ -============================== -C\\C++ Python language binding -============================== - ----------------- -pygccxml package ----------------- - -* Do you need to parse C++ code? -* Do you need to build code generator? -* Do you need to create UML diagram? - -:doc:`pygccxml <pygccxml/pygccxml>` is the way to go! :doc:`Learn more <pygccxml/pygccxml>`. - ------------- -Py++ package ------------- - -"I love deadlines. I love the whooshing noise they make as they go by." - -- Douglas Adams - -Meet your deadlines with powerful code generator engine - :doc:`Py++ <pyplusplus/pyplusplus>`. - -:doc:`Py++ <pyplusplus/pyplusplus>`, `ctypes <http://docs.python.org/library/ctypes.html>`_ -and `Boost.Python <http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html>`_ -provide a complete solution for interfacing Python and C\\C++. -:doc:`Learn more <pyplusplus/pyplusplus>`. - -*European Space Agency*, *Ogre*, *PyOpenSG* and many others :doc:`use <pyplusplus/quotes>` `Py++`. - -------------- -pydsc package -------------- - -Documentation strings contain spelling errors? :doc:`Fix them in a minute <pydsc/pydsc>`! - -------------- -Documentation -------------- - -.. toctree:: - :maxdepth: 1 - - pygccxml documentation <pygccxml/pygccxml.rest> - Py++ documentation <pyplusplus/pyplusplus.rest> - pydsc documentation <pydsc/pydsc.rest> - ------------------- -Indices and tables ------------------- - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` +============================== +C\\C++ Python language binding +============================== + +---------------- +pygccxml package +---------------- + +* Do you need to parse C++ code? +* Do you need to build code generator? +* Do you need to create UML diagram? + +:doc:`pygccxml <pygccxml/pygccxml>` is the way to go! :doc:`Learn more <pygccxml/pygccxml>`. + +------------ +Py++ package +------------ + +"I love deadlines. I love the whooshing noise they make as they go by." + -- Douglas Adams + +Meet your deadlines with powerful code generator engine - :doc:`Py++ <pyplusplus/pyplusplus>`. + +:doc:`Py++ <pyplusplus/pyplusplus>`, `ctypes <http://docs.python.org/library/ctypes.html>`_ +and `Boost.Python <http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html>`_ +provide a complete solution for interfacing Python and C\\C++. +:doc:`Learn more <pyplusplus/pyplusplus>`. + +*European Space Agency*, *Ogre*, *PyOpenSG* and many others :doc:`use <pyplusplus/quotes>` `Py++`. + +------------- +pydsc package +------------- + +Documentation strings contain spelling errors? :doc:`Fix them in a minute <pydsc/pydsc>`! + +.. toctree:: + :hidden: + + pydsc/pydsc.rest + pygccxml/pygccxml.rest + pyplusplus/pyplusplus.rest + +------------------ +Indices and tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` Modified: pygccxml_dev/docs/apidocs/api.rest =================================================================== --- pygccxml_dev/docs/apidocs/api.rest 2009-05-11 07:44:51 UTC (rev 1713) +++ pygccxml_dev/docs/apidocs/api.rest 2009-05-11 09:01:32 UTC (rev 1714) @@ -1,11 +1,15 @@ -=== +==== API -=== +==== +---- +API +---- + `pygccxml` consists from 4 sub packages .. toctree:: - :maxdepth: 4 + :maxdepth: 1 declarations.rest parser.rest Modified: pygccxml_dev/docs/design.rest =================================================================== --- pygccxml_dev/docs/design.rest 2009-05-11 07:44:51 UTC (rev 1713) +++ pygccxml_dev/docs/design.rest 2009-05-11 09:01:32 UTC (rev 1714) @@ -1,293 +1,293 @@ -=============== -pygccxml design -=============== - ------------------------- -The view from 10000 fits ------------------------- - -:doc:`pygccxml <pygccxml>` has 4 packages: - -* :mod:`declarations <pygccxml.declarations>` package defines classes that describe - C++ declarations and types - -* :mod:`parser <pygccxml.parser>` package defines classes that parse `GCC-XML`_ - generated files. Also it defines few classes that will help you to eliminate - unnecessary parsing of C++ source files. - -* :mod:`binary_parsers <pygccxml.binary_parsers>` package extracts some - information from binary files ( `.so`, `.dll`, `.map` ) and merges it with - the declarations tree. - -* ``utils`` package defines few functions, I found useful in the whole project. - -------------------------- -``declarations`` package -------------------------- - -Please take a look on the `UML diagram`_. This `UML diagram`_ describes almost all -classes defined in the package and their relationship. ``declarations`` package -defines two hierarchies of class: - -1. types hierarchy - used to represent a C++ type - -2. declarations hierarchy - used to represent a C++ declaration - - -Types hierarchy ---------------- - -Types hierarchy is used to represent an arbitrary type in C++. class ``type_t`` -is the base class. - -``type_traits`` -~~~~~~~~~~~~~~~ - -Are you aware of `boost::type_traits`_ library? The `boost::type_traits`_ -library contains a set of very specific traits classes, each of which -encapsulate a single trait from the C++ type system; for example, is a type -a pointer or a reference? Or does a type have a trivial constructor, or a -const-qualifier? - -:doc:`pygccxml <pygccxml>` implements a lot of functionality from the library: - -* a lot of algorithms were implemented - - + ``is_same`` - - + ``is_enum`` - - + ``is_void`` - - + ``is_const`` - - + ``is_array`` - - + ``is_pointer`` - - + ``is_volatile`` - - + ``is_integral`` - - + ``is_reference`` - - + ``is_arithmetic`` - - + ``is_convertible`` - - + ``is_fundamental`` - - + ``is_floating_point`` - - + ``is_base_and_derived`` - - + ``is_unary_operator`` - - + ``is_binary_operator`` - - + ``remove_cv`` - - + ``remove_const`` - - + ``remove_alias`` - - + ``remove_pointer`` - - + ``remove_volatile`` - - + ``remove_reference`` - - + ``has_trivial_copy`` - - + ``has_trivial_constructor`` - - + ``has_any_non_copyconstructor`` - - For a full list of implemented algorithms, please consult API documentation. - -* a lot of unit tests has been written base on unit tests from the - `boost::type_traits`_ library. - - -If you are going to build code generator, you will find ``type_traits`` very handy. - -Declarations hierarchy ----------------------- - -A declaration hierarchy is used to represent an arbitrary C++ declaration. -Basically, most of the classes defined in this package are just "set of properties". - -``declaration_t`` is the base class of the declaration hierarchy. Every declaration -has ``parent`` property. This property keeps a reference to the scope declaration -instance, in which this declaration is defined. - -The ``scopedef_t`` class derives from ``declaration_t``. This class is used to -say - "I may have other declarations inside". The "composite" design pattern is -used here. ``class_t`` and ``namespace_t`` declaration classes derive from the -``scopedef_t`` class. - ------------------- -``parser`` package ------------------- - -Please take a look on `parser package UML diagram`_ . Classes defined in this -package, implement parsing and linking functionality. There are few kind of -classes defined by the package: - -* classes, that implements parsing algorithms of `GCC-XML`_ generated XML file - -* parser configuration classes - -* cache - classes, those one will help you to eliminate unnecessary parsing - -* patchers - classes, which fix `GCC-XML`_ generated declarations. ( Yes, sometimes - GCC-XML generates wrong description of C++ declaration. ) - -Parser classes --------------- - -``source_reader_t`` - the only class that have a detailed knowledge about `GCC-XML`_. -It has only one responsibility: it calls `GCC-XML`_ with a source file specified -by user and creates declarations tree. The implementation of this class is split -to 2 classes: - -1. ``scanner_t`` - this class scans the "XML" file, generated by `GCC-XML`_ and - creates :doc:`pygccxml <pygccxml>` declarations and types classes. After the xml file has - been processed declarations and type class instances keeps references to - each other using `GCC-XML`_ generated ids. - -2. ``linker_t`` - this class contains logic for replacing `GCC-XML`_ generated - ids with references to declarations or type class instances. - -Both those classes are implementation details and should not be used by user. -Performance note: ``scanner_t`` class uses Python ``xml.sax`` package in order -to parse XML. As a result, ``scanner_t`` class is able to parse even big XML files -pretty quick. - -``project_reader_t`` - think about this class as a linker. In most cases you work -with few source files. GCC-XML does not supports this mode of work. So, :doc:`pygccxml <pygccxml>` -implements all functionality needed to parse few source files at once. -``project_reader_t`` implements 2 different algorithms, that solves the problem: - -1. ``project_reader_t`` creates temporal source file, which includes all the source - files. - -2. ``project_reader_t`` parse separately every source file, using ``source_reader_t`` - class and then joins the resulting declarations tree into single declarations - tree. - -Both approaches have different trades-off. The first approach does not allow you -to reuse information from already parsed source files. While the second one -allows you to setup cache. - -Parser configuration classes ----------------------------- - -``config_t`` - a class, that accumulates all the settings needed to invoke `GCC-XML`_: - - -``file_configuration_t`` - a class, that contains some data and description how -to treat the data. ``file_configuration_t`` can contain reference to the the following types -of data: - -(1) path to C++ source file - -(2) path to `GCC-XML`_ generated XML file - -(3) path to C++ source file and path to `GCC-XML`_ generated XML file - - In this case, if XML file does not exists, it will be created. Next time - you will ask to parse the source file, the XML file will be used instead. - - Small tip: you can setup your makefile to delete XML files every time, - the relevant source file has changed. - -(4) Python string, that contains valid C++ code - -There are few functions that will help you to construct ``file_configuration_t`` -object: - -* ``def create_source_fc( header )`` - - ``header`` contains path to C++ source file - -* ``def create_gccxml_fc( xml_file )`` - - ``xml_file`` contains path to `GCC-XML`_ generated XML file - -* ``def create_cached_source_fc( header, cached_source_file )`` - - - ``header`` contains path to C++ source file - - ``xml_file`` contains path to `GCC-XML`_ generated XML file - -* ``def create_text_fc( text )`` - - ``text`` - Python string, that contains valid C++ code - - -Cache classes -------------- - -There are few cache classes, which implements different cache strategies. - -1. ``file_configuration_t`` class, that keeps path to C++ source file and path to - `GCC-XML`_ generated XML file. - -2. ``file_cache_t`` class, will save all declarations from all files within single - binary file. - -3. ``directory_cache_t`` class will store one index file called "index.dat" which - is always read by the cache when the cache object is created. Each header file - will have its corresponding \*.cache file that stores the declarations found - in the header file. The index file is used to determine whether a \*.cache file - is still valid or not (by checking if one of the dependent files - (i.e. the header file itself and all included files) have been modified since - the last run). - -In some cases, ``directory_cache_t`` class gives much better performance, than -``file_cache_t``. Many thanks to Matthias Baas for its implementation. - -**Warning**: when :doc:`pygccxml <pygccxml>` writes information to files, using cache classes, -it does not write any version information. It means, that when you upgrade -:doc:`pygccxml <pygccxml>` you have to delete all your cache files. Otherwise you will get very -strange errors. For example: missing attribute. - - -Patchers --------- - -Well, `GCC-XML`_ has few bugs, which could not be fixed from it. For example - -.. code-block:: c++ - - namespace ns1{ namespace ns2{ - enum fruit{ apple, orange }; - } } - -.. code-block:: c++ - - void fix_enum( ns1::ns2::fruit arg=ns1::ns2::apple ); - -`GCC-XML`_ will report the default value of ``arg`` as ``apple``. Obviously -this in an error. :doc:`pygccxml <pygccxml>` knows how to fix this bug. - -This is not the only bug, which could be fixed, there are few of them. :doc:`pygccxml <pygccxml>` -introduces few classes, which knows how to deal with specific bug. More over, those -bugs are fixed, only if I am 101% sure, that this is the right thing to do. - -------- -Summary -------- - -That's all. I hope I was clear, at least I tried. Any way, :doc:`pygccxml <pygccxml>` is an open -source project. You always can take a look on the source code. If you need more -information please read API documentation. - - -.. _`SourceForge`: http://sourceforge.net/index.php -.. _`Python`: http://www.python.org -.. _`GCC-XML`: http://www.gccxml.org -.. _`UML diagram` : declarations_uml.png -.. _`parser package UML diagram` : parser_uml.png -.. _`ReleaseForge` : http://releaseforge.sourceforge.net -.. _`boost::type_traits` : http://www.boost.org/libs/type_traits/index.html +=============== +Design overview +=============== + +------------------------ +The view from 10000 fits +------------------------ + +:doc:`pygccxml <pygccxml>` has 4 packages: + +* :mod:`declarations <pygccxml.declarations>` package defines classes that describe + C++ declarations and types + +* :mod:`parser <pygccxml.parser>` package defines classes that parse `GCC-XML`_ + generated files. Also it defines few classes that will help you to eliminate + unnecessary parsing of C++ source files. + +* :mod:`binary_parsers <pygccxml.binary_parsers>` package extracts some + information from binary files ( `.so`, `.dll`, `.map` ) and merges it with + the declarations tree. + +* ``utils`` package defines few functions, I found useful in the whole project. + +------------------------- +``declarations`` package +------------------------- + +Please take a look on the `UML diagram`_. This `UML diagram`_ describes almost all +classes defined in the package and their relationship. ``declarations`` package +defines two hierarchies of class: + +1. types hierarchy - used to represent a C++ type + +2. declarations hierarchy - used to represent a C++ declaration + + +Types hierarchy +--------------- + +Types hierarchy is used to represent an arbitrary type in C++. class ``type_t`` +is the base class. + +``type_traits`` +~~~~~~~~~~~~~~~ + +Are you aware of `boost::type_traits`_ library? The `boost::type_traits`_ +library contains a set of very specific traits classes, each of which +encapsulate a single trait from the C++ type system; for example, is a type +a pointer or a reference? Or does a type have a trivial constructor, or a +const-qualifier? + +:doc:`pygccxml <pygccxml>` implements a lot of functionality from the library: + +* a lot of algorithms were implemented + + + ``is_same`` + + + ``is_enum`` + + + ``is_void`` + + + ``is_const`` + + + ``is_array`` + + + ``is_pointer`` + + + ``is_volatile`` + + + ``is_integral`` + + + ``is_reference`` + + + ``is_arithmetic`` + + + ``is_convertible`` + + + ``is_fundamental`` + + + ``is_floating_point`` + + + ``is_base_and_derived`` + + + ``is_unary_operator`` + + + ``is_binary_operator`` + + + ``remove_cv`` + + + ``remove_const`` + + + ``remove_alias`` + + + ``remove_pointer`` + + + ``remove_volatile`` + + + ``remove_reference`` + + + ``has_trivial_copy`` + + + ``has_trivial_constructor`` + + + ``has_any_non_copyconstructor`` + + For a full list of implemented algorithms, please consult API documentation. + +* a lot of unit tests has been written base on unit tests from the + `boost::type_traits`_ library. + + +If you are going to build code generator, you will find ``type_traits`` very handy. + +Declarations hierarchy +---------------------- + +A declaration hierarchy is used to represent an arbitrary C++ declaration. +Basically, most of the classes defined in this package are just "set of properties". + +``declaration_t`` is the base class of the declaration hierarchy. Every declaration +has ``parent`` property. This property keeps a reference to the scope declaration +instance, in which this declaration is defined. + +The ``scopedef_t`` class derives from ``declaration_t``. This class is used to +say - "I may have other declarations inside". The "composite" design pattern is +used here. ``class_t`` and ``namespace_t`` declaration classes derive from the +``scopedef_t`` class. + +------------------ +``parser`` package +------------------ + +Please take a look on `parser package UML diagram`_ . Classes defined in this +package, implement parsing and linking functionality. There are few kind of +classes defined by the package: + +* classes, that implements parsing algorithms of `GCC-XML`_ generated XML file + +* parser configuration classes + +* cache - classes, those one will help you to eliminate unnecessary parsing + +* patchers - classes, which fix `GCC-XML`_ generated declarations. ( Yes, sometimes + GCC-XML generates wrong description of C++ declaration. ) + +Parser classes +-------------- + +``source_reader_t`` - the only class that have a detailed knowledge about `GCC-XML`_. +It has only one responsibility: it calls `GCC-XML`_ with a source file specified +by user and creates declarations tree. The implementation of this class is split +to 2 classes: + +1. ``scanner_t`` - this class scans the "XML" file, generated by `GCC-XML`_ and + creates :doc:`pygccxml <pygccxml>` declarations and types classes. After the xml file has + been processed declarations and type class instances keeps references to + each other using `GCC-XML`_ generated ids. + +2. ``linker_t`` - this class contains logic for replacing `GCC-XML`_ generated + ids with references to declarations or type class instances. + +Both those classes are implementation details and should not be used by user. +Performance note: ``scanner_t`` class uses Python ``xml.sax`` package in order +to parse XML. As a result, ``scanner_t`` class is able to parse even big XML files +pretty quick. + +``project_reader_t`` - think about this class as a linker. In most cases you work +with few source files. GCC-XML does not supports this mode of work. So, :doc:`pygccxml <pygccxml>` +implements all functionality needed to parse few source files at once. +``project_reader_t`` implements 2 different algorithms, that solves the problem: + +1. ``project_reader_t`` creates temporal source file, which includes all the source + files. + +2. ``project_reader_t`` parse separately every source file, using ``source_reader_t`` + class and then joins the resulting declarations tree into single declarations + tree. + +Both approaches have different trades-off. The first approach does not allow you +to reuse information from already parsed source files. While the second one +allows you to setup cache. + +Parser configuration classes +---------------------------- + +``config_t`` - a class, that accumulates all the settings needed to invoke `GCC-XML`_: + + +``file_configuration_t`` - a class, that contains some data and description how +to treat the data. ``file_configuration_t`` can contain reference to the the following types +of data: + +(1) path to C++ source file + +(2) path to `GCC-XML`_ generated XML file + +(3) path to C++ source file and path to `GCC-XML`_ generated XML file + + In this case, if XML file does not exists, it will be created. Next time + you will ask to parse the source file, the XML file will be used instead. + + Small tip: you can setup your makefile to delete XML files every time, + the relevant source file has changed. + +(4) Python string, that contains valid C++ code + +There are few functions that will help you to construct ``file_configuration_t`` +object: + +* ``def create_source_fc( header )`` + + ``header`` contains path to C++ source file + +* ``def create_gccxml_fc( xml_file )`` + + ``xml_file`` contains path to `GCC-XML`_ generated XML file + +* ``def create_cached_source_fc( header, cached_source_file )`` + + - ``header`` contains path to C++ source file + - ``xml_file`` contains path to `GCC-XML`_ generated XML file + +* ``def create_text_fc( text )`` + + ``text`` - Python string, that contains valid C++ code + + +Cache classes +------------- + +There are few cache classes, which implements different cache strategies. + +1. ``file_configuration_t`` class, that keeps path to C++ source file and path to + `GCC-XML`_ generated XML file. + +2. ``file_cache_t`` class, will save all declarations from all files within single + binary file. + +3. ``directory_cache_t`` class will store one index file called "index.dat" which + is always read by the cache when the cache object is created. Each header file + will have its corresponding \*.cache file that stores the declarations found + in the header file. The index file is used to determine whether a \*.cache file + is still valid or not (by checking if one of the dependent files + (i.e. the header file itself and all included files) have been modified since + the last run). + +In some cases, ``directory_cache_t`` class gives much better performance, than +``file_cache_t``. Many thanks to Matthias Baas for its implementation. + +**Warning**: when :doc:`pygccxml <pygccxml>` writes information to files, using cache classes, +it does not write any version information. It means, that when you upgrade +:doc:`pygccxml <pygccxml>` you have to delete all your cache files. Otherwise you will get very +strange errors. For example: missing attribute. + + +Patchers +-------- + +Well, `GCC-XML`_ has few bugs, which could not be fixed from it. For example + +.. code-block:: c++ + + namespace ns1{ namespace ns2{ + enum fruit{ apple, orange }; + } } + +.. code-block:: c++ + + void fix_enum( ns1::ns2::fruit arg=ns1::ns2::apple ); + +`GCC-XML`_ will report the default value of ``arg`` as ``apple``. Obviously +this in an error. :doc:`pygccxml <pygccxml>` knows how to fix this bug. + +This is not the only bug, which could be fixed, there are few of them. :doc:`pygccxml <pygccxml>` +introduces few classes, which knows how to deal with specific bug. More over, those +bugs are fixed, only if I am 101% sure, that this is the right thing to do. + +------- +Summary +------- + +That's all. I hope I was clear, at least I tried. Any way, :doc:`pygccxml <pygccxml>` is an open +source project. You always can take a look on the source code. If you need more +information please read API documentation. + + +.. _`SourceForge`: http://sourceforge.net/index.php +.. _`Python`: http://www.python.org +.. _`GCC-XML`: http://www.gccxml.org +.. _`UML diagram` : declarations_uml.png +.. _`parser package UML diagram` : parser_uml.png +.. _`ReleaseForge` : http://releaseforge.sourceforge.net +.. _`boost::type_traits` : http://www.boost.org/libs/type_traits/index.html Modified: pygccxml_dev/docs/download.rest =================================================================== --- pygccxml_dev/docs/download.rest 2009-05-11 07:44:51 UTC (rev 1713) +++ pygccxml_dev/docs/download.rest 2009-05-11 09:01:32 UTC (rev 1714) @@ -1,67 +1,67 @@ -================= -pygccxml download -================= - -------------------------- -pygccxml on SourceForge -------------------------- - -:doc:`pygccxml <pygccxml>` project is hosted on SourceForge. Using SourceForge services you -can: - -1) get access to source code -2) get access to latest release version of :doc:`pygccxml <pygccxml>` - - ------------------ -Subversion access ------------------ - -http://sourceforge.net/svn/?group_id=118209 - --------- -Download --------- - -https://sourceforge.net/project/showfiles.php?group_id=118209 - ------------- -Installation ------------- - -GCC-XML -------- -There are few different ways to install GCC-XML on your system: - -1. If you use Linux, than I am almost sure your system has "gccxml" package. - Consider to install it using "native"(rpm, deb, portage) packaging system. - -.. line separator - -2. Another option is to install it from the source code. See `instructions`_ - provided by Brad King, the author of `GCC-XML`_. Installation from sources - is supported for Windows, Linux and Mac platforms. - -.. _`instructions` : http://gccxml.org/HTML/Install.html - -3. You can use `GCC-XML`_ installer built by me, from the CVS. Go to `download page`_ - and download "gccxml-setup". - -.. _`download page` : http://sourceforge.net/project/showfiles.php?group_id=118209 - -pygccxml --------- -In command prompt or shell change current directory to be "pygccxml-X.Y.Z". -"X.Y.Z" is version of :doc:`pygccxml <pygccxml>`. Type the following command: - -| ``python setup.py install`` - -After this command complete, you should have installed :doc:`pygccxml <pygccxml>` package. - ------------- -Dependencies ------------- - -* `GCC-XML`_ - -.. _`GCC-XML`: http://www.gccxml.org +================== +Download & Install +================== + +------------------------- +pygccxml on SourceForge +------------------------- + +:doc:`pygccxml <pygccxml>` project is hosted on SourceForge. Using SourceForge services you +can: + +1) get access to source code +2) get access to latest release version of :doc:`pygccxml <pygccxml>` + + +----------------- +Subversion access +----------------- + +http://sourceforge.net/svn/?group_id=118209 + +-------- +Download +-------- + +https://sourceforge.net/project/showfiles.php?group_id=118209 + +------------ +Installation +------------ + +GCC-XML +------- +There are few different ways to install GCC-XML on your system: + +1. If you use Linux, than I am almost sure your system has "gccxml" package. + Consider to install it using "native"(rpm, deb, portage) packaging system. + +.. line separator + +2. Another option is to install it from the source code. See `instructions`_ + provided by Brad King, the author of `GCC-XML`_. Installation from sources + is supported for Windows, Linux and Mac platforms. + +.. _`instructions` : http://gccxml.org/HTML/Install.html + +3. You can use `GCC-XML`_ installer built by me, from the CVS. Go to `download page`_ + and download "gccxml-setup". + +.. _`download page` : http://sourceforge.net/project/showfiles.php?group_id=118209 + +pygccxml +-------- +In command prompt or shell change current directory to be "pygccxml-X.Y.Z". +"X.Y.Z" is version of :doc:`pygccxml <pygccxml>`. Type the following command: + +| ``python setup.py install`` + +After this command complete, you should have installed :doc:`pygccxml <pygccxml>` package. + +------------ +Dependencies +------------ + +* `GCC-XML`_ + +.. _`GCC-XML`: http://www.gccxml.org Modified: pygccxml_dev/docs/history/history.rest =================================================================== --- pygccxml_dev/docs/history/history.rest 2009-05-11 07:44:51 UTC (rev 1713) +++ pygccxml_dev/docs/history/history.rest 2009-05-11 09:01:32 UTC (rev 1714) @@ -1,563 +1,563 @@ -============================ -pygccxml 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 - ------------ -Version 1.1 ------------ - -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. - - ------------ -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 +=================== +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 + +----------- +Version 1.1 +----------- + +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. + + +----------- +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`` ... [truncated message content] |