1.1 --- a/iixr.py Fri Sep 11 00:39:20 2009 +0200
1.2 +++ b/iixr.py Fri Sep 11 01:21:09 2009 +0200
1.3 @@ -47,34 +47,38 @@
1.4
1.5 # Utility functions.
1.6
1.7 -def vint(number):
1.8 -
1.9 - "Write 'number' as a variable-length integer."
1.10 -
1.11 - if number >= 0:
1.12 -
1.13 - # Special case: one byte containing a 7-bit number.
1.14 -
1.15 - if number < 128:
1.16 - return chr(number)
1.17 -
1.18 - # Write the number from least to most significant digits.
1.19 -
1.20 - bytes = []
1.21 -
1.22 - while number != 0:
1.23 - lsd = number & 127
1.24 - number = number >> 7
1.25 - if number != 0:
1.26 - lsd |= 128
1.27 - bytes.append(chr(lsd))
1.28 -
1.29 - return "".join(bytes)
1.30 -
1.31 - # Negative numbers are not supported.
1.32 -
1.33 - else:
1.34 - raise ValueError, "Number %r is negative." % number
1.35 +try:
1.36 + from vint import vint
1.37 +except ImportError:
1.38 +
1.39 + def vint(number):
1.40 +
1.41 + "Write 'number' as a variable-length integer."
1.42 +
1.43 + if number >= 0:
1.44 +
1.45 + # Special case: one byte containing a 7-bit number.
1.46 +
1.47 + if number < 128:
1.48 + return chr(number)
1.49 +
1.50 + # Write the number from least to most significant digits.
1.51 +
1.52 + bytes = []
1.53 +
1.54 + while number != 0:
1.55 + lsd = number & 127
1.56 + number = number >> 7
1.57 + if number != 0:
1.58 + lsd |= 128
1.59 + bytes.append(chr(lsd))
1.60 +
1.61 + return "".join(bytes)
1.62 +
1.63 + # Negative numbers are not supported.
1.64 +
1.65 + else:
1.66 + raise ValueError, "Number %r is negative." % number
1.67
1.68 # Foundation classes.
1.69