Skip to content

Commit 4095c1e

Browse files
authored
Merge pull request #225 from maarzt/fix-argbtype-equals
Add ARGBType::equals
2 parents b4fcd44 + 25e4056 commit 4095c1e

33 files changed

+891
-506
lines changed

src/main/java/net/imglib2/type/label/BasePairBitType.java

Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,63 @@
4949
*/
5050
public class BasePairBitType extends AbstractBit64Type< BasePairBitType > implements BasePairType< BasePairBitType >
5151
{
52-
public static enum Base { gap, N, A, T, G, C, U; }
52+
// hom many bits a BasePairBitType contains
53+
private static final int NBITS = 3;
54+
55+
public enum Base
56+
{
57+
gap( ' ' ),
58+
N( 'N' ),
59+
A( 'A' ),
60+
T( 'T' ),
61+
G( 'G' ),
62+
C( 'C' ),
63+
U( 'U' );
64+
65+
private final char c;
66+
67+
Base( final char c )
68+
{
69+
this.c = c;
70+
}
71+
72+
public char getChar()
73+
{
74+
return c;
75+
}
76+
77+
public static Base fromChar( final char c )
78+
{
79+
switch ( c )
80+
{
81+
case 'A':
82+
return A;
83+
case 'T':
84+
return T;
85+
case 'G':
86+
return G;
87+
case 'C':
88+
return C;
89+
case 'U':
90+
return U;
91+
case ' ':
92+
return gap;
93+
default:
94+
return N;
95+
}
96+
}
97+
}
5398

5499
// this is the constructor if you want it to read from an array
55100
public BasePairBitType( final NativeImg< ?, ? extends LongAccess > bitStorage )
56101
{
57-
super( bitStorage, 3 );
102+
super( bitStorage, NBITS );
58103
}
59104

60105
// this is the constructor if you want it to be a variable
61106
public BasePairBitType( final Base value )
62107
{
63-
super( value.ordinal() );
108+
super( value.ordinal(), NBITS );
64109
}
65110

66111
// this is the constructor if you want it to be a variable
@@ -89,29 +134,13 @@ public void set( final Base base )
89134
@Override
90135
public Base get()
91136
{
92-
return Base.values()[ (int)getBits() ];
137+
return Base.values()[ ( int ) getBits() ];
93138
}
94139

95140
@Override
96141
public int compareTo( final BasePairBitType c )
97142
{
98-
final Base input = get();
99-
final Base compare = c.get();
100-
101-
if ( input == compare )
102-
{
103-
return 0;
104-
}
105-
switch ( input )
106-
{
107-
case gap: return -1;
108-
case N: return compare == Base.gap ? 1 : -1;
109-
case A: return compare == Base.gap || compare == Base.N ? 1 : -1;
110-
case T: return compare == Base.G || compare == Base.C || compare == Base.U ? -1 : 1;
111-
case G: return compare == Base.C || compare == Base.U ? -1 : 1;
112-
case C: return compare == Base.U ? -1 : 1;
113-
default: return 1;
114-
}
143+
return get().compareTo( c.get() );
115144
}
116145

117146
@Override
@@ -132,25 +161,7 @@ public void complement()
132161
@Override
133162
public byte baseToValue()
134163
{
135-
final Base base = get();
136-
137-
switch ( base )
138-
{
139-
case N:
140-
return 1;
141-
case A:
142-
return 2;
143-
case T:
144-
return 3;
145-
case G:
146-
return 4;
147-
case C:
148-
return 5;
149-
case U:
150-
return 6;
151-
default:
152-
return 0;
153-
}
164+
return ( byte ) get().ordinal();
154165
}
155166

156167
@Override

src/main/java/net/imglib2/type/label/BasePairCharType.java

Lines changed: 4 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -124,54 +124,13 @@ public void setChar( final char f )
124124
@Override
125125
public void set( final Base base )
126126
{
127-
switch ( base )
128-
{
129-
case A:
130-
setChar( 'A' );
131-
return;
132-
case T:
133-
setChar( 'T' );
134-
return;
135-
case G:
136-
setChar( 'G' );
137-
return;
138-
case C:
139-
setChar( 'C' );
140-
return;
141-
case U:
142-
setChar( 'U' );
143-
return;
144-
case gap:
145-
setChar( ' ' );
146-
return;
147-
default:
148-
setChar( 'N' );
149-
return;
150-
}
127+
setChar( base.getChar() );
151128
}
152129

153130
@Override
154131
public Base get()
155132
{
156-
final char value = getChar();
157-
158-
switch ( value )
159-
{
160-
case 'A':
161-
return Base.A;
162-
case 'T':
163-
return Base.T;
164-
case 'G':
165-
return Base.G;
166-
case 'C':
167-
return Base.C;
168-
case 'U':
169-
return Base.U;
170-
case ' ':
171-
return Base.gap;
172-
default:
173-
return Base.N;
174-
}
133+
return Base.fromChar( getChar() );
175134
}
176135

177136
@Override
@@ -183,27 +142,7 @@ public void set( final BasePairCharType c )
183142
@Override
184143
public int compareTo( final BasePairCharType c )
185144
{
186-
final char input = getChar();
187-
final char compare = c.getChar();
188-
189-
if ( input == compare ) { return 0; }
190-
switch ( input )
191-
{
192-
case ' ':
193-
return -1;
194-
case 'N':
195-
return compare == ' ' ? 1 : -1;
196-
case 'A':
197-
return compare == ' ' || compare == 'N' ? 1 : -1;
198-
case 'T':
199-
return compare == 'G' || compare == 'C' || compare == 'U' ? -1 : 1;
200-
case 'G':
201-
return compare == 'C' || compare == 'U' ? -1 : 1;
202-
case 'C':
203-
return compare == 'U' ? -1 : 1;
204-
default:
205-
return 1;
206-
}
145+
return get().compareTo( c.get() );
207146
}
208147

209148
@Override
@@ -233,25 +172,7 @@ public void complement()
233172
@Override
234173
public byte baseToValue()
235174
{
236-
final char base = getChar();
237-
238-
switch ( base )
239-
{
240-
case 'N':
241-
return 1;
242-
case 'A':
243-
return 2;
244-
case 'T':
245-
return 3;
246-
case 'G':
247-
return 4;
248-
case 'C':
249-
return 5;
250-
case 'U':
251-
return 6;
252-
default:
253-
return 0;
254-
}
175+
return ( byte ) get().ordinal();
255176
}
256177

257178
@Override

src/main/java/net/imglib2/type/logic/BitType.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import net.imglib2.type.numeric.IntegerType;
4646
import net.imglib2.type.numeric.integer.AbstractIntegerType;
4747
import net.imglib2.util.Fraction;
48+
import net.imglib2.util.Util;
4849

4950
/**
5051
* TODO
@@ -289,20 +290,6 @@ public void dec()
289290
not();
290291
}
291292

292-
@Override
293-
public int compareTo( final BitType c )
294-
{
295-
final boolean b1 = get();
296-
final boolean b2 = c.get();
297-
298-
if ( b1 && !b2 )
299-
return 1;
300-
else if ( !b1 && b2 )
301-
return -1;
302-
else
303-
return 0;
304-
}
305-
306293
@Override
307294
public BitType createVariable()
308295
{
@@ -371,9 +358,27 @@ public int getBitsPerPixel()
371358
return 1;
372359
}
373360

361+
@Override
362+
public int compareTo( final BitType other )
363+
{
364+
return Boolean.compare( get(), other.get() );
365+
}
366+
374367
@Override
375368
public boolean valueEquals( final BitType t )
376369
{
377370
return get() == t.get();
378371
}
372+
373+
@Override
374+
public boolean equals( final Object obj )
375+
{
376+
return Util.valueEqualsObject( this, obj );
377+
}
378+
379+
@Override
380+
public int hashCode()
381+
{
382+
return Boolean.hashCode( get() );
383+
}
379384
}

src/main/java/net/imglib2/type/logic/BoolType.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
import net.imglib2.type.BooleanType;
3939
import net.imglib2.type.numeric.integer.AbstractIntegerType;
40+
import net.imglib2.util.Util;
4041

4142
/**
4243
* A {@link BooleanType} wrapping a single primitive {@code boolean} variable.
@@ -80,15 +81,6 @@ public void set( final BoolType c )
8081
value = c.get();
8182
}
8283

83-
@Override
84-
public int compareTo( final BoolType o )
85-
{
86-
if ( value )
87-
return o.value ? 0 : 1;
88-
else
89-
return o.value ? -1 : 0;
90-
}
91-
9284
@Override
9385
public boolean get()
9486
{
@@ -193,10 +185,28 @@ public void setBigInteger( final BigInteger b )
193185
{
194186
set( b.compareTo(BigInteger.ZERO) > 0 );
195187
}
196-
188+
189+
@Override
190+
public int compareTo( final BoolType other )
191+
{
192+
return Boolean.compare( get(), other.get() );
193+
}
194+
197195
@Override
198196
public boolean valueEquals( BoolType t )
199197
{
200198
return get() == t.get();
201199
}
200+
201+
@Override
202+
public boolean equals( final Object obj )
203+
{
204+
return Util.valueEqualsObject( this, obj );
205+
}
206+
207+
@Override
208+
public int hashCode()
209+
{
210+
return Boolean.hashCode( get() );
211+
}
202212
}

src/main/java/net/imglib2/type/logic/NativeBoolType.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import net.imglib2.type.NativeTypeFactory;
4545
import net.imglib2.type.numeric.integer.AbstractIntegerType;
4646
import net.imglib2.util.Fraction;
47+
import net.imglib2.util.Util;
4748

4849
/**
4950
* {@link NativeType} backed by {@code boolean}.
@@ -267,24 +268,22 @@ public boolean valueEquals( final NativeBoolType t )
267268
return get() == t.get();
268269
}
269270

271+
@Override
272+
public boolean equals( Object obj )
273+
{
274+
return Util.valueEqualsObject( this, obj );
275+
}
276+
270277
@Override
271278
public int hashCode()
272279
{
273-
// NB: Use the same hash code as java.lang.Boolean#hashCode().
274280
return Boolean.hashCode( get() );
275281
}
276282

277283
@Override
278284
public int compareTo( final NativeBoolType c )
279285
{
280-
final boolean b1 = get();
281-
final boolean b2 = c.get();
282-
283-
if ( b1 && !b2 )
284-
return 1;
285-
if ( !b1 && b2 )
286-
return -1;
287-
return 0;
286+
return Boolean.compare( get(), c.get() );
288287
}
289288

290289
@Override
@@ -346,5 +345,4 @@ public void setBigInteger( BigInteger b )
346345
{
347346
set( b.compareTo( BigInteger.ZERO ) > 0 );
348347
}
349-
350348
}

0 commit comments

Comments
 (0)