def __is_noncopyable_single(class_, already_visited_cls_vars=None):
<EOL>logger = utils.loggers.cxx_parser<EOL>if has_copy_constructor(class_)and has_public_constructor(class_)and has_public_assign(class_)and has_public_destructor(class_):<EOL><INDENT>msg = os.linesep.join([<EOL>"<STR_LIT>" % class_.decl_string,<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>"])<EOL>logger.debug(msg)<EOL>return False<EOL><DEDENT>if already_visited_cls_vars is None:<EOL><INDENT>already_visited_cls_vars = []<EOL><DEDENT>if find_noncopyable_vars(class_, already_visited_cls_vars):<EOL><INDENT>logger.debug(<EOL>("<STR_LIT>" +<EOL>"<STR_LIT>"), class_.decl_string)<EOL>return True<EOL><DEDENT>logger.debug((<EOL>"<STR_LIT>" +<EOL>"<STR_LIT>"), class_.decl_string)<EOL>return False<EOL>
Implementation detail.

Checks if the class is non copyable, without considering the base classes.

Args:
    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.

Returns:
    bool: if the class is non copyable