
    
`i                        d Z ddlmZ ddlZddlmZmZmZ  e            Ze	                    d            ej
        ed          ZdZdZdZdZdZd	Zd
 Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed          d                         Ze                    d           ed           d!                         Ze                    d           ed"          d#                         Ze                    d           ed$          d%                         Zeeej        ej        eeeeeeefZ eeeeej        eeeeeefZ!d,d'Z"d( Z# G d) d*          Z$ej%        d+             Z& ej'         e(                       dS )-z.
CFFI-Wrapper for YAJL C library version 2.x.
    )FFIN)commonbackendsutilsa  
typedef void * (*yajl_malloc_func)(void *ctx, size_t sz);
typedef void (*yajl_free_func)(void *ctx, void * ptr);
typedef void * (*yajl_realloc_func)(void *ctx, void * ptr, size_t sz);
typedef struct
{
    yajl_malloc_func malloc;
    yajl_realloc_func realloc;
    yajl_free_func free;
    void * ctx;
} yajl_alloc_funcs;
typedef struct yajl_handle_t * yajl_handle;
typedef enum {
    yajl_status_ok,
    yajl_status_client_canceled,
    yajl_status_error
} yajl_status;
typedef enum {
    yajl_allow_comments = 0x01,
    yajl_dont_validate_strings     = 0x02,
    yajl_allow_trailing_garbage = 0x04,
    yajl_allow_multiple_values = 0x08,
    yajl_allow_partial_values = 0x10
} yajl_option;
typedef struct {
    int (* yajl_null)(void * ctx);
    int (* yajl_boolean)(void * ctx, int boolVal);
    int (* yajl_integer)(void * ctx, long long integerVal);
    int (* yajl_double)(void * ctx, double doubleVal);
    int (* yajl_number)(void * ctx, const char * numberVal,
                        size_t numberLen);
    int (* yajl_string)(void * ctx, const unsigned char * stringVal,
                        size_t stringLen);
    int (* yajl_start_map)(void * ctx);
    int (* yajl_map_key)(void * ctx, const unsigned char * key,
                         size_t stringLen);
    int (* yajl_end_map)(void * ctx);
    int (* yajl_start_array)(void * ctx);
    int (* yajl_end_array)(void * ctx);
} yajl_callbacks;
int yajl_version(void);
yajl_handle yajl_alloc(const yajl_callbacks *callbacks, yajl_alloc_funcs *afs, void *ctx);
int yajl_config(yajl_handle h, yajl_option opt, ...);
yajl_status yajl_parse(yajl_handle hand, const unsigned char *jsonText, size_t jsonTextLength);
yajl_status yajl_complete_parse(yajl_handle hand);
unsigned char* yajl_get_error(yajl_handle hand, int verbose, const unsigned char *jsonText, size_t jsonTextLength);
void yajl_free_error(yajl_handle hand, unsigned char * str);
void yajl_free(yajl_handle handle);
            c                       fd}|S )Nc                 J     t          j                    fd            }|S )Nc                 f     |i |}t                               |           } ||f           dS )Nr   )ffifrom_handle)ctxargskwargsvaluesendeventfuncs        m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ijson/backends/yajl2_cffi.pywrappedz5append_event_to_ctx.<locals>.wrapper.<locals>.wrappedM   sA    D$)&))E??3''DD%   1    )	functoolswraps)r   r   r   s   ` r   wrapperz$append_event_to_ctx.<locals>.wrapperL   s>    				 	 	 	 	 
		
 r    )r   r   s   ` r   append_event_to_ctxr   K   s#         Nr   zint(void *ctx)nullc                      d S Nr   r   r   r   r   r   W   	     4r   zint(void *ctx, int val)booleanc                      t          |           S r!   )boolvals    r   r#   r#   ]   s     99r   z$int(void *ctx, long long integerVal)numberc                      t          |           S r!   )intr&   s    r   integerr+   c   s     s88Or   z!int(void * ctx, double doubleVal)c                     | S r!   r   r&   s    r   doubler-   i   s	     Jr   z7int(void *ctx, const char *numberVal, size_t numberLen)c                     t          j        t                              | |                              d                    S N)maxlenzutf-8)r   integer_or_decimalr   stringdecoder'   lengths     r   r(   r(   o   s3     $SZZFZ%C%C%J%J7%S%STTTr   z@int(void *ctx, const unsigned char *stringVal, size_t stringLen)r2   c                 `    t                               | |                              d          S r/   r   r2   r3   r4   s     r   r2   r2   u   (     ::c&:))00999r   	start_mapc                      d S r!   r   r   r   r   r9   r9   {   r"   r   z:int(void *ctx, const unsigned char *key, size_t stringLen)map_keyc                 `    t                               | |                              d          S r/   r7   )keyr5   s     r   r;   r;      r8   r   end_mapc                      d S r!   r   r   r   r   r>   r>      r"   r   start_arrayc                      d S r!   r   r   r   r   r@   r@      r"   r   	end_arrayc                      d S r!   r   r   r   r   rB   rB      r"   r   Fc                 .   t                               |          | _        |r&t                               dt                    | _        n%t                               dt                    | _        t                              | j        t           j	        | j                  }|r:t          
                    |t          t                               dd                     |r:t          
                    |t          t                               dd                     |S )Nzyajl_callbacks*r*   r   )r   
