@@ -118,6 +118,9 @@ def size(self):
118
118
packer_u4le = struct .Struct ('<I' )
119
119
packer_u8le = struct .Struct ('<Q' )
120
120
121
+ # ------------------------------------------------------------------------
122
+ # Reading
123
+ # ------------------------------------------------------------------------
121
124
# ------------------------------------------------------------------------
122
125
# Signed
123
126
# ------------------------------------------------------------------------
@@ -213,6 +216,95 @@ def read_f4le(self):
213
216
def read_f8le (self ):
214
217
return KaitaiStream .packer_f8le .unpack (self .read_bytes (8 ))[0 ]
215
218
219
+ # ------------------------------------------------------------------------
220
+ # Writing
221
+ # ------------------------------------------------------------------------
222
+ # ------------------------------------------------------------------------
223
+ # Signed
224
+ # ------------------------------------------------------------------------
225
+
226
+ def write_s1 (self , data ):
227
+ return self .write_bytes (KaitaiStream .packer_s1 .pack (data ))
228
+
229
+ # ........................................................................
230
+ # Big-endian
231
+ # ........................................................................
232
+
233
+ def write_s2be (self , data ):
234
+ return self .write_bytes (KaitaiStream .packer_s2be .pack (data ))
235
+
236
+ def write_s4be (self , data ):
237
+ return self .write_bytes (KaitaiStream .packer_s4be .pack (data ))
238
+
239
+ def write_s8be (self , data ):
240
+ return self .write_bytes (KaitaiStream .packer_s8be .pack (data ))
241
+
242
+ # ........................................................................
243
+ # Little-endian
244
+ # ........................................................................
245
+
246
+ def write_s2le (self , data ):
247
+ return self .write_bytes (KaitaiStream .packer_s2le .pack (data ))
248
+
249
+ def write_s4le (self , data ):
250
+ return self .write_bytes (KaitaiStream .packer_s4le .pack (data ))
251
+
252
+ def write_s8le (self , data ):
253
+ return self .write_bytes (KaitaiStream .packer_s8le .pack (data ))
254
+
255
+ # ------------------------------------------------------------------------
256
+ # Unsigned
257
+ # ------------------------------------------------------------------------
258
+
259
+ def write_u1 (self , data ):
260
+ return self .write_bytes (KaitaiStream .packer_u1 .pack (data ))
261
+
262
+ # ........................................................................
263
+ # Big-endian
264
+ # ........................................................................
265
+
266
+ def write_u2be (self , data ):
267
+ return self .write_bytes (KaitaiStream .packer_u2be .pack (data ))
268
+
269
+ def write_u4be (self , data ):
270
+ return self .write_bytes (KaitaiStream .packer_u4be .pack (data ))
271
+
272
+ def write_u8be (self , data ):
273
+ return self .write_bytes (KaitaiStream .packer_u8be .pack (data ))
274
+
275
+ # ........................................................................
276
+ # Little-endian
277
+ # ........................................................................
278
+
279
+ def write_u2le (self , data ):
280
+ return self .write_bytes (KaitaiStream .packer_u2le .pack (data ))
281
+
282
+ def write_u4le (self , data ):
283
+ return self .write_bytes (KaitaiStream .packer_u4le .pack (data ))
284
+
285
+ def write_u8le (self , data ):
286
+ return self .write_bytes (KaitaiStream .packer_u8le .pack (data ))
287
+
288
+ # ........................................................................
289
+ # Big-endian
290
+ # ........................................................................
291
+
292
+ def write_f4be (self , data ):
293
+ return self .write_bytes (KaitaiStream .packer_f4be .pack (data ))
294
+
295
+ def write_f8be (self , data ):
296
+ return self .write_bytes (KaitaiStream .packer_f8be .pack (data ))
297
+
298
+ # ........................................................................
299
+ # Little-endian
300
+ # ........................................................................
301
+
302
+ def write_f4le (self , data ):
303
+ return self .write_bytes (KaitaiStream .packer_f4le .pack (data ))
304
+
305
+ def write_f8le (self , data ):
306
+ return self .write_bytes (KaitaiStream .packer_f8le .pack (data ))
307
+
216
308
# ========================================================================
217
309
# Unaligned bit values
218
310
# ========================================================================
@@ -293,6 +385,21 @@ def read_bytes(self, n):
293
385
)
294
386
return r
295
387
388
+ def write_bytes (self , data , pad = 0 , padding = b'\0 ' ):
389
+ if data is None :
390
+ return
391
+ nb = len (data )
392
+ if nb == 0 and pad < 1 :
393
+ return
394
+ if nb > 0 and self ._io .write (data ) != nb :
395
+ raise Exception (
396
+ "not all of %d bytes written" %
397
+ (nb ,)
398
+ )
399
+ if pad > 0 and padding is not None :
400
+ self ._io .write (padding * pad )
401
+ return
402
+
296
403
def read_bytes_full (self ):
297
404
return self ._io .read ()
298
405
0 commit comments