|
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.
|