Artifact
133ef4212afdf8972bf5f5e14639e18eac5739688bf32ebd653516d6e1044d75:
0000: 23 23 0a 23 20 70 79 2d 73 70 61 63 65 6d 61 70 ##.# py-spacemap
0010: 20 72 6f 6f 74 20 70 61 63 6b 61 67 65 0a 23 20 root package.#
0020: 68 74 74 70 3a 2f 2f 63 6f 64 65 2e 67 6f 6f 67 http://code.goog
0030: 6c 65 2e 63 6f 6d 2f 70 2f 70 79 2d 73 70 61 63 le.com/p/py-spac
0040: 65 6d 61 70 0a 23 23 0a 0a 22 22 22 0a 54 68 69 emap.##..""".Thi
0050: 73 20 6d 6f 64 75 6c 65 20 70 72 6f 76 69 64 65 s module provide
0060: 73 20 73 69 6d 70 6c 65 20 63 6c 61 73 73 20 74 s simple class t
0070: 6f 20 77 6f 72 6b 20 77 69 74 68 20 73 70 61 63 o work with spac
0080: 65 6d 61 70 73 2c 20 6f 62 6a 65 63 74 73 20 74 emaps, objects t
0090: 68 61 74 20 6d 61 72 6b 73 0a 73 6f 6d 65 20 70 hat marks.some p
00a0: 6f 72 74 69 6f 6e 73 20 6f 66 20 67 69 76 65 6e ortions of given
00b0: 20 72 61 6e 67 65 2e 0a 0a 49 6d 61 67 69 6e 65 range...Imagine
00c0: 20 74 68 61 74 20 77 65 20 68 61 76 65 20 72 61 that we have ra
00d0: 6e 67 65 20 6f 66 20 31 30 20 62 79 74 65 73 2e nge of 10 bytes.
00e0: 20 53 6f 20 77 65 20 77 61 6e 74 20 74 6f 20 6d So we want to m
00f0: 61 72 6b 20 62 79 74 65 73 20 32 20 2d 20 33 20 ark bytes 2 - 3
0100: 61 73 20 75 73 65 64 0a 61 6e 64 20 61 6c 73 6f as used.and also
0110: 20 38 20 2d 20 39 2e 20 49 20 6b 6e 6f 77 20 74 8 - 9. I know t
0120: 68 69 73 20 6a 75 73 74 20 61 20 72 6f 75 67 68 his just a rough
0130: 20 65 78 61 6d 70 6c 65 2e 0a 0a 41 6e 79 20 72 example...Any r
0140: 61 6e 67 65 20 63 61 6e 20 62 65 20 67 69 76 65 ange can be give
0150: 6e 20 61 73 20 70 61 69 72 20 78 3a 79 20 77 68 n as pair x:y wh
0160: 65 72 65 20 78 20 69 73 20 70 61 72 74 20 6f 66 ere x is part of
0170: 20 74 68 65 20 6d 61 72 6b 65 64 20 72 61 6e 67 the marked rang
0180: 65 20 61 6e 64 20 79 20 2d 0a 6e 65 78 74 20 66 e and y -.next f
0190: 72 65 65 20 73 70 61 63 65 2e 20 49 6e 20 6d 61 ree space. In ma
01a0: 74 68 65 6d 61 74 69 63 61 6c 20 6e 6f 74 61 74 thematical notat
01b0: 69 6f 6e 20 74 68 69 73 20 69 73 20 65 71 75 61 ion this is equa
01c0: 6c 20 74 6f 20 5b 78 3a 79 29 2e 0a 0a 4d 6f 64 l to [x:y)...Mod
01d0: 75 6c 65 20 61 6c 73 6f 20 63 61 6e 3a 0a 0a 20 ule also can:..
01e0: 2d 20 61 75 74 6f 73 68 72 69 6e 6b 20 6d 61 70 - autoshrink map
01f0: 73 2c 20 69 2e 65 2e 20 5b 32 3a 33 29 2c 5b 33 s, i.e. [2:3),[3
0200: 3a 36 29 20 3d 20 5b 32 3a 36 29 3b 0a 0a 20 2d :6) = [2:6);.. -
0210: 20 73 75 62 73 74 72 61 63 74 20 6d 61 70 73 2c substract maps,
0220: 20 74 68 65 20 70 72 6f 64 75 63 74 20 6f 66 20 the product of
0230: 41 20 2d 20 42 20 69 73 20 61 6c 6c 20 73 70 61 A - B is all spa
0240: 63 65 20 69 6e 20 41 20 74 68 61 74 20 69 73 20 ce in A that is
0250: 6e 6f 74 20 63 6f 76 65 72 65 64 0a 62 79 20 42 not covered.by B
0260: 2c 20 69 2e 65 2e 20 5b 32 3a 31 30 29 20 2d 20 , i.e. [2:10) -
0270: 5b 35 3a 37 29 20 3d 20 5b 32 3a 35 29 2c 5b 37 [5:7) = [2:5),[7
0280: 2c 31 30 29 3b 0a 0a 20 2d 20 67 65 74 20 69 6e ,10);.. - get in
0290: 74 65 72 73 65 63 74 69 6f 6e 20 28 6c 6f 67 69 tersection (logi
02a0: 63 61 6c 20 6f 72 29 2c 20 74 68 65 20 70 72 6f cal or), the pro
02b0: 64 75 63 74 20 6f 66 20 41 20 61 6e 64 20 42 20 duct of A and B
02c0: 69 73 20 61 6c 6c 20 73 70 61 63 65 20 74 68 61 is all space tha
02d0: 74 20 63 61 6e 0a 62 65 20 66 6f 75 6e 64 20 62 t can.be found b
02e0: 6f 74 68 20 69 6e 20 41 20 61 6e 64 20 69 6e 20 oth in A and in
02f0: 42 2c 20 69 2e 65 2e 20 5b 32 3a 31 30 29 20 61 B, i.e. [2:10) a
0300: 6e 64 20 5b 35 3a 31 35 29 20 3d 20 5b 35 3a 31 nd [5:15) = [5:1
0310: 30 29 3b 0a 0a 20 2d 20 63 6f 6d 70 61 72 65 20 0);.. - compare
0320: 6d 61 70 73 2e 0a 0a 6d 6f 72 65 20 77 69 6c 6c maps...more will
0330: 20 62 65 20 61 64 64 65 64 20 73 6f 6f 6e 2e 2e be added soon..
0340: 2e 0a 22 22 22 0a 0a 5f 5f 61 6c 6c 5f 5f 20 3d .."""..__all__ =
0350: 20 5b 0a 09 27 5f 5f 61 75 74 68 6f 72 5f 5f 27 [..'__author__'
0360: 2c 0a 09 27 5f 5f 64 61 74 65 5f 5f 27 2c 0a 09 ,..'__date__',..
0370: 27 5f 5f 76 65 72 73 69 6f 6e 5f 5f 27 2c 0a 09 '__version__',..
0380: 27 5f 5f 64 6f 63 66 6f 72 6d 61 74 5f 5f 27 2c '__docformat__',
0390: 0a 09 27 76 65 72 73 69 6f 6e 27 2c 0a 09 27 76 ..'version',..'v
03a0: 65 72 73 69 6f 6e 5f 69 6e 66 6f 27 2c 0a 09 27 ersion_info',..'
03b0: 53 70 61 63 65 4d 61 70 27 2c 0a 09 27 74 65 73 SpaceMap',..'tes
03c0: 74 27 2c 0a 5d 0a 0a 23 20 4f 70 74 69 6f 6e 61 t',.]..# Optiona
03d0: 6c 2e 0a 74 72 79 3a 0a 09 66 72 6f 6d 20 2e 70 l..try:..from .p
03e0: 72 6f 6a 65 63 74 20 69 6d 70 6f 72 74 20 76 65 roject import ve
03f0: 72 73 69 6f 6e 5f 69 6e 66 6f 2c 20 76 65 72 73 rsion_info, vers
0400: 69 6f 6e 2c 20 61 75 74 68 6f 72 20 61 73 20 5f ion, author as _
0410: 5f 61 75 74 68 6f 72 5f 5f 2c 20 64 61 74 65 20 _author__, date
0420: 61 73 20 5f 5f 64 61 74 65 5f 5f 0a 09 5f 5f 76 as __date__..__v
0430: 65 72 73 69 6f 6e 5f 5f 20 3d 20 76 65 72 73 69 ersion__ = versi
0440: 6f 6e 0a 09 66 72 6f 6d 20 2e 74 65 73 74 20 69 on..from .test i
0450: 6d 70 6f 72 74 20 74 65 73 74 0a 65 78 63 65 70 mport test.excep
0460: 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 09 t ImportError:..
0470: 70 61 73 73 0a 0a 66 72 6f 6d 20 2e 73 70 61 63 pass..from .spac
0480: 65 6d 61 70 20 69 6d 70 6f 72 74 20 53 70 61 63 emap import Spac
0490: 65 4d 61 70 0a eMap.