def getrandbits(self, space, k): """ getrandbits(k) -> x. Generates a long int with k random bits. """ if k <= 0: raise oefmt(space.w_ValueError, "number of bits must be greater than zero") if k < 32: # XXX could go up to 63 bits, but let's start with this # fits an int, don't do the bytes-to-long-to-int dance r = self._rnd.genrand32() r >>= (32 - k) return space.newint(intmask(r)) bytes = ((k - 1) // 32 + 1) * 4 bytesarray = rstring.StringBuilder(bytes) for i in range(0, bytes, 4): r = self._rnd.genrand32() if k < 32: r >>= (32 - k) bytesarray.append(chr(r & r_uint(0xff))) bytesarray.append(chr((r >> 8) & r_uint(0xff))) bytesarray.append(chr((r >> 16) & r_uint(0xff))) bytesarray.append(chr((r >> 24) & r_uint(0xff))) k -= 32 # little endian order to match bytearray assignment order result = rbigint.rbigint.frombytes(bytesarray.build(), 'little', signed=False) return space.newlong_from_rbigint(result)
def _build_string(self, start, end, level): space = self.space out = rstring.StringBuilder() if not level: raise oefmt(space.w_ValueError, "Recursion depth exceeded") level -= 1 s = self.template return self._do_build_string(start, end, level, out, s)
def inputstring(): import os s = rstring.StringBuilder() i = os.read(std_fds[0], 4096) while len(i) != 0: s.append(i) i = os.read(std_fds[0], 4096) return model.w_string(s.build())
def _build_string(self, start, end, level): space = self.space if self.is_unicode: out = rstring.UnicodeBuilder() else: out = rstring.StringBuilder() if not level: raise OperationError(space.w_ValueError, space.wrap("Recursion depth exceeded")) level -= 1 s = self.template return self._do_build_string(start, end, level, out, s)
def _build_string(self, start, end, level): space = self.space if self.is_unicode: out = rstring.UnicodeBuilder() else: out = rstring.StringBuilder() if not level: raise oefmt(space.w_ValueError, "Profundidad de recursiĆ³n excedida") level -= 1 s = self.template return self._do_build_string(start, end, level, out, s)
def processcaptures(captures, inputstring, flags=Flags()): #returnlist = [] out = rstring.StringBuilder() if flags.debug: print captures while captures.prev is not None: if isinstance(captures, SimpleCapture): size = captures.get_size() index = captures.index newindex = index - size assert newindex >= 0 assert index >= 0 out.append_slice(inputstring, newindex, index) out.append("\n") elif isinstance(captures, PositionCapture): appendee = "POSITION:" + str(captures.index) out.append(appendee + "\n") captures = captures.prev # capturelist return out.build() # returnlist
def getrandbits(self, space, k): if k <= 0: raise oefmt(space.w_ValueError, "number of bits must be greater than zero") bytes = ((k - 1) // 32 + 1) * 4 bytesarray = rstring.StringBuilder(bytes) for i in range(0, bytes, 4): r = self._rnd.genrand32() if k < 32: r >>= (32 - k) bytesarray.append(chr(r & r_uint(0xff))) bytesarray.append(chr((r >> 8) & r_uint(0xff))) bytesarray.append(chr((r >> 16) & r_uint(0xff))) bytesarray.append(chr((r >> 24) & r_uint(0xff))) k -= 32 # little endian order to match bytearray assignment order result = rbigint.rbigint.frombytes( bytesarray.build(), 'little', signed=False) return space.newlong_from_rbigint(result)
def _builder(self): if self.is_unicode: return rutf8.Utf8StringBuilder() else: return rstring.StringBuilder()
def _builder(self): if self.is_unicode: return rstring.UnicodeBuilder() else: return rstring.StringBuilder()
def implode(l_w): s = rstring.StringBuilder() for w_s in l_w: assert isinstance(w_s, model.W_String) s.append(w_s.value()) return model.w_string(s.build())