Changeset e6a78b9 in mainline for tools/xstruct.py


Ignore:
Timestamp:
2012-06-29T15:31:44Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9432f08
Parents:
34ab31c (diff), 0bbd13e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/xstruct.py

    r34ab31c re6a78b9  
    3232
    3333import struct
     34import sys
    3435import types
    3536
     37# Handle long integer conversions nicely in both Python 2 and Python 3
     38integer_types = (int, long) if sys.version < '3' else (int,)
     39
     40# Ensure that 's' format for struct receives correct data type depending
     41# on Python version (needed due to different way to encode into bytes)
     42ensure_string = \
     43        (lambda value: value if type(value) is str else bytes(value)) \
     44                if sys.version < '3' else \
     45        (lambda value: bytes(value, 'ascii') if type(value) is str else value)
     46
    3647ranges = {
    37         'B': ((int, long), 0x00, 0xff),
    38         'H': ((int, long), 0x0000, 0xffff),
    39         'L': ((int, long), 0x00000000, 0xffffffff),
    40         'Q': ((int, long), 0x0000000000000000, 0xffffffffffffffff),
    41         'b': ((int, long), -0x80, 0x7f),
    42         'h': ((int, long), -0x8000, 0x7fff),
    43         'l': ((int, long), -0x80000000, 0x7fffffff) ,
    44         'q': ((int, long), -0x8000000000000000, 0x7fffffffffffffff),
     48        'B': (integer_types, 0x00, 0xff),
     49        'H': (integer_types, 0x0000, 0xffff),
     50        'L': (integer_types, 0x00000000, 0xffffffff),
     51        'Q': (integer_types, 0x0000000000000000, 0xffffffffffffffff),
     52        'b': (integer_types, -0x80, 0x7f),
     53        'h': (integer_types, -0x8000, 0x7fff),
     54        'l': (integer_types, -0x80000000, 0x7fffffff) ,
     55        'q': (integer_types, -0x8000000000000000, 0x7fffffffffffffff),
    4556}
    4657
     
    7485                                        args.append(item)
    7586                        else:
     87                                if (fmt == "s"):
     88                                        value = ensure_string(value)
    7689                                check_range(variable, fmt, value)
    7790                                args.append(value)             
Note: See TracChangeset for help on using the changeset viewer.