
    #|gh                        d Z ddlZddlmZ  G d dej                  Z G d dej                  Ze G d d	                      Z G d
 dej                  Z ed           G d d                      Z	 ed           G d d                      Z
 ed           G d d                      Ze G d d                      Ze G d d                      Z ed           G d d                      Z ed           G d d                      Z G d dej                  Z G d dej                  ZdS ) zJThis module provides simple types for representing various URCL constructs    N)	dataclassc                   *   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dFZHdGS )H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                     | j         S Nvalueselfs    L/media/seanl/Data/Files/Programming/Python/URCL/urclelf/urcl/./primitives.py__str__zMnemonic.__str__K   
    z    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	   rR    rT   rQ   r   r      s       
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C	B
CD
CD
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
CDEDDEEDEDDDDDEEFF
CD	B
C	B      rT   r   c                   J    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)rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rT   rQ   r   r   N   sY        DFGHD
CD
CDEEDE	BDDDrT   r   c                   $    e Zd ZU eed<   eed<   dS )PortTypeidnameN)rU   rV   rW   int__annotations__r	   r   rT   rQ   r   r   _   s"         GGG
IIIIIrT   r   c                      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          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,          Z ed-d.          Z ed/d0          Z ed1d2          Z ed3d4          Z ed5d6          Z ed7d8          Z ed9d:          Z  ed;d<          Z! ed=d>          Z" ed?d@          Z# edAdB          Z$ edCdD          Z% edEdF          Z& edGdH          Z' edIdJ          Z( edKdL          Z) edMdN          Z* edOdP          Z+ edQdR          Z, edSdT          Z- edUdV          Z. edWdX          Z/ edYdZ          Z0 ed[d\          Z1 ed]d^          Z2e3d_e4e5z  fd`            Z6dae5fdbZ7dcS )dPortr   CPUBUS   TEXT   NUMB   	SUPPORTED   SPECIAL   PROFILE   X	   Y
   COLOR   BUFFER   FREEZE   UNFREEZE   CLEAR   GSPECIAL   ASCII8   CHAR5   CHAR6   ASCII7   UTF8   TSPECIAL   INT   UINT   BIN   HEX   FLOAT   FIXED   	N_SPECIAL    ADDR!   BUS'   SSPECIAL(   RNG)   NOTE*   INSTR+   NLEG,   WAIT-   NADDR.   DATA/   MSPECIALA   GAMEPADB   GAMEPAD_INFOC   KEYD   MOUSE_XE   MOUSE_YF   MOUSE_DXG   MOUSE_DYH   MOUSE_DWHEELI   MOUSE_BUTTONSrN   c                     t           D ]d}t          |t                    r9|j        j                                        |                                k    r|c S P|j        j        |k    r|c S ed S rL   )r   
isinstancer	   rN   r   upperr   )clsrN   ports      rQ   
from_valuezPort.from_value   s      	  	 D%%%  :?((**ekkmm;;KKK < :=E))KKK *	  	 rT   rJ   c                      d| j         j         S )N%)rN   r   rO   s    rQ   rR   zPort.__str__   s    $4:?$$$rT   N)8rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  classmethodr   r	   r  rR   r   rT   rQ   r   r   d   sw       Xa""F8AvD8AvDK((Ihq)$$Ghq)$$GCACAHR!!EXb(##FXb(##FxJ''HHR!!ExJ''HXb(##FHR!!EHR!!EXb(##F8BDxJ''H
(2u

C8BD
(2u

C
(2u

CHR!!EHR!!E[))I8BD
(2u

CxJ''H
(2u

C8BDHR!!E8BD8BDHR!!E8BDxJ''Hhr9%%G8B//L
(2u

Chr9%%Ghr9%%GxJ''HxJ''H8B//LHR11M sSy       [ % % % % % % %rT   r   T)unsafe_hashc                   &    e Zd ZU eed<   defdZdS )Labelr   rJ   c                     d| j          S )N.)r   rO   s    rQ   rR   zLabel.__str__   s    49rT   NrU   rV   rW   r	   r   rR   r   rT   rQ   r  r     s:         
III      rT   r  c                   &    e Zd ZU eed<   defdZdS )GeneralRegisterindexrJ   c                     d| j          S )N$r$  rO   s    rQ   rR   zGeneralRegister.__str__       4:rT   NrU   rV   rW   r   r   r	   rR   r   rT   rQ   r#  r#     :         JJJ             rT   r#  c                   &    e Zd ZU eed<   defdZdS )HeapAddressr$  rJ   c                     d| j          S )N#r'  rO   s    rQ   rR   zHeapAddress.__str__   r(  rT   Nr)  r   rT   rQ   r,  r,     r*  rT   r,  c                   &    e Zd ZU eed<   defdZdS )RelativeAddressoffsetrJ   c                     d| j          S )N~)r1  rO   s    rQ   rR   zRelativeAddress.__str__   s     4;   rT   Nr)  r   rT   rQ   r0  r0     s:         KKK! ! ! ! ! ! !rT   r0  c                   &    e Zd ZU eed<   defdZdS )	CharactercharrJ   c                     d| j          dS )N')r6  rO   s    rQ   rR   zCharacter.__str__   s    49rT   Nr!  r   rT   rQ   r5  r5     s:         
III             rT   r5  c                       e Zd ZdefdZdS )BasePointerrJ   c                     dS )NBPr   rO   s    rQ   rR   zBasePointer.__str__       trT   NrU   rV   rW   r	   rR   r   rT   rQ   r:  r:     /              rT   r:  c                       e Zd ZdefdZdS )StackPointerrJ   c                     dS )NSPr   rO   s    rQ   rR   zStackPointer.__str__   r=  rT   Nr>  r   rT   rQ   rA  rA     r?  rT   rA  c                       e Zd Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z	de
fdZdS )
HeaderTyperJ   c                 4    | j                                         S rL   )r   r  rO   s    rQ   rR   zHeaderType.__str__   s    y   rT   N)rU   rV   rW   enumautor   r   r   RUNr   r	   rR   r   rT   rQ   rE  rE     sp        49;;DTY[[FdikkG
$)++Cty{{H! ! ! ! ! ! !rT   rE  c                   &    e Zd ZdZdZdZdefdZdS )HeaderInequalityTypez<=z==z>=rJ   c                     | j         S rL   rM   rO   s    rQ   rR   zHeaderInequalityType.__str__   rS   rT   N)rU   rV   rW   
LESS_EQUALEQUALGREATER_EQUALr	   rR   r   rT   rQ   rK  rK     s>        JEM      rT   rK  )__doc__rG  dataclassesr   Enumr   r   r   r   r  r#  r,  r0  r5  r:  rA  rE  rK  r   rT   rQ   <module>rS     s   L L  ! ! ! ! ! !G G G G Gty G G GR    ty   "        =% =% =% =% =%49 =% =% =%~ t       
 t               
 t               
 ! ! ! ! ! ! ! !
                
 t        t       ! ! ! ! ! ! ! !    49     rT   