o
    tbO                     @  sn   d dl mZ ddlmZmZmZmZmZmZ d dl	Z
e
jr+ddlmZ ddlmZmZ G dd dee ZdS )	    )annotations   )ObjectHolderMesonOperatortyped_pos_argsnoKwargs	noPosargsInvalidArgumentsN)Interpreter)TYPE_varTYPE_kwargsc                      sX   e Zd Zd fddZdd
dZeedddZeede	e	gddddZ
  ZS )BooleanHolderobjboolinterpreter'Interpreter'returnNonec                   s|   t  ||  j j jd  jtjd  fddftj	d  fddftj
t fddftjt fddfi d S )N)Zto_intZ	to_stringc                   s    j S Nheld_objectxself home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/interpreter/primitives/boolean.py<lambda>   s    z(BooleanHolder.__init__.<locals>.<lambda>c                   s    j  S r   r   r   r   r   r   r       s    c                   s
    j | kS r   r   r   r   r   r   r   !      
 c                   s
    j | kS r   r   r   r   r   r   r   "   r   )super__init__methodsupdateto_int_methodto_string_methodZtrivial_operatorsr   ZBOOLNOTZEQUALSr   Z
NOT_EQUALS)r   r   r   	__class__r   r   r       s   
zBooleanHolder.__init__strc                 C  s   dS )Nr   r   r   r   r   r   display_name%   s   zBooleanHolder.display_nameargsT.List[TYPE_var]kwargsr   intc                 C  s   | j rdS dS )N   r   r   )r   r*   r,   r   r   r   r#   (   s   zBooleanHolder.to_int_methodzbool.to_string)Zoptargs)T.Tuple[T.Optional[str], T.Optional[str]]c                 C  sR   |d pd}|d pd}t dd |D r"tdd |D s"td| jr'|S |S )Nr   truer.   falsec                 s  s    | ]}|d uV  qd S r   r   ).0r   r   r   r   	<genexpr>2   s    z1BooleanHolder.to_string_method.<locals>.<genexpr>zbool.to_string() must have either no arguments or exactly two string arguments that signify what values to return for true and false.)anyallr	   r   )r   r*   r,   Ztrue_strZ	false_strr   r   r   r$   -   s
   $zBooleanHolder.to_string_method)r   r   r   r   r   r   )r   r(   )r*   r+   r,   r   r   r-   )r*   r/   r,   r   r   r(   )__name__
__module____qualname__r    r)   r   r   r#   r   r(   r$   __classcell__r   r   r&   r   r      s    
r   )
__future__r   Zinterpreterbaser   r   r   r   r   r	   typingTTYPE_CHECKINGr   r
   r   r   r   r   r   r   r   r   <module>   s    
