From: <pj...@us...> - 2009-04-19 21:00:15
|
Revision: 6246 http://jython.svn.sourceforge.net/jython/?rev=6246&view=rev Author: pjenvey Date: 2009-04-19 20:59:54 +0000 (Sun, 19 Apr 2009) Log Message: ----------- small cleanup Modified Paths: -------------- trunk/jython/src/org/python/core/PyTuple.java Modified: trunk/jython/src/org/python/core/PyTuple.java =================================================================== --- trunk/jython/src/org/python/core/PyTuple.java 2009-04-19 00:01:40 UTC (rev 6245) +++ trunk/jython/src/org/python/core/PyTuple.java 2009-04-19 20:59:54 UTC (rev 6246) @@ -3,7 +3,6 @@ import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.ListIterator; @@ -20,7 +19,11 @@ public class PyTuple extends PySequenceList implements List { public static final PyType TYPE = PyType.fromClass(PyTuple.class); + private final PyObject[] array; + + private volatile List<PyObject> cachedList = null; + private static final PyTuple EMPTY_TUPLE = new PyTuple(); public PyTuple() { @@ -59,7 +62,6 @@ private static PyTuple fromArrayNoCopy(PyObject[] elements) { return new PyTuple(elements, false); } - private volatile List<PyObject> cachedList = null; List<PyObject> getList() { if (cachedList == null) { @@ -70,8 +72,8 @@ @ExposedNew final static PyObject tuple_new(PyNewWrapper new_, boolean init, PyType subtype, - PyObject[] args, String[] keywords) { - ArgParser ap = new ArgParser("newtuple", args, keywords, new String[]{"sequence"}, 0); + PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("tuple", args, keywords, new String[] {"sequence"}, 0); PyObject S = ap.getPyObject(0, null); if (new_.for_type == subtype) { if (S == null) { @@ -115,10 +117,8 @@ System.arraycopy(array, start, newArray, 0, stop - start); return fromArrayNoCopy(newArray); } - int j = 0; - for (int i = start; j < n; i += step) { + for (int i = start, j = 0; j < n; i += step, j++) { newArray[j] = array[i]; - j++; } return fromArrayNoCopy(newArray); } @@ -329,7 +329,6 @@ } else if (fromIndex > toIndex) { throw new IllegalArgumentException(); } - System.err.println("subList" + fromIndex + "," + toIndex); PyObject elements[] = new PyObject[toIndex - fromIndex]; for (int i = 0, j = fromIndex; i < elements.length; i++, j++) { elements[i] = array[j]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2011-03-14 03:34:21
|
Revision: 7234 http://jython.svn.sourceforge.net/jython/?rev=7234&view=rev Author: pjenvey Date: 2011-03-14 03:34:15 +0000 (Mon, 14 Mar 2011) Log Message: ----------- add tuple.count Modified Paths: -------------- trunk/jython/src/org/python/core/PyTuple.java Modified: trunk/jython/src/org/python/core/PyTuple.java =================================================================== --- trunk/jython/src/org/python/core/PyTuple.java 2011-03-14 03:32:44 UTC (rev 7233) +++ trunk/jython/src/org/python/core/PyTuple.java 2011-03-14 03:34:15 UTC (rev 7234) @@ -471,6 +471,21 @@ } } + public int count(PyObject obj) { + return tuple_count(obj); + } + + @ExposedMethod(doc = BuiltinDocs.tuple_count_doc) + final int tuple_count(PyObject obj) { + int count = 0; + for (PyObject item : array) { + if (item.equals(obj)) { + count++; + } + } + return count; + } + @Override public boolean equals(Object other) { if (this == other) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2011-03-14 23:09:35
|
Revision: 7240 http://jython.svn.sourceforge.net/jython/?rev=7240&view=rev Author: pjenvey Date: 2011-03-14 23:09:29 +0000 (Mon, 14 Mar 2011) Log Message: ----------- add tuple.index Modified Paths: -------------- trunk/jython/src/org/python/core/PyTuple.java Modified: trunk/jython/src/org/python/core/PyTuple.java =================================================================== --- trunk/jython/src/org/python/core/PyTuple.java 2011-03-14 22:47:30 UTC (rev 7239) +++ trunk/jython/src/org/python/core/PyTuple.java 2011-03-14 23:09:29 UTC (rev 7240) @@ -471,21 +471,51 @@ } } - public int count(PyObject obj) { - return tuple_count(obj); + public int count(PyObject value) { + return tuple_count(value); } @ExposedMethod(doc = BuiltinDocs.tuple_count_doc) - final int tuple_count(PyObject obj) { + final int tuple_count(PyObject value) { int count = 0; for (PyObject item : array) { - if (item.equals(obj)) { + if (item.equals(value)) { count++; } } return count; } + public int index(PyObject value) { + return index(value, 0); + } + + public int index(PyObject value, int start) { + return index(value, start, size()); + } + + public int index(PyObject value, int start, int stop) { + return tuple_index(value, start, stop); + } + + @ExposedMethod(defaults = {"null", "null"}, doc = BuiltinDocs.tuple_index_doc) + final int tuple_index(PyObject value, PyObject start, PyObject stop) { + int startInt = start == null ? 0 : PySlice.calculateSliceIndex(start); + int stopInt = stop == null ? size() : PySlice.calculateSliceIndex(stop); + return tuple_index(value, startInt, stopInt); + } + + final int tuple_index(PyObject value, int start, int stop) { + int validStart = boundToSequence(start); + int validStop = boundToSequence(stop); + for (int i = validStart; i < validStop; i++) { + if (array[i].equals(value)) { + return i; + } + } + throw Py.ValueError("tuple.index(x): x not in list"); + } + @Override public boolean equals(Object other) { if (this == other) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |