1 #!/usr/bin/env python 2 3 """ 4 Operator support. 5 6 Copyright (C) 2010, 2013, 2015 Paul Boddie <paul@boddie.org.uk> 7 8 This program is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free Software 10 Foundation; either version 3 of the License, or (at your option) any later 11 version. 12 13 This program is distributed in the hope that it will be useful, but WITHOUT 14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 16 details. 17 18 You should have received a copy of the GNU General Public License along with 19 this program. If not, see <http://www.gnu.org/licenses/>. 20 """ 21 22 # Necessary import since the operator module gets imported very early during 23 # builtins initialisation. 24 25 from __builtins__.span import slice 26 27 # NOTE: The compiler should make it possible for the following functions to call 28 # NOTE: the generic operator implementations with no additional call overhead. 29 30 # Access and slicing functions. 31 32 def getitem(a, b): 33 return a.__getitem__(b) 34 35 def setitem(a, b, c): 36 a.__setitem__(b, c) 37 38 # NOTE: Should be able to optimise temporary instance allocations for slices. 39 40 def getslice(a, b, c): 41 return a.__getitem__(slice(b, c)) 42 43 def setslice(a, b, c, d): 44 a.__setitem__(slice(b, c), d) 45 46 # vim: tabstop=4 expandtab shiftwidth=4