a
    I_
                     @   sZ   d Z dd ZdddZdd Zddd	Zdd
dZdd ZdddZdddZdd Z	dS )z@Network Data Representation (NDR) marshalling and unmarshalling.c                 C   s&   t | dd}|du r td|  | S )zmPack a NDR object.

    :param object: Object to pack
    :return: String object with marshalled object.
    Z__ndr_pack__N%r is not a NDR objectgetattr	TypeError)objectndr_pack r   +/usr/lib/python3/dist-packages/samba/ndr.pyr      s    r   Fc                 C   s6   |  }t |dd}|du r&td| |||d |S )zNDR unpack an object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    Z__ndr_unpack__Nr   )allow_remainingr   )clsdatar	   r   
ndr_unpackr   r   r   r   $   s    r   c                 C   s&   t | dd }|d u r td|  | S )NZ__ndr_print__r   r   )r   	ndr_printr   r   r   r   4   s    r   c                 C   s,   t | dd}|du r td|  |||dS )zPack the input of an NDR function object.

    :param object: Object to pack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :return: String object with marshalled object.
    Z__ndr_pack_in__N%r is not a NDR function object	bigendianndr64r   )r   r   r   Zndr_pack_in_fnr   r   r   ndr_pack_in;   s    r   c                 C   s4   t | dd}|du r td|  |||||d | S )ac  Unpack the input of an NDR function object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    Z__ndr_unpack_in__Nr   r   r   r	   r   )r   r   r   r   r	   Zndr_unpack_in_fnr   r   r   ndr_unpack_inI   s    
r   c                 C   s&   t | dd }|d u r td|  | S )NZ__ndr_print_in__r   r   )r   Zndr_print_in_fnr   r   r   ndr_print_in[   s    r   c                 C   s,   t | dd}|du r td|  |||dS )zPack the output of an NDR function object.

    :param object: Object to pack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :return: String object with marshalled object.
    Z__ndr_pack_out__Nr   r   r   )r   r   r   Zndr_pack_out_fnr   r   r   ndr_pack_outb   s    r   c                 C   s4   t | dd}|du r td|  |||||d | S )ad  Unpack the output of an NDR function object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    Z__ndr_unpack_out__Nr   r   r   )r   r   r   r   r	   Zndr_unpack_out_fnr   r   r   ndr_unpack_outp   s    
r   c                 C   s&   t | dd }|d u r td|  | S )NZ__ndr_print_out__r   r   )r   Zndr_print_out_fnr   r   r   ndr_print_out   s    r   N)F)FF)FFF)FF)FFF)
__doc__r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   




