1 package org.simantics.databoard.annotations;
\r
3 import java.lang.annotation.Annotation;
\r
4 import java.lang.reflect.Array;
\r
5 import java.util.Arrays;
\r
7 public class ArgumentImpl implements Arguments {
\r
12 public ArgumentImpl(Class<?>...args) {
\r
13 hash = Arrays.hashCode(args);
\r
19 * Drop first arguments from an argument list.
\r
20 * If all were dropped, null is returned.
\r
22 * @param src source argument or null
\r
23 * @param count argument count
\r
24 * @return Argument or null.
\r
26 public static Arguments dropArguments(Arguments src, int count) {
\r
27 if (src==null) return null;
\r
28 int newLen = src.value().length - count;
\r
29 if (newLen<=0) return null;
\r
30 Class<?>[] newList = (Class<?>[]) Array.newInstance(Class.class, newLen);
\r
31 System.arraycopy(src.value(), count, newList, 0, newLen);
\r
32 return new ArgumentImpl(newList);
\r
36 public Class<? extends Annotation> annotationType() {
\r
37 return Arguments.class;
\r
41 public Class<?>[] value() {
\r
46 public int hashCode() {
\r
51 public boolean equals(Object obj) {
\r
52 if ( obj instanceof Arguments == false ) return false;
\r
53 Arguments other = (Arguments) obj;
\r
54 Class<?>[] classArray1 = args;
\r
55 Class<?>[] classArray2 = other.value();
\r
57 return Arrays.deepEquals(classArray1, classArray2);
\r