o
    h%                     @   s  d Z ddlZddlmZ G dd dejZG dd dejZeG dd	 d	ZG d
d dejZeddG dd dZ	eddG dd dZ
eG dd dZeG dd dZeddG dd dZeddG dd dZG dd dejZG dd dejZeG dd dZdS ) zJThis module provides simple types for representing various URCL constructs    N)	dataclassc                   @   s*  e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEeGfdFdGZHdHS )IMnemonicaddrshlodstrbgenorsubjmpmovnopimmlshincdecnegandornotxnorxornandbrlbrgbrebnebodbevblebrzbnzbrnbrppshpopcalrethltcpybrcmltdivmodbsrbslsrsbsssetesetnesetgsetlsetgesetlesetcsetncllodlstrsdivsbrlsbrgssetlssetgssetlessetgeabsumltinoutdwreturnc                 C      | j S Nvalueself rO   4/home/seanl/mnt/public/Repos/urclelf/./urcl/types.py__str__K      zMnemonic.__str__N)I__name__
__module____qualname__ADDRSHLODSTRBGENORSUBJMPMOVNOPIMMLSHINCDECNEGANDORNOTXNORXORNANDBRLBRGBREBNEBODBEVBLEBRZBNZBRNBRPPSHPOPCALRETHLTCPYBRCMLTDIVMODBSRBSLSRSBSSSETESETNESETGSETLSETGESETLESETCSETNCLLODLSTRSDIVSBRLSBRGSSETLSSETGSSETLESSETGEABSUMLTINOUTDWr   rQ   rO   rO   rO   rP   r      s    r   c                   @   sH   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdS )DefinedImmediateBITSMINREGMINHEAPMINSTACKHEAPMSBSMSBMAXSMAXUHALFLHALFLEFTRIGHTUPDOWNN)rS   rT   rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   rO   rO   rP   r   N   s     r   c                   @   s   e Zd ZU eed< eed< dS )PortTypeidnameN)rS   rT   rU   int__annotations__r   rO   rO   rO   rP   r   _   s   
 r   c                   @   s   e Zd ZeddZeddZeddZeddZed	d
ZeddZ	eddZ
eddZeddZeddZedddZdefddZdS )Port   text   numb   x	   y
   color   buffer(   rng,   waitA   gamepadB   gamepad_inforL   	int | strc                 C   sJ   t D ] }t|tr|jj | kr|  S q|jj|kr"|  S qd S rJ   )r   
isinstancer   rL   r   lowerr   )clsrL   portrO   rO   rP   
from_valuep   s   
zPort.from_valuerH   c                 C   s   d| j j S )N%)rL   r   rM   rO   rO   rP   rQ   {      zPort.__str__N)rL   r   )rS   rT   rU   r   TEXTNUMBXYCOLORBUFFERRNGWAITGAMEPADGAMEPAD_INFOclassmethodr   r   rQ   rO   rO   rO   rP   r   d   s    










r   T)unsafe_hashc                   @   $   e Zd ZU eed< defddZdS )Labelr   rH   c                 C   rI   rJ   )r   rM   rO   rO   rP   rQ      rR   zLabel.__str__NrS   rT   rU   r   r   rQ   rO   rO   rO   rP   r   ~      
 r   c                   @   $   e Zd ZU eed< defddZdS )GeneralRegisterindexrH   c                 C      d| j  S )N$)r   rM   rO   rO   rP   rQ         zGeneralRegister.__str__NrS   rT   rU   r   r   r   rQ   rO   rO   rO   rP   r      r   r   c                   @   r   )RelativeAddressoffsetrH   c                 C   r   )N~)r   rM   rO   rO   rP   rQ      r   zRelativeAddress.__str__Nr   rO   rO   rO   rP   r      r   r   c                   @   r   )	CharactercharrH   c                 C   s   d| j  dS )N')r   rM   rO   rO   rP   rQ      r   zCharacter.__str__Nr   rO   rO   rO   rP   r      r   r   c                   @      e Zd ZdefddZdS )BasePointerrH   c                 C      dS )NbprO   rM   rO   rO   rP   rQ         zBasePointer.__str__NrS   rT   rU   r   rQ   rO   rO   rO   rP   r          r   c                   @   r   )StackPointerrH   c                 C   r   )NsprO   rM   rO   rO   rP   rQ      r   zStackPointer.__str__Nr   rO   rO   rO   rP   r      r   r   c                   @   sB   e Zd Ze Ze Ze Ze Ze Z	de
fddZdS )
HeaderTyperH   c                 C   s
   | j  S rJ   )r   upperrM   rO   rO   rP   rQ      s   
zHeaderType.__str__N)rS   rT   rU   enumautor   r   r   RUNr   r   rQ   rO   rO   rO   rP   r      s    r   c                   @   s&   e Zd ZdZdZdZdefddZdS )HeaderInequalityTypez<=z==z>=rH   c                 C   rI   rJ   rK   rM   rO   rO   rP   rQ      rR   zHeaderInequalityType.__str__N)rS   rT   rU   
LESS_EQUALEQUALGREATER_EQUALr   rQ   rO   rO   rO   rP   r      s
    r   c                   @   s4   e Zd ZU eed< eed< eed< defddZdS )Headertypeinequality_typerL   rH   c                 C   sB   t | jg}| jtjkr|t | j |t | j d|S )N )r   r   r   r   r   appendrL   join)rN   wordsrO   rO   rP   rQ      s
   
zHeader.__str__N)	rS   rT   rU   r   r   r   r   r   rQ   rO   rO   rO   rP   r      s
   
 r   )__doc__r   dataclassesr   Enumr   r   r   r   r   r   r   r   r   r   r   r   r   rO   rO   rO   rP   <module>   s0    I	