
    "f
                         d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddddZdddZddddZ G d dee          Z G d de          ZdS ),Float to bytes and bytes to float transform.    )Real)Struct)ListOptionalTuple   )getbytes)Record)InsufficientMemoryError)	Transform)
NumberViewefd         ><)biglittlez
half floatzsingle floatzdouble floatc                       e Zd ZdZd ZdS )	FloatViewzFloat type view.c                 *    t          j        |           S N)r   unpackselfs    N/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/plum/float.py	__float__zFloatView.__float__   s     &&&    N)__name__
__module____qualname____doc__r"    r#   r!   r   r      s)        ' ' ' ' 'r#   r   c                        e Zd ZdZ	 	 ddededee         ddf fdZedefd	            Z		 dd
e
dee         dee         ddfdZ	 ddededee         dee
ef         fdZddededefdZ xZS )FloatXr   r   Nnbytes	byteordernamereturnc                 $   |dv sJ |dv sJ |t           |         }t                                          |d           || _        t	          t
          |         t          |         z             }|| _        |j        | _	        ||j
        f| _        d S )Nr   >   r   r   float)hint)DEFAULT_NAMESsuper__init__
__nbytes__r   ENDIAN_CODESFORMAT_CODES__byteorder__pack__p__r   __nu__)r    r+   r,   r-   struct	__class__s        r!   r4   zFloatX.__init__"   s     """"-----< (DG,,, Y/,v2FFGG&[
fm+r#   c                     | j         S )zByte order ("little" or "big").)r8   r   s    r!   r,   zFloatX.byteorder8   s     !!r#   valuepiecesdumpc                     |*|                     |                     |                     d S ||_        |                     |          }||_        |                     |           d S r   )appendr:   r?   memory)r    r?   r@   rA   pieces        r!   __pack__zFloatX.__pack__=   sd     <MM$**U++,,,,,DJJJu%%EDKMM%     r#   bufferoffsetc                     | j         \  }}|B||z   }t          |          |k     rt          d           ||||                   d         |fS t          ||||          \  }} ||          d         x}|_        ||fS )Nztoo few bytes to unpackr   )r;   lenr   r
   r?   )	r    rG   rH   rA   r+   r   endchunkr?   s	            r!   
__unpack__zFloatX.__unpack__K   s     <6/C6{{S  -.GHHH6&,--a0#55 v>>v#VE]]1--
f}r#   r   c                 $    t          | ||          S )z%Create view of float in bytes buffer.)r   )r    rG   rH   s      r!   __view__zFloatX.__view__^   s    vv...r#   )r   Nr   )r   )r$   r%   r&   r'   intstrr   r4   propertyr,   r0   r   bytesr   rF   r   rM   	bytearrayr   rO   __classcell__)r=   s   @r!   r*   r*      sf       66
 ""	, ,, , sm	,
 
, , , , , ,, "3 " " " X"
 KO! !!$(K!7?7G!	! ! ! ! DH %(080@	ucz	   &/ /y /# /i / / / / / / / /r#   r*   N)r'   numbersr   r<   r   typingr   r   r   	_getbytesr
   rA   r   
exceptionsr   	transformr   viewr   r7   r6   r2   r   r*   r(   r#   r!   <module>r\      s@   3 2             ( ( ( ( ( ( ( ( ( (             / / / / / /                   33''c** ^GG' ' ' ' '
D ' ' 'B/ B/ B/ B/ B/Y B/ B/ B/ B/ B/r#   