[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] |