(restype, *argtypes, **kw)
CFUNCTYPE(restype, *argtypes,
                 use_errno=False, use_last_error=False) -> function prototype.

    restype: the result type
    argtypes: a sequence specifying the argument types

    The function prototype can be called in different ways to create a
    callable object:

    prototype(integer address) -> foreign function
    prototype(callable) -> create and return a C callable function from callable
    prototype(integer index, method name[, paramflags]) -> foreign function calling a COM method
    prototype((ordinal number, dll object)[, paramflags]) -> foreign function exported by ordinal
    prototype((function name, dll object)[, paramflags]) -> foreign function exported by name
CFUNCTYPE(restype, *argtypes,
                 use_errno=False, use_last_error=False) -> function prototype.
CFUNCTYPE ( restype * argtypes use_errno = False use_last_error = False ) - > function prototype .
def CFUNCTYPE(restype, *argtypes, **kw):
    """CFUNCTYPE(restype, *argtypes,
                 use_errno=False, use_last_error=False) -> function prototype.

    restype: the result type
    argtypes: a sequence specifying the argument types

    The function prototype can be called in different ways to create a
    callable object:

    prototype(integer address) -> foreign function
    prototype(callable) -> create and return a C callable function from callable
    prototype(integer index, method name[, paramflags]) -> foreign function calling a COM method
    prototype((ordinal number, dll object)[, paramflags]) -> foreign function exported by ordinal
    prototype((function name, dll object)[, paramflags]) -> foreign function exported by name
    """
    flags = _FUNCFLAG_CDECL
    if kw.pop("use_errno", False):
        flags |= _FUNCFLAG_USE_ERRNO
    if kw.pop("use_last_error", False):
        flags |= _FUNCFLAG_USE_LASTERROR
    if kw:
        raise ValueError("unexpected keyword argument(s) %s" % kw.keys())
    try:
        return _c_functype_cache[(restype, argtypes, flags)]
    except KeyError:
        class CFunctionType(_CFuncPtr):
            _argtypes_ = argtypes
            _restype_ = restype
            _flags_ = flags
        _c_functype_cache[(restype, argtypes, flags)] = CFunctionType
        return CFunctionType
def CFUNCTYPE ( restype , * argtypes , * * kw ) : flags = _FUNCFLAG_CDECL if kw . pop ( "use_errno" , False ) : flags |= _FUNCFLAG_USE_ERRNO if kw . pop ( "use_last_error" , False ) : flags |= _FUNCFLAG_USE_LASTERROR if kw : raise ValueError ( "unexpected keyword argument(s) %s" % kw . keys ( ) ) try : return _c_functype_cache [ ( restype , argtypes , flags ) ] except KeyError : class CFunctionType ( _CFuncPtr ) : _argtypes_ = argtypes _restype_ = restype _flags_ = flags _c_functype_cache [ ( restype , argtypes , flags ) ] = CFunctionType return CFunctionType