new_handler   new_float_callback_data	callbacks_decimal_callback_datayajl
yajl_allocNULLyajl_configYAJL_ALLOW_COMMENTScastYAJL_MULTIPLE_VALUES)scoper   allow_commentsmultiple_values	use_floathandles         r   	yajl_initrV      s    t$$EI M''"35IJJ''"35KLL__U_ch	BBF J!4chhua6H6HIII K!5sxxq7I7IJJJMr   c                    |r*t                               | |t          |                    }nt                               |           }|t          k    rt                               | d|t          |                    }t                              |          }	 |                    d          }n# t          $ r Y nw xY wt           
                    | |           |t          k    rt          j        nt          j        } ||          d S )Nr   utf8)rJ   
yajl_parselenyajl_complete_parseYAJL_OKyajl_get_errorr   r2   r3   UnicodeDecodeErroryajl_free_errorYAJL_INSUFFICIENT_DATAr   IncompleteJSONError	JSONError)rU   bufferresultperrorerror	exceptions         r   rY   rY      s     2V==))&11$$VQFDD

6""	LL((EE! 	 	 	D	VV,,,28<R2R2RF..X^Xh	i s   B- -
B:9B:c                       e Zd ZdS )	ContainerN)__name__
__module____qualname__r   r   r   ri   ri      s        Dr   ri   c              +     K   t                      }t          || j        fi |}	 	 	 dV }n# t          $ r d}Y nw xY wt	          ||           |sn,	 t
                              |           dS # t
                              |           w xY w)z
    Coroutine dispatching unprefixed events.

    Parameters:

    - allow_comments: tells parser to allow comments in JSON input
    - multiple_values: allows the parser to parse multiple JSON objects
    TNr   )ri   rV   r   GeneratorExitrY   rJ   	yajl_free)targetconfigrQ   rU   rc   s        r   basic_parse_basecororr      s       KKEufk44V44F
	%%    vv&&& 	 vvs&   A/ , A/ ;A/ ;A/ /B)FFF))__doc__cffir   r   ijsonr   r   r   r   cdeffind_yajl_cffirJ   r\   YAJL_CANCELLEDr`   
YAJL_ERRORrN   rP   r   callbackr   r#   r+   r-   r(   r2   r9   r;   r>   r@   rB   rL   rI   rG   rV   rY   ri   	coroutinerr   enrich_backendglobalsr   r   r   <module>r~      sL              ) ) ) ) ) ) ) ) ) ) 
cee  0
 0 0 0f xsA&&
 
   	 	 	 V     '((Y    )( 455X   65 122X   32 GHHXU U  IHU PQQX: :  RQ: [!!  "!   JKKY: :   LK: Y      ]##  $#   [!!  "!  
 	'38SXvvwi  	'7FCHfwi       $	 	 	 	 	 	 	 	   8  ggii          r   