private Type getPrimitive(PrimitiveType primitiveType) { switch (primitiveType.getKind()) { case BOOLEAN: return Types.BOOLEAN_P; case BYTE: return Types.BYTE_P; case SHORT: return Types.SHORT_P; case INT: return Types.INT; case LONG: return Types.LONG_P; case CHAR: return Types.CHAR; case FLOAT: return Types.FLOAT_P; case DOUBLE: return Types.DOUBLE_P; default: return null; } }
@Override public Type visitPrimitive(PrimitiveType primitiveType, Boolean p) { switch (primitiveType.getKind()) { case BOOLEAN: return Types.BOOLEAN; case BYTE: return Types.BYTE; case SHORT: return Types.SHORT; case INT: return Types.INTEGER; case LONG: return Types.LONG; case CHAR: return Types.CHARACTER; case FLOAT: return Types.FLOAT; case DOUBLE: return Types.DOUBLE; default: return null; } }
@Override public TypeName visitPrimitive(PrimitiveType t, Void p) { switch (t.getKind()) { case BOOLEAN: return TypeName.BOOLEAN; case BYTE: return TypeName.BYTE; case SHORT: return TypeName.SHORT; case INT: return TypeName.INT; case LONG: return TypeName.LONG; case CHAR: return TypeName.CHAR; case FLOAT: return TypeName.FLOAT; case DOUBLE: return TypeName.DOUBLE; default: throw new AssertionError(); } }
static TypeName box(PrimitiveType primitiveType) { switch (primitiveType.getKind()) { case BYTE: return ClassName.get(Byte.class); case SHORT: return ClassName.get(Short.class); case INT: return ClassName.get(Integer.class); case LONG: return ClassName.get(Long.class); case FLOAT: return ClassName.get(Float.class); case DOUBLE: return ClassName.get(Double.class); case BOOLEAN: return ClassName.get(Boolean.class); case CHAR: return ClassName.get(Character.class); case VOID: return ClassName.get(Void.class); default: throw new AssertionError(); } }
@Override public JType visitPrimitive(PrimitiveType type, Void param) { switch (type.getKind()) { case BOOLEAN: return cm.BOOLEAN; case BYTE: return cm.BYTE; case CHAR: return cm.CHAR; case DOUBLE: return cm.DOUBLE; case FLOAT: return cm.FLOAT; case INT: return cm.INT; case LONG: return cm.LONG; case SHORT: return cm.SHORT; } throw new AssertionError(); }
@Override public String visitPrimitive(PrimitiveType x, State state) { switch (x.getKind()) { case BOOLEAN: return String.valueOf(JniConstants.DESC_BOOLEAN); case BYTE: return String.valueOf(JniConstants.DESC_BYTE); case CHAR: return String.valueOf(JniConstants.DESC_CHAR); case DOUBLE: return String.valueOf(JniConstants.DESC_DOUBLE); case FLOAT: return String.valueOf(JniConstants.DESC_FLOAT); case INT: return String.valueOf(JniConstants.DESC_INT); case LONG: return String.valueOf(JniConstants.DESC_LONG); case SHORT: return String.valueOf(JniConstants.DESC_SHORT); } return super.visitPrimitive(x, state); }
@Override public JExpression visitPrimitive(PrimitiveType type, JExpression param) { String kind = type.getKind().toString(); return JExpr.invoke("as" + kind.charAt(0) + kind.substring(1).toLowerCase(Locale.ENGLISH)).arg(param); }
/** * Returns one of {@link IntUnaryOperator}, {@link LongUnaryOperator} or * {@link DoubleUnaryOperator}, depending on {@code type}. * * @throws IllegalArgumentException if {@code type} is not one of int, long or double */ public static FunctionalType primitiveUnaryOperator(PrimitiveType type) { switch (type.getKind()) { case INT: return new FunctionalType( Type.from(IntUnaryOperator.class), "applyAsInt", ImmutableList.of(type), type); case LONG: return new FunctionalType( Type.from(LongUnaryOperator.class), "applyAsLong", ImmutableList.of(type), type); case DOUBLE: return new FunctionalType( Type.from(DoubleUnaryOperator.class), "applyAsDouble", ImmutableList.of(type), type); default: throw new IllegalArgumentException("No primitive unary operator exists for " + type); } }
@Override public boolean isWholeNumber() { switch (type.getKind()) { case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
@Override public boolean isWholeNumber() { switch (type.getKind()) { case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
@Override public boolean isWholeNumber() { switch (type.getKind()) { case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
@Override public boolean isNumber() { switch (type.getKind()) { case DOUBLE: case FLOAT: case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
@Override public boolean isBoolean() { return this.type.getKind() == TypeKind.BOOLEAN; }
public TypeKind getKind() { return this.type.getKind(); } }
@Override public boolean isBoolean() { return this.type.getKind() == TypeKind.BOOLEAN; }
@Override public boolean isWholeNumber() { switch (type.getKind()) { case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
@Override public boolean isNumber() { switch (type.getKind()) { case DOUBLE: case FLOAT: case INT: case LONG: case SHORT: case BYTE: //todo: verify 'byte' serialization? return true; } return false; }
public TypeKind getKind() { return this.type.getKind(); } }
public TypeKind getKind() { return this.type.getKind(); } }
public Boolean visitPrimitive(PrimitiveType t, Void p) { TypeKind tk = t.getKind(); return (tk == TypeKind.LONG || tk == TypeKind.DOUBLE); } };