@@ -125,6 +125,9 @@ def size(self):
125
125
def read_s1 (self ):
126
126
return KaitaiStream .packer_s1 .unpack (self .read_bytes (1 ))[0 ]
127
127
128
+ def write_s1 (self , data ):
129
+ return self .write_bytes (KaitaiStream .packer_s1 .pack (data ))
130
+
128
131
# ........................................................................
129
132
# Big-endian
130
133
# ........................................................................
@@ -138,6 +141,15 @@ def read_s4be(self):
138
141
def read_s8be (self ):
139
142
return KaitaiStream .packer_s8be .unpack (self .read_bytes (8 ))[0 ]
140
143
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
+
141
153
# ........................................................................
142
154
# Little-endian
143
155
# ........................................................................
@@ -151,13 +163,25 @@ def read_s4le(self):
151
163
def read_s8le (self ):
152
164
return KaitaiStream .packer_s8le .unpack (self .read_bytes (8 ))[0 ]
153
165
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
+
154
175
# ------------------------------------------------------------------------
155
176
# Unsigned
156
177
# ------------------------------------------------------------------------
157
178
158
179
def read_u1 (self ):
159
180
return KaitaiStream .packer_u1 .unpack (self .read_bytes (1 ))[0 ]
160
181
182
+ def write_u1 (self , data ):
183
+ return self .write_bytes (KaitaiStream .packer_u1 .pack (data ))
184
+
161
185
# ........................................................................
162
186
# Big-endian
163
187
# ........................................................................
@@ -171,6 +195,15 @@ def read_u4be(self):
171
195
def read_u8be (self ):
172
196
return KaitaiStream .packer_u8be .unpack (self .read_bytes (8 ))[0 ]
173
197
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
+
174
207
# ........................................................................
175
208
# Little-endian
176
209
# ........................................................................
@@ -184,6 +217,15 @@ def read_u4le(self):
184
217
def read_u8le (self ):
185
218
return KaitaiStream .packer_u8le .unpack (self .read_bytes (8 ))[0 ]
186
219
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
+
187
229
# ========================================================================
188
230
# Floating point numbers
189
231
# ========================================================================
@@ -203,6 +245,12 @@ def read_f4be(self):
203
245
def read_f8be (self ):
204
246
return KaitaiStream .packer_f8be .unpack (self .read_bytes (8 ))[0 ]
205
247
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
+
206
254
# ........................................................................
207
255
# Little-endian
208
256
# ........................................................................
@@ -213,6 +261,12 @@ def read_f4le(self):
213
261
def read_f8le (self ):
214
262
return KaitaiStream .packer_f8le .unpack (self .read_bytes (8 ))[0 ]
215
263
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
+
216
270
# ========================================================================
217
271
# Unaligned bit values
218
272
# ========================================================================
@@ -293,6 +347,21 @@ def read_bytes(self, n):
293
347
)
294
348
return r
295
349
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 align < 2 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
+
296
365
def read_bytes_full (self ):
297
366
return self ._io .read ()
298
367
@@ -317,6 +386,9 @@ def read_bytes_term(self, term, include_term, consume_term, eos_error):
317
386
else :
318
387
r += c
319
388
389
+ def write_bytes_term (self , data , term = b'\0 ' ):
390
+ self .write_bytes (data , pad = 1 , padding = term )
391
+
320
392
def ensure_fixed_contents (self , expected ):
321
393
actual = self ._io .read (len (expected ))
322
394
if actual != expected :
@@ -327,7 +399,7 @@ def ensure_fixed_contents(self, expected):
327
399
return actual
328
400
329
401
@staticmethod
330
- def bytes_strip_right (data , pad_byte ):
402
+ def bytes_strip_right (data , pad_byte = b' \0 ' ):
331
403
new_len = len (data )
332
404
if PY2 :
333
405
# data[...] must yield an integer, to compare with integer pad_byte
0 commit comments