
    'j                         d dl mZmZ d dlZd dlmZ d dlmZ ddlT ddl	m
Z
 ddlmZ dd	lmZ ddedefdZ G d de          Z G d de          ZdS )    )IterableTupleN)	BitStream)DXFClass   )*)crc8)
FileHeader)DwgSectionLoaderFspecsdatac                 f    | j         t          k    rt          | ||          S t          | ||          S N)version	ACAD_2000DwgClassesSectionR2000DwgClassesSectionR2004)r   r   	crc_checks      Z/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/addons/dwg/classes_section.pyload_classes_sectionr      s3    }	!!%eT9===%eT9===    c                   F    e Zd ZdedefdZdeeeef                  fdZ	dS )r   r   returnc                     | j         j        t          k    rt          | j         j                  | j         j        t
                   \  }}||||z            S r   )r   r   r   DwgVersionErrorsections
CLASSES_ID)selfr   seekersection_sizes       r   load_data_sectionz(DwgClassesSectionR2000.load_data_section   sN    :	))!$*"4555#z2:>FVl2233r   c           	   #   &  K   | j         d t                   }|dk    rt          d          t          }t          | j         |d          | j        j        | j        j                  }|                                }t          dz   |z   }|dz
  }d|z   dz  }|j        |k     r|	                                }|	                                |
                                |
                                |
                                |                                t          |	                                dk              d}	|t          j        |		          fV  |j        |k     | j        r	 | j         ||t          z            }|dk    rt          d          d S )Ns   ĸĩ_϶z0Sentinel for start of CLASSES section not found.)
dxfversionencoding         i  )flagsapp_namecpp_class_namenamewas_a_proxyis_an_entity)
dxfattribsFz<Hr   zCRC error in classes section.s   r^;G;V:?#0Iuz.Sentinel for end of CLASSES section not found.)r   SENTINEL_SIZEDwgCorruptedClassesSectionr   r   r   r$   read_unsigned_long	bit_indexread_bit_short	read_textread_bitintr   newr   structunpack_fromr	   CRCError)r   sentinelstart_indexbsclass_data_sizeend_sentinel_index	end_indexend_bit_index	class_numr.   checkcrcs               r   load_classesz#DwgClassesSectionR2000.load_classes   s     9^m^,RS S -B   $Ikll#z)Z(
 
 

 //11*Q.@&*	_,2l]**))++I**,,LLNN"$,,..!{{}} #B$5$5$7$75$@ A A J X\Z@@@@@@@ l]** > 	@ 	@ 9!3m!CC
 RS S -@  S Sr   N)
__name__
__module____qualname__Bytesr!   r   r   r6   r   rE    r   r   r   r      s_        4e 4 4 4 4 40huS(]';< 0 0 0 0 0 0r   r   c                       e Zd ZdedefdZdS )r   r   r   c                     t                      r   )NotImplementedError)r   r   s     r   	load_dataz DwgClassesSectionR2004.load_dataQ   s    !###r   N)rF   rG   rH   rI   rN   rJ   r   r   r   r   P   s6        $e $ $ $ $ $ $ $r   r   )F)typingr   r   r8   ezdxf.tools.binarydatar   ezdxf.entitiesr   constrD   r	   
fileheaderr
   header_sectionr   rI   r   r   r   rJ   r   r   <module>rU      s   # " " " " " " "  , , , , , , # # # # # #           " " " " " " , , , , , ,> >
 >% > > > >7 7 7 7 7- 7 7 7t$ $ $ $ $3 $ $ $ $ $r   