/** * Emits a type cast for passing an argument to a parameterized type. * * @param type compound type with parameters * @param expr argument expression in type instantiation * @param paramIndex index of argument in argument list */ private static boolean emitTypeCast( StringBuilder buffer, CompoundType type, Expression expr, int paramIndex) { boolean cast = false; Parameter param = type.getParameterAt(paramIndex); TypeInterface paramType = TypeReference.getBaseType(param.getType()); if (paramType instanceof StdIntegerType) { StdIntegerType intType = (StdIntegerType) paramType; switch (intType.getType()) { case DataScriptParserTokenTypes.INT8: buffer.append("(byte)("); cast = true; break; case DataScriptParserTokenTypes.UINT8: case DataScriptParserTokenTypes.INT16: buffer.append("(short)("); cast = true; break; default: // nothing } } return cast; }
public void buildParameterLists() { StringBuilder formal = new StringBuilder(); StringBuilder actual = new StringBuilder(); CompoundType compound = getCompoundType(); for (Parameter param : compound.getParameters()) { String paramName = param.getName(); TypeInterface paramType = TypeReference.getBaseType(param.getType()); String typeName = TypeNameEmitter.getTypeName(paramType); formal.append(", "); formal.append(typeName); formal.append(" "); formal.append(paramName); actual.append(", "); actual.append(paramName); } formalParams = formal.toString(); actualParams = actual.toString(); }
public long getMinVal() { if (type instanceof SignedBitFieldType) { BitFieldType bitField = (BitFieldType) type; return -(1 << bitField.getLength() - 1); } if (type instanceof BitFieldType) { return 0; } if (type instanceof StdIntegerType) { StdIntegerType integerType = (StdIntegerType) type; return integerType.getLowerBound().longValue(); } throw new RuntimeException("type of field '" + param.getName() + "' is not a simple type"); }
public String getJavaTypeName() { return TypeNameEmitter.getTypeName(param.getType()); }
public String getName() { return param.getName(); }
public CompoundParameterEmitter(Parameter param, CompoundEmitter j) { global = j; this.param = param; type = TypeReference.getBaseType(param.getType()); }