On 19/09/16 21:39 +0000, Joseph Myers wrote:
On Mon, 19 Sep 2016, Jonathan Wakely wrote:
On 19/09/16 17:24 +0000, Joe Buck wrote:
> Python has a distinct integer division operator, "//". 7 // 3 returns the
> integer 2.
Python 3 does, but Python 2 doesn't have it unless you import it from
__future, and I don't know how far back that works. I don't want to
introduce a fix for Python 3 that breaks it for old systems.
No, // is available in Python, without needing __future__, from 2.2
onwards.
I stand corrected, thanks both of you.
I'll test and commnit this then.
commit 07345154582af68b50866cbe9b9043cccc2f2d45
Author: Jonathan Wakely <jwak...@redhat.com>
Date: Tue Sep 20 09:38:49 2016 +0100
Use python floored quotient operator in xmethods
* python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__)
(DequeWorkerBase.index, VectorWorkerBase.get): Use // for division.
diff --git a/libstdc++-v3/python/libstdcxx/v6/xmethods.py b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
index 71a5b75..ed6a111 100644
--- a/libstdc++-v3/python/libstdcxx/v6/xmethods.py
+++ b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
@@ -165,7 +165,7 @@ class ArrayMethodsMatcher(gdb.xmethod.XMethodMatcher):
class DequeWorkerBase(gdb.xmethod.XMethodWorker):
def __init__(self, val_type):
self._val_type = val_type
- self._bufsize = int(512 / val_type.sizeof) or 1
+ self._bufsize = 512 // val_type.sizeof or 1
def size(self, obj):
first_node = obj['_M_impl']['_M_start']['_M_node']
@@ -176,7 +176,7 @@ class DequeWorkerBase(gdb.xmethod.XMethodWorker):
def index(self, obj, idx):
first_node = obj['_M_impl']['_M_start']['_M_node']
- index_node = first_node + int(idx / self._bufsize)
+ index_node = first_node + idx // self._bufsize
return index_node[0][idx % self._bufsize]
class DequeEmptyWorker(DequeWorkerBase):
@@ -419,7 +419,7 @@ class VectorWorkerBase(gdb.xmethod.XMethodWorker):
if self._val_type.code == gdb.TYPE_CODE_BOOL:
start = obj['_M_impl']['_M_start']['_M_p']
bit_size = start.dereference().type.sizeof * 8
- valp = start + int(index / bit_size)
+ valp = start + index // bit_size
offset = index % bit_size
return (valp.dereference() & (1 << offset)) > 0
else: