B
    bC                 @   s   d Z ddddgZddlZddlmZ ejjjZg e_eje_	ej
ZG dd	 d	ejZejjjZejeeejge_eje_	d
d ZdddZdddZdddZedkrddlZee  dS )z/Logic to replicate parts of pywin32 SCons uses.get_current_processget_memory_infoget_memory_usageget_peak_memory_usage    N)wintypesc               @   sV   e Zd Zdejfdejfdefdefdefdefdefdefd	efd
efdefgZdS )PROCESS_MEMORY_COUNTERS_EXcbZPageFaultCountPeakWorkingSetSizeZWorkingSetSizeZQuotaPeakPagedPoolUsageZQuotaPagedPoolUsageZQuotaPeakNonPagedPoolUsageZQuotaNonPagedPoolUsageZPagefileUsageZPeakPagefileUsagePrivateUsageN)__name__
__module____qualname__r   DWORDSIZE_T_fields_ r   r   1lib/python3.7/site-packages/SCons/compat/win32.pyr   *   s   r   c               C   s   t  S )z!Return handle to current process.)GetCurrentProcessr   r   r   r   r   C   s    c                sT   | dkrt  } t  t| t t }|s8t t fdd jD }|S )z9Return Win32 process memory counters structure as a dict.Nc             3   s    | ]\}}|t  |fV  qd S )N)getattr).0name_)countersr   r   	<genexpr>Q   s   z"get_memory_info.<locals>.<genexpr>)	r   r   GetProcessMemoryInfoctypesZbyrefZsizeofZWinErrordictr   )processZretinfor   )r   r   r   H   s    c             C   s   t | d}|d S )z,Return this process's memory usage in bytes.)r   r
   )r   )r   r   r   r   r   r   V   s    
c             C   s   t | d}|d S )z,Return this process's memory usage in bytes.)r   r	   )r   )r   r   r   r   r   r   \   s    
__main__)N)N)N)__doc____all__r   r   ZwindllZkernel32r   ZargtypesZHANDLEZrestypeZc_size_tr   Z	Structurer   Zpsapir   ZPOINTERr   ZBOOLr   r   r   r   r   Zpprintr   r   r   r   <module>   s(   





