# pygccxml.declarations.type_traits module

defines few algorithms, that deals with different C++ type properties

Are you aware of boost::type_traits library? pygccxml implements the same functionality.

This module contains a set of very specific traits functionsclasses, each of which encapsulate a single trait from the C++ type system. For example: * is a type a pointer or a reference type ? * does a type have a trivial constructor ? * does a type have a const-qualifier ?

`array_item_type`(type_)

  returns array item type

`array_size`(type_)

  returns array size

`base_type`(type_)

  returns base type.

  For const int will return int

`decompose_class`(type_)

  implementation details

`decompose_type`(tp)

  Implementation detail

`does_match_definition`(given, main, secondary)

  implementation details

`is_arithmetic`(type_)

  returns True, if type represents C++ integral or floating point type, False otherwise

`is_array`(type_)

  returns True, if type represents C++ array type, False otherwise

`is_bool`(type_)

  Check if type is of boolean type.

  Parameters: | type (type_t) – The type to be checked
  Returns: | True if type is a boolean, False otherwise.
  Return type: | bool

`is_calldef_pointer`(type_)

  returns True, if type represents pointer to free/member function, False otherwise

`is_const`(type_)

  returns True, if type represents C++ const type, False otherwise

`is_elaborated`(type_)

  returns True, if type represents C++ elaborated type, False otherwise

`is_floating_point`(type_)

  returns True, if type represents C++ floating point type, False otherwise

`is_fundamental`(type_)

  returns True, if type represents C++ fundamental type

`is_integral`(type_)

  Check if type is a C++ integral type

  Parameters: | type (type_t) – The type to be checked
  Returns: | True if type is a C++ integral type, False otherwise.
  Return type: | bool

`is_pointer`(type_)

  returns True, if type represents C++ pointer type, False otherwise

`is_reference`(type_)

  returns True, if type represents C++ reference type, False otherwise

`is_same`(type1, type2)

  returns True, if type1 and type2 are same types

`is_std_ostream`(type_)

  Returns True, if type represents C++ std::ostream, False otherwise.

`is_std_string`(type_)

  Returns True, if type represents C++ std::string, False otherwise.

`is_std_wostream`(type_)

  Returns True, if type represents C++ std::wostream, False otherwise.

`is_std_wstring`(type_)

  Returns True, if type represents C++ std::wstring, False otherwise.

`is_void`(type_)

  Check if type is of void type.

  Parameters: | type (type_t) – The type to be checked
  Returns: | True if type is void, False otherwise.
  Return type: | bool

`is_void_pointer`(type_)

  returns True, if type represents void*, False otherwise

`is_volatile`(type_)

  returns True, if type represents C++ volatile type, False otherwise

`remove_alias`(type_)

  Returns type_t without typedef

  Parameters: | type (type_t | declaration_t) – type or declaration
  Returns: | the type associated to the inputted declaration
  Return type: | type_t

`remove_const`(type_)

  removes const from the type definition

  If type is not const type, it will be returned as is

`remove_cv`(type_)

  removes const and volatile from the type definition

`remove_declarated`(type_)

  removes type-declaration class-binder `declarated_t` from the type_

  If type_ is not `declarated_t`, it will be returned as is

`remove_elaborated`(type_)

  removes type-declaration class-binder `elaborated_t` from the type_

  If type_ is not `elaborated_t`, it will be returned as is

`remove_pointer`(type_)

  removes pointer from the type definition

  If type is not pointer type, it will be returned as is.

`remove_reference`(type_)

  removes reference from the type definition

  If type is not reference type, it will be returned as is.

`remove_volatile`(type_)

  removes volatile from the type definition

  If type is not volatile type, it will be returned as is