U
    Ôðccõ  ã                   @   s®   d dl Z e jdkst‚d dlmZ ddlmZ es>d dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d d	lmZ d
dgZdZdZefee eee dœdd
„Zedœdd„ZdS )é    NÚwin32)Úpointeré   )ÚSPHINX_AUTODOC_RUNNING)Úwindll)ÚBOOLÚDWORDÚHANDLE)ÚListÚOptional)ÚSECURITY_ATTRIBUTESÚwait_for_handlesÚcreate_win32_eventi  éÿÿÿÿ)ÚhandlesÚtimeoutÚreturnc                 C   sJ   t t| ƒ }|| Ž }tj t|ƒ|tdƒt|ƒ¡}|tkr>dS | | S dS )a˜  
    Waits for multiple handles. (Similar to 'select') Returns the handle which is ready.
    Returns `None` on timeout.
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx

    Note that handles should be a list of `HANDLE` objects, not integers. See
    this comment in the patch by @quark-zju for the reason why:

        ''' Make sure HANDLE on Windows has a correct size

        Previously, the type of various HANDLEs are native Python integer
        types. The ctypes library will treat them as 4-byte integer when used
        in function arguments. On 64-bit Windows, HANDLE is 8-byte and usually
        a small integer. Depending on whether the extra 4 bytes are zero-ed out
        or not, things can happen to work, or break. '''

    This function returns either `None` or one of the given `HANDLE` objects.
    (The return value can be tested with the `is` operator.)
    FN)r	   Úlenr   Úkernel32ZWaitForMultipleObjectsr   r   ÚWAIT_TIMEOUT)r   r   ZarrtypeZhandle_arrayÚret© r   úX/var/www/html/project/venv/lib/python3.8/site-packages/prompt_toolkit/eventloop/win32.pyr      s       ÿ)r   c                   C   s$   t tj ttƒ ƒtdƒtdƒd¡ƒS )z|
    Creates a Win32 unnamed Event .
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms682396(v=vs.85).aspx
    TFN)r	   r   r   ZCreateEventAr   r   r   r   r   r   r   r   =   s    üÿ)ÚsysÚplatformÚAssertionErrorÚctypesr   Úutilsr   r   Zctypes.wintypesr   r   r	   Útypingr
   r   Zprompt_toolkit.win32_typesr   Ú__all__r   ZINFINITEÚintr   r   r   r   r   r   Ú<module>   s$   ÿ þ#