[Jython-checkins] jython: Removedor reduced Traverseproc implementation of named_tuple-like struct
stefan.richthofer
jython-checkins at python.org
Fri Feb 24 04:44:26 EST 2017
https://hg.python.org/jython/rev/b263f56ea793
changeset: 8028:b263f56ea793
user: Stefan Richthofer <stefan.richthofer at gmx.de>
date: Fri Feb 24 10:43:57 2017 +0100
summary:
Removedor reduced Traverseproc implementation of named_tuple-like struct objects LongInfo, FloatInfo, PyStatResult.
files:
src/org/python/core/PySystemState.java | 98 +---------
src/org/python/modules/posix/PyStatResult.java | 52 +----
2 files changed, 14 insertions(+), 136 deletions(-)
diff --git a/src/org/python/core/PySystemState.java b/src/org/python/core/PySystemState.java
--- a/src/org/python/core/PySystemState.java
+++ b/src/org/python/core/PySystemState.java
@@ -1904,79 +1904,10 @@
}
- /* Traverseproc implementation */
- @Override
- public int traverse(Visitproc visit, Object arg) {
- int retVal = super.traverse(visit, arg);
- if (max != null) {
- retVal = visit.visit(max, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (max_exp != null) {
- retVal = visit.visit(max_exp, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (max_10_exp != null) {
- retVal = visit.visit(max_10_exp, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (min != null) {
- retVal = visit.visit(min, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (min_exp != null) {
- retVal = visit.visit(min_exp, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (min_10_exp != null) {
- retVal = visit.visit(min_10_exp, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (dig != null) {
- retVal = visit.visit(dig, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (mant_dig != null) {
- retVal = visit.visit(mant_dig, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (epsilon != null) {
- retVal = visit.visit(epsilon, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (radix != null) {
- retVal = visit.visit(radix, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- return rounds == null ? 0 : visit.visit(rounds, arg);
- }
-
- @Override
- public boolean refersDirectlyTo(PyObject ob) {
- return ob != null && (ob == max || ob == max_exp || ob == max_10_exp || ob == min
- || ob == min_exp || ob == min_10_exp || ob == dig
- || ob == mant_dig || ob == epsilon || ob == radix || ob == rounds);
- }
+ /* Note for Traverseproc implementation:
+ * We needn't visit the fields, because they are also represented as tuple elements
+ * in the parent class. So deferring to super-implementation is sufficient.
+ */
}
@@ -2009,21 +1940,8 @@
}
- /* Traverseproc implementation */
- @Override
- public int traverse(Visitproc visit, Object arg) {
- int retVal = super.traverse(visit, arg);
- if (bits_per_digit != null) {
- retVal = visit.visit(bits_per_digit, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- return sizeof_digit == null ? 0 : visit.visit(sizeof_digit, arg);
- }
-
- @Override
- public boolean refersDirectlyTo(PyObject ob) {
- return ob != null && (ob == bits_per_digit || ob == sizeof_digit);
- }
+ /* Note for Traverseproc implementation:
+ * We needn't visit the fields, because they are also represented as tuple elements
+ * in the parent class. So deferring to super-implementation is sufficient.
+ */
}
diff --git a/src/org/python/modules/posix/PyStatResult.java b/src/org/python/modules/posix/PyStatResult.java
--- a/src/org/python/modules/posix/PyStatResult.java
+++ b/src/org/python/modules/posix/PyStatResult.java
@@ -239,55 +239,16 @@
}
- /* Traverseproc implementation */
+ /* Traverseproc implementation
+ * Note that there are more fields to traverse. However traverse in PyTuple handles those.
+ * Here we only traverse values that are not exactly referenced in PyTuple entries.
+ */
@Override
public int traverse(Visitproc visit, Object arg) {
int retVal = super.traverse(visit, arg);
if (retVal != 0) {
return retVal;
}
- if (st_mode != null) {
- retVal = visit.visit(st_mode, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_ino != null) {
- retVal = visit.visit(st_ino, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_dev != null) {
- retVal = visit.visit(st_dev, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_nlink != null) {
- retVal = visit.visit(st_nlink, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_uid != null) {
- retVal = visit.visit(st_uid, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_gid != null) {
- retVal = visit.visit(st_gid, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
- if (st_size != null) {
- retVal = visit.visit(st_size, arg);
- if (retVal != 0) {
- return retVal;
- }
- }
if (st_atime != null) {
retVal = visit.visit(st_atime, arg);
if (retVal != 0) {
@@ -305,8 +266,7 @@
@Override
public boolean refersDirectlyTo(PyObject ob) {
- return ob != null && (ob == st_mode || ob == st_ino || ob == st_dev || ob == st_nlink
- || ob == st_uid || ob == st_gid || ob == st_size || ob == st_atime
- || ob == st_mtime || ob == st_ctime || super.refersDirectlyTo(ob));
+ return ob != null && (ob == st_atime || ob == st_mtime
+ || ob == st_ctime || super.refersDirectlyTo(ob));
}
}
--
Repository URL: https://hg.python.org/jython
More information about the Jython-checkins
mailing list