
    Xf              
           d dl mZmZ d dlmZmZmZ 	 ddddee         ded	ej        j	        fd
Z
ddddedefdZdej        j	        dedeeej        j        f         dej        j        d	ej        j	        f
dZdS )    )OptionalUnion)
interfacesobjects	constantsNreplacearrayzobjects.Arraycounterrorsreturnc                     || j         j        }t          | t          j                  st          d          |                     d||          S )z<Takes a volatility Array of characters and returns a string.Nz&Array_to_string takes an Array of charstring
max_lengthr   )volr
   
isinstancer   Array	TypeErrorcast)r	   r
   r   s      W/home/panchajanya/Development/work/volatility3/volatility3/framework/objects/utility.pyarray_to_stringr   
   sN    
 }	eW]++ B@AAA::h5:@@@    pointerzobjects.Pointerc                     t          | t          j                  st          d          |dk     rt	          d          |                                 }|                    d||          S )z>Takes a volatility Pointer to characters and returns a string.z!pointer_to_string takes a Pointer   z+pointer_to_string requires a positive countr   r   )r   r   Pointerr   
ValueErrordereferencer   )r   r
   r   chars       r   pointer_to_stringr       sf    gw// =;<<<qyyFGGG  D99X%9???r   subtypecontextc                    | j         j                            t          j                  d         }t          |t                    r||j                            |          }t          |t          j
        j                  r|t          d          |j                            |t          j        z   dz                                             }|                    |           |                     d||          S )zCTakes an object, and recasts it as an array of pointers to subtype.r   NzGSubtype must be a valid template (or string name of an object template)r   )r!   r	   )r
   r!   )r   	type_namesplitr   BANGr   strsymbol_spaceget_typer   r   Templater   clone
update_volr   )r	   r
   r!   r"   symbol_tablesubtype_pointers         r   array_of_pointersr/   !   s     9&,,Y^<<Q?L'3 9G$7&//88gz1:;; 
wU
 
 	
 *33y~%	1 egg  w///::gUO:DDDr   )Nr   )r   )typingr   r   volatility3.frameworkr   r   r   intr'   ObjectInterfacer   r    r*   r"   ContextInterfacer/    r   r   <module>r6      s@  
 # " " " " " " " @ @ @ @ @ @ @ @ @ @ HQ
A 
A
A#+C=
AAD
A'
A 
A 
A 
A@ @0 @ @c @ @ @ @E-EE 3
*334E 0	E
 'E E E E E Er   