pygccxml

Package pygccxml |

# Source Code for Package pygccxml

     1  # Copyright 2004-2008 Roman Yakovenko.
     2  # Distributed under the Boost Software License, Version 1.0. (See
     3  # accompanying file LICENSE_1_0.txt or copy at
     4  # http://www.boost.org/LICENSE_1_0.txt)
     5
     6  """Python GCC-XML front end.
     7
     8  This package provides functionality to extract and inspect
     9  declarations from C/C++ header files. This is accomplished
    10  by invoking the external tool U{gccxml<http://www.gccxml.org/>}
    11  which parses a header file and dumps the declarations as a
    12  XML file. This XML file is then read by pygccxml and the contents
    13  are made available as appropriate Python objects.
    14
    15  To parse a set of C/C++ header files you use the
    16  L{parse()<parser.parse>} function in the L{parser} sub package which
    17  returns a tree that contains all declarations found in the header
    18  files. The root of the tree represents the main namespace C{::} and
    19  the children nodes represent the namespace contents such as other
    20  namespaces, classes, functions, etc. Each node in the tree is an
    21  object of a type derived from the
    22  L{declaration_t<declarations.declaration_t>} base class. An inner
    23  node is always either a namespace (L{namespace_t<declarations.namespace_t>})
    24  or a class (L{class_t<declarations.class_t>}) which are both derived
    25  from L{scopedef_t<declarations.scopedef_t>}. Everything else (free functions,
    26  member functions, enumerations, variables, etc.) is always a leaf.
    27  You will find all those declaration classes in the L{declarations}
    28  sub-package.
    29
    30  """
    31
    32  import pygccxml.declarations as declarations
    33  import pygccxml.parser as parser
    34  import pygccxml.utils as utils
    35
    36  #TODO:
    37  #  1. Write documentation for filtering functionality.
    38  #  2. Add "explicit" property for constructors
    39
    40  __version__ = '1.0.0'
    41
    42  __revision__ = 1080
    43