Belle II Software development
ByteStore Class Reference
Inheritance diagram for ByteStore:
ConstByteStore

Public Member Functions

 setbit (self, pos)
 
 unsetbit (self, pos)
 
 invertbit (self, pos)
 
 setbyte (self, pos, value)
 
 setbyteslice (self, start, end, value)
 
 byteoffset (self)
 
 getbit (self, pos)
 
 getbyte (self, pos)
 
 getbyteslice (self, start, end)
 
 bytelength (self)
 
 __copy__ (self)
 
 rawbytes (self)
 

Public Attributes

 offset = offset
 
 bitlength = bitlength
 
self.byteoffset+self.bytelength]) byteoffset
 

Protected Member Functions

 _appendstore (self, store)
 
 _prependstore (self, store)
 

Protected Attributes

 _rawarray = data
 

Static Private Attributes

tuple __slots__ = ()
 

Detailed Description

Adding mutating methods to ConstByteStore

Used internally - not part of public interface.

Definition at line 221 of file bitstring.py.

Member Function Documentation

◆ __copy__()

__copy__ ( self)
inherited

Definition at line 172 of file bitstring.py.

172 def __copy__(self):
173 return ByteStore(self._rawarray[:], self.bitlength, self.offset)
174

◆ _appendstore()

_appendstore ( self,
store )
protectedinherited
Join another store on to the end of this one.

Definition at line 175 of file bitstring.py.

175 def _appendstore(self, store):
176 """Join another store on to the end of this one."""
177 if not store.bitlength:
178 return
179 # Set new array offset to the number of bits in the final byte of current array.
180 store = offsetcopy(store, (self.offset + self.bitlength) % 8)
181 if store.offset:
182 # first do the byte with the join.
183 joinval = (self._rawarray.pop() & (255 ^ (255 >> store.offset)) |
184 (store.getbyte(0) & (255 >> store.offset)))
185 self._rawarray.append(joinval)
186 self._rawarray.extend(store._rawarray[1:])
187 else:
188 self._rawarray.extend(store._rawarray)
189 self.bitlength += store.bitlength
190

◆ _prependstore()

_prependstore ( self,
store )
protectedinherited
Join another store on to the start of this one.

Definition at line 191 of file bitstring.py.

191 def _prependstore(self, store):
192 """Join another store on to the start of this one."""
193 if not store.bitlength:
194 return
195 # Set the offset of copy of store so that it's final byte
196 # ends in a position that matches the offset of self,
197 # then join self on to the end of it.
198 store = offsetcopy(store, (self.offset - store.bitlength) % 8)
199 assert (store.offset + store.bitlength) % 8 == self.offset % 8
200 bit_offset = self.offset % 8
201 if bit_offset:
202 # first do the byte with the join.
203 store.setbyte(-1, (store.getbyte(-1) & (255 ^ (255 >> bit_offset)) |
204 (self._rawarray[self.byteoffset] & (255 >> bit_offset))))
205 store._rawarray.extend(self._rawarray[self.byteoffset + 1: self.byteoffset + self.bytelength])
206 else:
207 store._rawarray.extend(self._rawarray[self.byteoffset: self.byteoffset + self.bytelength])
208 self._rawarray = store._rawarray
209 self.offset = store.offset
210 self.bitlength += store.bitlength
211

◆ bytelength()

bytelength ( self)
inherited

Definition at line 165 of file bitstring.py.

165 def bytelength(self):
166 if not self.bitlength:
167 return 0
168 sb = self.offset // 8
169 eb = (self.offset + self.bitlength - 1) // 8
170 return eb - sb + 1
171

◆ byteoffset()

byteoffset ( self)
inherited

Definition at line 213 of file bitstring.py.

213 def byteoffset(self):
214 return self.offset // 8
215

◆ getbit()

getbit ( self,
pos )
inherited

Definition at line 150 of file bitstring.py.

150 def getbit(self, pos):
151 assert 0 <= pos < self.bitlength
152 byte, bit = divmod(self.offset + pos, 8)
153 return bool(self._rawarray[byte] & (128 >> bit))
154

◆ getbyte()

getbyte ( self,
pos )
inherited
Direct access to byte data.

Definition at line 155 of file bitstring.py.

155 def getbyte(self, pos):
156 """Direct access to byte data."""
157 return self._rawarray[pos]
158

◆ getbyteslice()

getbyteslice ( self,
start,
end )
inherited
Direct access to byte data.

Definition at line 159 of file bitstring.py.

159 def getbyteslice(self, start, end):
160 """Direct access to byte data."""
161 c = self._rawarray[start:end]
162 return c
163

◆ invertbit()

invertbit ( self,
pos )

Definition at line 238 of file bitstring.py.

238 def invertbit(self, pos):
239 assert 0 <= pos < self.bitlength
240 byte, bit = divmod(self.offset + pos, 8)
241 self._rawarray[byte] ^= (128 >> bit)
242

◆ rawbytes()

rawbytes ( self)
inherited

Definition at line 217 of file bitstring.py.

217 def rawbytes(self):
218 return self._rawarray
219
220

◆ setbit()

setbit ( self,
pos )

Definition at line 228 of file bitstring.py.

228 def setbit(self, pos):
229 assert 0 <= pos < self.bitlength
230 byte, bit = divmod(self.offset + pos, 8)
231 self._rawarray[byte] |= (128 >> bit)
232

◆ setbyte()

setbyte ( self,
pos,
value )

Definition at line 243 of file bitstring.py.

243 def setbyte(self, pos, value):
244 self._rawarray[pos] = value
245

◆ setbyteslice()

setbyteslice ( self,
start,
end,
value )

Definition at line 246 of file bitstring.py.

246 def setbyteslice(self, start, end, value):
247 self._rawarray[start:end] = value
248
249

◆ unsetbit()

unsetbit ( self,
pos )

Definition at line 233 of file bitstring.py.

233 def unsetbit(self, pos):
234 assert 0 <= pos < self.bitlength
235 byte, bit = divmod(self.offset + pos, 8)
236 self._rawarray[byte] &= ~(128 >> bit)
237

Member Data Documentation

◆ __slots__

tuple __slots__ = ()
staticprivate

Definition at line 226 of file bitstring.py.

◆ _rawarray

_rawarray = data
protectedinherited

Definition at line 142 of file bitstring.py.

◆ bitlength

bitlength = bitlength
inherited

Definition at line 148 of file bitstring.py.

◆ byteoffset

self.byteoffset + self.bytelength]) byteoffset
inherited

Definition at line 207 of file bitstring.py.

◆ offset

offset = offset
inherited

Definition at line 147 of file bitstring.py.


The documentation for this class was generated from the following file: