B
    0ӛY&                 @   s&   d dl Z ddlmZ G dd dZdS )    N   )xrangec               @   sL   e Zd ZdZdZdZdZdZdZdd Z	d	d
 Z
dd Zdd Zdd ZdS )XlsDoci   i   c             C   s:   g | _ d| _g | _d| _g | _d| _d| _g | _d| _d S )N )	book_stream_sect
dir_streamdir_stream_sect
packed_SATSAT_sectpacked_MSAT_1stpacked_MSAT_2ndMSAT_sect_2ndheader)self r   /lib/python3.7/site-packages/xlwt/CompoundDoc.py__init__   s    zXlsDoc.__init__c             C   sr  d| _ dd}t|}dd|  }d}d}d}d}d}d	}	d
}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
7  _ dd}t|}dd|  }d}d}d}d}d}d
}	| j}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
7  _ d}t|}dd|  }d
}d}d}d}d}d	}	d
}
|  j td|| ||||||d
d
d
d
d
d
d
d
d
|	|
d
d 7  _ d S )N    zRoot Entry z	utf-16-le    @      r   r   r   r   z<64s H 2B 3l 9L l L Lz	Workbook    )r   encodelenstructpackbook_stream_len)r   Zdentry_nameZdentry_name_szZdentry_name_padZdentry_typeZdentry_colourZdentry_did_leftZdentry_did_rightZdentry_did_rootZdentry_start_sidZdentry_stream_szr   r   r   _build_directory,   s    



zXlsDoc._build_directoryc             C   s  | j d? }t| jd? }|| }d}d}d}xH|d| ksB||krt|d7 }|d7 }||kr.|d7 }|d7 }|d7 }q.W | jgd | }d}x0||d k r| j| |d ||< |d7 }qW | j| | j||< |d7 }x0||| k r
| j| | j||< |d7 }qW x6||| | k rB| j	| | j
||< |d7 }qW x@||| | | d k r| j| |d ||< |d7 }qFW | j| | j||< |d7 }tjd|d  f| | _| jgd }	x(ttdd| j	D ]\}
}||	|
< qW tjd
|	 | _| jgd | }|dkr(| j|d	< d}
d}d}xh|
|k r|d d dkrz|d7 }|t| jk r| j| ||< n| j	|
 ||< |
d7 }
|d7 }q6W tjd|d  f| | _d S )N	   r   m      r      z<%dl<109lr   )r&   )r    r   r   SID_FREE_SECTORr
   appendSID_END_OF_CHAINr   SID_USED_BY_MSATr   SID_USED_BY_SATr   r   r   r   zipranger   r   )r   Zbook_sect_countZdir_sect_countZtotal_sect_countZSAT_sect_countZMSAT_sect_countZSAT_sect_count_limitZSATZsectZMSAT_1stiZSAT_sect_numZMSAT_2ndZ	msat_sectZsid_numr   r   r   
_build_sat{   sr    






zXlsDoc._build_satc             C   s   d}d}d}d}d}t dd}t dd}d	}t d
t| j}	t d| jd }
d}t d
d}t dd}t d
d}t| jdkrt dd}nt d| jd }t d
t| j}d|||||||||	|
||||||g| _d S )Ns   ࡱs                   s   > s    s   z<Hr"      s
             z<Lz<lr   s       i   r   r   )r   r   r   r   r   r   joinr   )r   Z	doc_magicZfile_uidZrev_numZver_numZ
byte_orderZlog_sect_sizeZlog_short_sect_sizeZ	not_used0Ztotal_sat_sectorsZdir_start_sidZ	not_used1Zmin_stream_sizeZssat_start_sidZtotal_ssat_sectorsZmsat_start_sidZtotal_msat_sectorsr   r   r   _build_header   sD    zXlsDoc._build_headerc       	   
   C   s"  ddt |d   }t |t | | _|   |   |   |}t|d }|r\t|d}|| j || j	 y|| W n^ t
k
r } z@|jdkr d}x*tdt ||D ]}|t||| qW W d d }~X Y nX || || j || j || j |r|  d S )Nr   i   writezw+b   i  @ r   )r   r    r!   r/   r2   hasattropenr3   r   r   IOErrorerrnor   bufferr   r   r   close)	r   Zfile_name_or_filelike_objstreamZpaddingfZ	we_own_iteZ
chunk_sizeoffsetr   r   r   save   s2    

(
zXlsDoc.saveN)__name__
__module____qualname__ZSECTOR_SIZEZ	MIN_LIMITr'   r)   r+   r*   r   r!   r/   r2   r?   r   r   r   r   r      s   OU*r   )r   compatr   r   r   r   r   r   <module>   s   