# 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