
    i                     `    d dl Z d dlZd dlmZmZ  G d de          Z G d dee          ZdS )    N)
PickleableSlotsPickleablec                       e Zd ZdZg dZddZd ZdefdZe	de
j        edf         fd            Ze	de
j        edf         fd	            Ze	defd
            Ze	defd            Ze	defd            ZeZdS )
LayerFieldzdHolds all data about a field of a layer, both its actual value and its name and nice representation.)nameshowname	raw_valueshowhidepossizeunmaskedvalueNc	                     || _         || _        || _        || _        || _        || _        || _        |r|dk    r	d| _        d S d| _        d S )NyesTF)r   r   r	   r
   r   r   r   r   )	selfr   r   valuer
   r   r   r   r   s	            e/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/pyshark/packet/fields.py__init__zLayerField.__init__   sZ    	 		* 	DEMMDIIIDIII    c                 B    d| j          d|                                  dS )Nz<LayerField : >)r   get_default_valuer   s    r   __repr__zLayerField.__repr__   s)    FdiFF4+A+A+C+CFFFFr   returnc                 8    | j         }|s| j        }|s| j        }|S )z,Gets the best 'value' string this field has.)r
   r	   r   )r   vals     r   r   zLayerField.get_default_value   s,    i 	!.C 	 -C
r   c                 h    | j         r*d| j         v r!| j                             dd          d         S dS )z<The "pretty value" (as displayed by Wireshark) of the field.r      Nr   splitr   s    r   showname_valuezLayerField.showname_value(   <     = 	3TT]22=&&tQ//22tr   c                 h    | j         r*d| j         v r!| j                             dd          d         S dS )z;The "pretty name" (as displayed by Wireshark) of the field.r   r    r   Nr!   r   s    r   showname_keyzLayerField.showname_key/   r$   r   c                     t          | j                  }t          |          dz  dk    rd|z   }t          j        |          S )z=Converts this field to binary (assuming it's a binary string)   r    0)strr	   lenbinascii	unhexlify)r   str_raw_values     r   binary_valuezLayerField.binary_value6   sF     DN++}!Q&&-/M!-000r   c                 *    t          | j                  S )zUReturns the int value of this field (assuming it's represented as a decimal integer).intr	   r   s    r   	int_valuezLayerField.int_value?   s     4>"""r   c                 ,    t          | j        d          S )zReturns the int value of this field if it's in base 16

        (either as a normal number or in a "0xFFFF"-style hex value)
           r1   r   s    r   	hex_valuezLayerField.hex_valueD   s     4>2&&&r   )NNNNNNNN)__name__
__module____qualname____doc__	__slots__r   r   r*   r   propertytypingUnionr#   r&   bytesr/   r2   r3   r6   base16_value r   r   r   r      sC       nn baaI   G G G3     S$Y 7    X fl395    X 1e 1 1 1 X1 #3 # # # X# '3 ' ' ' X' LLLr   r   c                   l    e Zd ZdZd Zd Zd Zed             Zed             Z	ed             Z
d Zd	S )
LayerFieldsContainerzAn object which contains one or more fields (of the same name).

    When accessing member, such as showname, raw_value, etc. the appropriate member of the main (first) field saved
    in this container will be shown.
    c                     t          |d          r)t          j        | |                                g|R i |}nt          j        | |g|R i |}|g|_        |S )Nr   )hasattrr*   __new__r   fields)cls
main_fieldargskwargsobjs        r   rF   zLayerFieldsContainer.__new__V   st    :233 	@+c:#?#?#A#ASDSSSFSSCC+c:??????C \

r   c                     t          t          |                     t          | j                                                  z   t          | j                  z   S N)dirtypelist__dict__keysrI   r   s    r   __dir__zLayerFieldsContainer.__dir__^   s>    4::dm&8&8&:&:!;!;;c$/>R>RRRr   c                 :    | j                             |           d S rN   )rG   append)r   fields     r   	add_fieldzLayerFieldsContainer.add_fielda   s    5!!!!!r   c                     | j         S )zNReturns all fields in a list, the main field followed by the alternate fields.rG   r   s    r   
all_fieldszLayerFieldsContainer.all_fieldsd   s     {r   c                     | j         d         S )Nr   rZ   r   s    r   rI   zLayerFieldsContainer.main_fieldi   s    {1~r   c                      | j         dd         S )zEReturn the alternate values of this field containers (non-main ones).r    NrZ   r   s    r   alternate_fieldsz%LayerFieldsContainer.alternate_fieldsm   s     {122r   c                 ,    t          | j        |          S rN   )getattrrI   )r   items     r   __getattr__z LayerFieldsContainer.__getattr__r   s    t---r   N)r7   r8   r9   r:   rF   rT   rX   r<   r[   rI   r^   rb   rA   r   r   rC   rC   O   s           S S S" " "   X   X   X. . . . .r   rC   )r,   r=   pyshark.packet.commonr   r   r   r*   rC   rA   r   r   <module>rd      s      = = = = = = = =E E E E E E E EP$. $. $. $. $.3
 $. $. $. $. $.r   