# pygccxml.declarations.type_traits_classes module

`class_declaration_traits` = <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>

  implements functionality, needed for convenient work with C++ class declarations

`class_traits` = <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>

  implements functionality, needed for convenient work with C++ classes

class `declaration_xxx_traits`(declaration_class)

  Bases: `object`

  this class implements the functionality needed for convenient work with declaration classes

  Implemented functionality:
    - find out whether a declaration is a desired one
    - get reference to the declaration
  `get_declaration`(type_)

    returns reference to the declaration

    Precondition: self.is_my_case( type ) == True

  `is_my_case`(type_)

    returns True, if type represents the desired declaration, False otherwise

`enum_declaration` = <bound method declaration_xxx_traits.get_declaration of <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>>

  returns reference to enum declaration

`enum_traits` = <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>

  implements functionality, needed for convenient work with C++ enums

`find_copy_constructor`(type_)

  Returns reference to copy constructor.

  Parameters: | type (declarations.class_t) – the class to be searched.
  Returns: | the copy constructor
  Return type: | declarations.constructor_t

`find_noncopyable_vars`(class_type, already_visited_cls_vars=None)

  Returns list of all noncopyable variables.

  If an already_visited_cls_vars list is provided as argument, the returned list will not contain these variables. This list will be extended with whatever variables pointing to classes have been found.

  Parameters:

  - class_type (declarations.class_t) – the class to be searched.
  - already_visited_cls_vars (list) – optional list of vars that should not be checked a second time, to prevent infinite recursions.

  Returns: | list of all noncopyable variables.
  Return type: | list

`find_trivial_constructor`(type_)

  Returns reference to trivial constructor.

  Parameters: | type (declarations.class_t) – the class to be searched.
  Returns: | the trivial constructor
  Return type: | declarations.constructor_t

`has_any_non_copyconstructor`(decl_type)

  if class has any public constructor, which is not copy constructor, this function will return list of them, otherwise None

`has_copy_constructor`(class_)

  if class has public copy constructor, this function will return reference to it, None otherwise

`has_destructor`(class_)

  if class has destructor, this function will return reference to it, None otherwise

`has_public_assign`(class_)

  returns True, if class has public assign operator, False otherwise

`has_public_constructor`(class_)

  if class has any public constructor, this function will return list of them, otherwise None

`has_public_destructor`(decl_type)

  returns True, if class has public destructor, False otherwise

`has_trivial_constructor`(class_)

  if class has public trivial constructor, this function will return reference to it, None otherwise

`has_vtable`(decl_type)

  True, if class has virtual table, False otherwise

`is_base_and_derived`(based, derived)

  returns True, if there is “base and derived” relationship between classes, False otherwise

`is_binary_operator`(oper)

  returns True, if operator is binary operator, otherwise False

`is_class` = <bound method declaration_xxx_traits.is_my_case of <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>>

  returns True, if type represents C++ class definition, False otherwise

`is_class_declaration` = <bound method declaration_xxx_traits.is_my_case of <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>>

  returns True, if type represents C++ class declaration, False otherwise

`is_convertible`(source, target)

  returns True, if source could be converted to target, otherwise False

`is_copy_constructor`(constructor)

  Check if the declaration is a copy constructor,

  Parameters: | constructor (declarations.constructor_t) – the constructor to be checked.
  Returns: | True if this is a copy constructor, False instead.
  Return type: | bool

`is_enum` = <bound method declaration_xxx_traits.is_my_case of <pygccxml.declarations.type_traits_classes.declaration_xxx_traits object>>

  returns True, if type represents C++ enumeration declaration, False otherwise

`is_noncopyable`(class_, already_visited_cls_vars=None)

  Checks if class is non copyable

  Parameters:

  - class (declarations.class_t) – the class to be checked
  - already_visited_cls_vars (list) – optional list of vars that should not be checked a second time, to prevent infinite recursions. In general you can ignore this argument, it is mainly used during recursive calls of is_noncopyable() done by pygccxml.

  Returns: | if the class is non copyable
  Return type: | bool

`is_struct`(declaration)

  Returns True if declaration represents a C++ struct

  Parameters: | declaration (declaration_t) – the declaration to be checked.
  Returns: | True if declaration represents a C++ struct
  Return type: | bool

`is_trivial_constructor`(constructor)

  Check if the declaration is a trivial constructor.

  Parameters: | constructor (declarations.constructor_t) – the constructor to be checked.
  Returns: | True if this is a trivial constructor, False instead.
  Return type: | bool

`is_unary_operator`(oper)

  returns True, if operator is unary operator, otherwise False

`is_union`(declaration)

  Returns True if declaration represents a C++ union

  Parameters: | declaration (declaration_t) – the declaration to be checked.
  Returns: | True if declaration represents a C++ union
  Return type: | bool