old python needs __main__ to call a module
[pylucene.git] / java / org / apache / pylucene / util / PythonSet.java
1 /* ====================================================================
2  *   Licensed under the Apache License, Version 2.0 (the "License");
3  *   you may not use this file except in compliance with the License.
4  *   You may obtain a copy of the License at
5  *
6  *       http://www.apache.org/licenses/LICENSE-2.0
7  *
8  *   Unless required by applicable law or agreed to in writing, software
9  *   distributed under the License is distributed on an "AS IS" BASIS,
10  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  *   See the License for the specific language governing permissions and
12  *   limitations under the License.
13  * ====================================================================
14  */
15
16 package org.apache.pylucene.util;
17
18 import java.util.Set;
19 import java.util.Collection;
20 import java.util.Iterator;
21 import java.lang.reflect.Array;
22
23
24 public class PythonSet implements Set {
25
26     private long pythonObject;
27
28     public PythonSet()
29     {
30     }
31
32     public void pythonExtension(long pythonObject)
33     {
34         this.pythonObject = pythonObject;
35     }
36     public long pythonExtension()
37     {
38         return this.pythonObject;
39     }
40
41     public void finalize()
42         throws Throwable
43     {
44         pythonDecRef();
45     }
46
47     public native void pythonDecRef();
48
49     public native boolean add(Object obj);
50     public native boolean addAll(Collection c);
51     public native void clear();
52     public native boolean contains(Object obj);
53     public native boolean containsAll(Collection c);
54     public native boolean equals(Object obj);
55     public native boolean isEmpty();
56     public native Iterator iterator();
57     public native boolean remove(Object obj);
58     public native boolean removeAll(Collection c);
59     public native boolean retainAll(Collection c);
60     public native int size();
61     public native Object[] toArray();
62     
63     public Object[] toArray(Object[] a)
64     {
65         Object[] array = toArray();
66         
67         if (a.length < array.length)
68             a = (Object[]) Array.newInstance(a.getClass().getComponentType(),
69                                              array.length);
70
71         System.arraycopy(array, 0, a, 0, array.length);
72
73         return a;
74     }
75 }