private int toInt(V v) { return f==null?((IntegerMappable)v).toInt():f.invoke(v); }
public Range.Set getRanges() { return new Range.Set(rs); }
+ public Functor<V,Integer> functor() { return f; }
public IntegerTopology(Functor<V,Integer> f) { this(f, new Range.Set()); }
public IntegerTopology(Functor<V,Integer> f, V a) { this(f, f==null?((IntegerMappable)a).toInt():f.invoke(a)); }
public IntegerTopology(Functor<V,Integer> f, int a) { this(f, a, a); }
public IntegerTopology(Functor<V,Integer> f, int a, int b) { this(f, new Range(a, b)); }
public IntegerTopology(Functor<V,Integer> f, Range r) { this(f, new Range.Set(r)); }
- public IntegerTopology(Functor<V,Integer> f, Range.Set rs) { this.rs = rs; this.f = f; }
-
+ public IntegerTopology(Functor<V,Integer> f, Range.Set rs) {
+ this.rs = rs;
+ this.f = f==null?(this instanceof Functor ? (Functor)this : null):f;
+ }
+
public Topology<V> empty() { return new IntegerTopology<V>(f); }
public boolean contains(V v) { return rs.contains(toInt(v)); }