# pygccxml package

Python CastXML or GCC-XML front end.

This package provides functionality to extract and inspect declarations from C/C++ header files. This is accomplished by invoking an external tool like CastXML or GCC-XML, which parses a header file and dumps the declarations as a XML file. This XML file is then read by pygccxml and the contents are made available as appropriate Python objects.

To parse a set of C/C++ header files you use the `parse` function in the :mod:parser sub package which returns a tree that contains all declarations found in the header files. The root of the tree represents the main namespace :: and the children nodes represent the namespace contents such as other namespaces, classes, functions, etc. Each node in the tree is an object of a type derived from the `declaration_t` class. An inner node is always either a namespace `declarations.namespace_t` or a class `declarations.class_t`, which are both derived from `declarations.scopedef_t` class. Everything else (free functions, member functions, enumerations, variables, etc.) are always a leaf. You will find all those declaration classes in the :mod:declarations sub-package.

## Subpackages

- pygccxml.declarations package
  - Submodules
    - pygccxml.declarations.algorithm module
    - pygccxml.declarations.algorithms_cache module
    - pygccxml.declarations.byte_info module
    - pygccxml.declarations.call_invocation module
    - pygccxml.declarations.calldef module
    - pygccxml.declarations.calldef_members module
    - pygccxml.declarations.calldef_types module
    - pygccxml.declarations.class_declaration module
    - pygccxml.declarations.container_traits module
    - pygccxml.declarations.cpptypes module
    - pygccxml.declarations.decl_factory module
    - pygccxml.declarations.decl_printer module
    - pygccxml.declarations.decl_visitor module
    - pygccxml.declarations.declaration module
    - pygccxml.declarations.declaration_utils module
    - pygccxml.declarations.declarations_matchers module
    - pygccxml.declarations.elaborated_info module
    - pygccxml.declarations.enumeration module
    - pygccxml.declarations.free_calldef module
    - pygccxml.declarations.function_traits module
    - pygccxml.declarations.has_operator_matcher module
    - pygccxml.declarations.location module
    - pygccxml.declarations.matchers module
    - pygccxml.declarations.mdecl_wrapper module
    - pygccxml.declarations.namespace module
    - pygccxml.declarations.pattern_parser module
    - pygccxml.declarations.runtime_errors module
    - pygccxml.declarations.scopedef module
    - pygccxml.declarations.smart_pointer_traits module
    - pygccxml.declarations.templates module
    - pygccxml.declarations.traits_impl_details module
    - pygccxml.declarations.type_traits module
    - pygccxml.declarations.type_traits_classes module
    - pygccxml.declarations.type_visitor module
    - pygccxml.declarations.typedef module
    - pygccxml.declarations.variable module
    - pygccxml.declarations.xml_generators module
- pygccxml.parser package
  - Submodules
    - pygccxml.parser.config module
    - pygccxml.parser.declarations_cache module
    - pygccxml.parser.declarations_joiner module
    - pygccxml.parser.directory_cache module
    - pygccxml.parser.etree_scanner module
    - pygccxml.parser.linker module
    - pygccxml.parser.patcher module
    - pygccxml.parser.project_reader module
    - pygccxml.parser.scanner module
    - pygccxml.parser.source_reader module
- pygccxml.utils package
  - Submodules
    - pygccxml.utils.utils module
    - pygccxml.utils.xml_generators module