@@ -125,6 +125,9 @@ def size(self):
125125    def  read_s1 (self ):
126126        return  KaitaiStream .packer_s1 .unpack (self .read_bytes (1 ))[0 ]
127127
128+     def  write_s1 (self , data ):
129+         return  self .write_bytes (KaitaiStream .packer_s1 .pack (data ))
130+ 
128131    # ........................................................................ 
129132    # Big-endian 
130133    # ........................................................................ 
@@ -138,6 +141,15 @@ def read_s4be(self):
138141    def  read_s8be (self ):
139142        return  KaitaiStream .packer_s8be .unpack (self .read_bytes (8 ))[0 ]
140143
144+     def  write_s2be (self , data ):
145+         return  self .write_bytes (KaitaiStream .packer_s2be .pack (data ))
146+ 
147+     def  write_s4be (self , data ):
148+         return  self .write_bytes (KaitaiStream .packer_s4be .pack (data ))
149+ 
150+     def  write_s8be (self , data ):
151+         return  self .write_bytes (KaitaiStream .packer_s8be .pack (data ))
152+ 
141153    # ........................................................................ 
142154    # Little-endian 
143155    # ........................................................................ 
@@ -151,13 +163,25 @@ def read_s4le(self):
151163    def  read_s8le (self ):
152164        return  KaitaiStream .packer_s8le .unpack (self .read_bytes (8 ))[0 ]
153165
166+     def  write_s2le (self , data ):
167+         return  self .write_bytes (KaitaiStream .packer_s2le .pack (data ))
168+ 
169+     def  write_s4le (self , data ):
170+         return  self .write_bytes (KaitaiStream .packer_s4le .pack (data ))
171+ 
172+     def  write_s8le (self , data ):
173+         return  self .write_bytes (KaitaiStream .packer_s8le .pack (data ))
174+ 
154175    # ------------------------------------------------------------------------ 
155176    # Unsigned 
156177    # ------------------------------------------------------------------------ 
157178
158179    def  read_u1 (self ):
159180        return  KaitaiStream .packer_u1 .unpack (self .read_bytes (1 ))[0 ]
160181
182+     def  write_u1 (self , data ):
183+         return  self .write_bytes (KaitaiStream .packer_u1 .pack (data ))
184+ 
161185    # ........................................................................ 
162186    # Big-endian 
163187    # ........................................................................ 
@@ -171,6 +195,15 @@ def read_u4be(self):
171195    def  read_u8be (self ):
172196        return  KaitaiStream .packer_u8be .unpack (self .read_bytes (8 ))[0 ]
173197
198+     def  write_u2be (self , data ):
199+         return  self .write_bytes (KaitaiStream .packer_u2be .pack (data ))
200+ 
201+     def  write_u4be (self , data ):
202+         return  self .write_bytes (KaitaiStream .packer_u4be .pack (data ))
203+ 
204+     def  write_u8be (self , data ):
205+         return  self .write_bytes (KaitaiStream .packer_u8be .pack (data ))
206+ 
174207    # ........................................................................ 
175208    # Little-endian 
176209    # ........................................................................ 
@@ -184,6 +217,15 @@ def read_u4le(self):
184217    def  read_u8le (self ):
185218        return  KaitaiStream .packer_u8le .unpack (self .read_bytes (8 ))[0 ]
186219
220+     def  write_u2le (self , data ):
221+         return  self .write_bytes (KaitaiStream .packer_u2le .pack (data ))
222+ 
223+     def  write_u4le (self , data ):
224+         return  self .write_bytes (KaitaiStream .packer_u4le .pack (data ))
225+ 
226+     def  write_u8le (self , data ):
227+         return  self .write_bytes (KaitaiStream .packer_u8le .pack (data ))
228+ 
187229    # ======================================================================== 
188230    # Floating point numbers 
189231    # ======================================================================== 
@@ -203,6 +245,12 @@ def read_f4be(self):
203245    def  read_f8be (self ):
204246        return  KaitaiStream .packer_f8be .unpack (self .read_bytes (8 ))[0 ]
205247
248+     def  write_f4be (self , data ):
249+         return  self .write_bytes (KaitaiStream .packer_f4be .pack (data ))
250+ 
251+     def  write_f8be (self , data ):
252+         return  self .write_bytes (KaitaiStream .packer_f8be .pack (data ))
253+ 
206254    # ........................................................................ 
207255    # Little-endian 
208256    # ........................................................................ 
@@ -213,6 +261,12 @@ def read_f4le(self):
213261    def  read_f8le (self ):
214262        return  KaitaiStream .packer_f8le .unpack (self .read_bytes (8 ))[0 ]
215263
264+     def  write_f4le (self , data ):
265+         return  self .write_bytes (KaitaiStream .packer_f4le .pack (data ))
266+ 
267+     def  write_f8le (self , data ):
268+         return  self .write_bytes (KaitaiStream .packer_f8le .pack (data ))
269+ 
216270    # ======================================================================== 
217271    # Unaligned bit values 
218272    # ======================================================================== 
@@ -293,6 +347,21 @@ def read_bytes(self, n):
293347            )
294348        return  r 
295349
350+     def  write_bytes (self , data , pad = 0 , padding = b'\0 ' ):
351+         if  data  is  None :
352+             return 
353+         nb  =  len (data )
354+         if  nb  ==  0  and  pad  <  1 :
355+             return 
356+         if  self ._io .write (data ) !=  nb :
357+             raise  Exception (
358+                 "not all of %d bytes written"  % 
359+                 (nb ,)
360+             )
361+         if  pad  >  0  and  padding  is  not   None :
362+             self ._io .write (padding  *  pad )
363+         return 
364+ 
296365    def  read_bytes_full (self ):
297366        return  self ._io .read ()
298367
@@ -317,6 +386,9 @@ def read_bytes_term(self, term, include_term, consume_term, eos_error):
317386            else :
318387                r  +=  c 
319388
389+     def  write_bytes_term (self , data , term = b'\0 ' ):
390+         self .write_bytes (data , pad = 1 , padding = term )
391+ 
320392    def  ensure_fixed_contents (self , expected ):
321393        actual  =  self ._io .read (len (expected ))
322394        if  actual  !=  expected :
@@ -327,7 +399,7 @@ def ensure_fixed_contents(self, expected):
327399        return  actual 
328400
329401    @staticmethod  
330-     def  bytes_strip_right (data , pad_byte ):
402+     def  bytes_strip_right (data , pad_byte = b' \0 '  ):
331403        new_len  =  len (data )
332404        if  PY2 :
333405            # data[...] must yield an integer, to compare with integer pad_byte 
0 commit comments