# pygccxml.declarations.container_traits module

Define a few algorithms that deal with different properties of std containers.

`all_container_traits` = (<pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>)

  tuple of all STD container traits classes

class `container_traits_impl_t`(container_name, element_type_index, element_type_typedef, eraser, key_type_index=None, key_type_typedef=None, unordered_maps_and_sets=False)

  Bases: `object`

  Implements the functionality needed for convenient work with STD container classes

  Implemented functionality:
    - find out whether a declaration is STD container or not
    - find out container value( mapped ) type

  This class tries to be useful as much as possible. For example, for class declaration (and not definition) it parses the class name in order to extract the information.

  `class_declaration`(type_)

    Returns reference to the class declaration.

  `element_type`(type_)

    returns reference to the class valuemapped type declaration

  `get_container_or_none`(type_)

    Returns reference to the class declaration or None.

  `is_mapping`(type_)
  `is_my_case`(type_)

    Checks, whether type is STD container or not.

  `is_sequence`(type_)
  `key_type`(type_)

    returns reference to the class key type declaration

  `name`()
  `remove_defaults`(type_or_string)

    Removes template defaults from a templated class instantiation.

    For example:

          std::vector< int, std::allocator< int > >

    will become:

          std::vector< int >

class `defaults_eraser`(unordered_maps_and_sets)

  Bases: `object`

  `decorated_call_prefix`(cls_name, text, doit)
  `decorated_call_suffix`(cls_name, text, doit)
  `erase_allocator`(cls_name, default_allocator='std::allocator')
  `erase_call`(cls_name)
  `erase_compare_allocator`(cls_name, default_compare='std::less', default_allocator='std::allocator')
  `erase_container`(cls_name, default_container_name='std::deque')
  `erase_container_compare`(cls_name, default_container_name='std::vector', default_compare='std::less')
  `erase_hash_allocator`(cls_name)
  `erase_hashmap_compare_allocator`(cls_name)
  `erase_map_compare_allocator`(cls_name, default_compare='std::less', default_allocator='std::allocator')
  `erase_recursive`(cls_name)
  `no_const`(cls_name)
  `no_end_const`(cls_name)
  `no_gnustd`(cls_name)
  `no_std`(cls_name)
  `no_stdext`(cls_name)
  `normalize`(type_str)
  `replace_basic_string`(cls_name)

`find_container_traits`(cls_or_string)

  Find the container traits type of a declaration.

  Parameters: | cls_or_string (str | declarations.declaration_t) – a string
  Returns: | a container traits
  Return type: | declarations.container_traits

`sequential_container_traits` = [<pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>, <pygccxml.declarations.container_traits.container_traits_impl_t object>]

  list, that contains all STD container traits classes