pygccxml.declarations.templates

Package pygccxml :: Package declarations :: Module templates |

# Source Code for Module pygccxml.declarations.templates

     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  """
     7  template instantiation parser
     8
     9  This module implements all functionality necessary to parse C++ template
    10  instantiations.In other words this module is able to extract next information from
    11  the string like this C{ std::vector<int> }.
    12      - name ( std::vector )
    13      - list of arguments ( int )
    14
    15  This module also defines few convenience function like L{split} and L{join}.
    16  """
    17
    18  import pattern_parser
    19
    20  __THE_PARSER = pattern_parser.parser_t( '<', '>', ',' )
    21
    22 -def is_instantiation( decl_string ):
    23      """
    24      returns True if decl_string is template instantiation and False otherwise
    25
    26      @param decl_string: string that should be checked for pattern presence
    27      @type decl_string: str
    28
    29      @return: bool
    30      """
    31      global __THE_PARSER
    32      return __THE_PARSER.has_pattern( decl_string )
    33
    34 -def name( decl_string ):
    35      """
    36      returns name of instantiated template
    37
    38      @type decl_string: str
    39      @return: str
    40      """
    41      global __THE_PARSER
    42      return __THE_PARSER.name( decl_string )
    43
    44 -def args( decl_string ):
    45      """
    46      returns list of template arguments
    47
    48      @type decl_string: str
    49      @return: [str]
    50      """
    51      global __THE_PARSER
    52      return __THE_PARSER.args( decl_string )
    53
    54 -def split( decl_string ):
    55      """returns (name, [arguments] )"""
    56      global __THE_PARSER
    57      return __THE_PARSER.split( decl_string )
    58
    59 -def split_recursive( decl_string ):
    60      """returns [(name, [arguments])]"""
    61      global __THE_PARSER
    62      return __THE_PARSER.split_recursive( decl_string )
    63
    64 -def join( name, args ):
    65      """returns name< argument_1, argument_2, ..., argument_n >"""
    66      global __THE_PARSER
    67      return __THE_PARSER.join( name, args )
    68
    69 -def normalize( decl_string ):
    70      """returns decl_string, which contains "normalized" spaces
    71
    72      this functionality allows to implement comparison of 2 different string
    73      which are actually same: x::y< z > and x::y<z>
    74      """
    75      global __THE_PARSER
    76      return __THE_PARSER.normalize( decl_string )
    77