/** * Check if a mapping is valid by checking the multiplicity of both of * the variables if they are arrays * * @param mapping the mapping * @return true if this mapping is valid */ public static boolean multiplicityMatch(VariableMapping mapping) { String leftMult = mapping.getLeftVariable().getMultiplicity(); String rightMult = mapping.getRightVariable().getMultiplicity(); if(leftMult == null){ if(rightMult != null){ return false; } }else{ if(rightMult == null){ return false; }else{ if(!leftMult.equalsIgnoreCase(rightMult)){ return false; } } } return true; }
if (var.getMultiplicity() != null) { source.append("["); source.append(var.getMultiplicity().toUpperCase()); source.append("]");
source.append("_"); source.append(leftVariable.getName()); if (leftVariable.getMultiplicity() != null){ source.append("["); source.append(leftVariable.getMultiplicity()); source.append("]");
/** * Searches a variable in the given list and updates its type and namespace. * * @param var the variable to update. * @param list the variables list. * @return true if the variable has been found and updated. */ protected boolean updateVariableFromList(ShaderNodeVariable var, List<ShaderNodeVariable> list) { for (ShaderNodeVariable shaderNodeVariable : list) { if (shaderNodeVariable.getName().equals(var.getName())) { var.setType(shaderNodeVariable.getType()); var.setMultiplicity(shaderNodeVariable.getMultiplicity()); var.setNameSpace(shaderNode.getName()); return true; } } return false; }
/** * check the types of a mapping, left type must match right type take the * swizzle into account * * @param mapping the mapping * @param statement1 the statement being read * @throws MatParseException */ protected void checkTypes(VariableMapping mapping, Statement statement1) throws MatParseException { if (!ShaderUtils.typesMatch(mapping)) { String ls = mapping.getLeftSwizzling().length() == 0 ? "" : "." + mapping.getLeftSwizzling(); String rs = mapping.getRightSwizzling().length() == 0 ? "" : "." + mapping.getRightSwizzling(); throw new MatParseException("Type mismatch, cannot convert " + mapping.getRightVariable().getType() + rs + " to " + mapping.getLeftVariable().getType() + ls, statement1); } if (!ShaderUtils.multiplicityMatch(mapping)) { String type1 = mapping.getLeftVariable().getType() + "[" + mapping.getLeftVariable().getMultiplicity() + "]"; String type2 = mapping.getRightVariable().getType() + "[" + mapping.getRightVariable().getMultiplicity() + "]"; throw new MatParseException("Type mismatch, cannot convert " + type1 + " to " + type2, statement1); } }
right.setPrefix("m_"); if (left.getMultiplicity() != null) { String multiplicity = left.getMultiplicity(); try { Integer.parseInt(multiplicity);
var.getName(), var.getMultiplicity()); ShaderNodeVariable v = new ShaderNodeVariable(var.getType(), shaderNode.getName(), var.getName(), var.getMultiplicity()); if (!declaredInputs.contains(shaderNode.getName() + "_" + var.getName())) { if (!isVarying(info, v)) {
private void assertEqualsVariables(ShaderNodeVariable v1, ShaderNodeVariable v2) { assertEquals(v1.getName(), v2.getName()); assertEquals(v1.getNameSpace(), v2.getNameSpace()); assertEquals(v1.getMultiplicity(), v2.getMultiplicity()); assertEquals(v1.getType(), v2.getType()); assertEquals(v1.getCondition(), v2.getCondition()); }
right.setMultiplicity(var.getMultiplicity());
/** * Check if a mapping is valid by checking the multiplicity of both of * the variables if they are arrays * * @param mapping the mapping * @return true if this mapping is valid */ public static boolean multiplicityMatch(VariableMapping mapping) { String leftMult = mapping.getLeftVariable().getMultiplicity(); String rightMult = mapping.getRightVariable().getMultiplicity(); if(leftMult == null){ if(rightMult != null){ return false; } }else{ if(rightMult == null){ return false; }else{ if(!leftMult.equalsIgnoreCase(rightMult)){ return false; } } } return true; }
if (var.getMultiplicity() != null) { source.append("["); source.append(var.getMultiplicity().toUpperCase()); source.append("]");
source.append("_"); source.append(mapping.getLeftVariable().getName()); if (mapping.getLeftVariable().getMultiplicity() != null){ source.append("["); source.append(mapping.getLeftVariable().getMultiplicity()); source.append("]");
/** * search a variable in the given list and updates its type and namespace * * @param var the variable to update * @param list the variables list * @return true if the variable has been found and updated */ protected boolean updateVariableFromList(ShaderNodeVariable var, List<ShaderNodeVariable> list) { for (ShaderNodeVariable shaderNodeVariable : list) { if (shaderNodeVariable.getName().equals(var.getName())) { var.setType(shaderNodeVariable.getType()); var.setMultiplicity(shaderNodeVariable.getMultiplicity()); var.setNameSpace(shaderNode.getName()); return true; } } return false; }
/** * check the types of a mapping, left type must match right type take the * swizzle into account * * @param mapping the mapping * @param statement1 the statement being read * @throws MatParseException */ protected void checkTypes(VariableMapping mapping, Statement statement1) throws MatParseException { if (!ShaderUtils.typesMatch(mapping)) { String ls = mapping.getLeftSwizzling().length() == 0 ? "" : "." + mapping.getLeftSwizzling(); String rs = mapping.getRightSwizzling().length() == 0 ? "" : "." + mapping.getRightSwizzling(); throw new MatParseException("Type mismatch, cannot convert " + mapping.getRightVariable().getType() + rs + " to " + mapping.getLeftVariable().getType() + ls, statement1); } if (!ShaderUtils.multiplicityMatch(mapping)) { String type1 = mapping.getLeftVariable().getType() + "[" + mapping.getLeftVariable().getMultiplicity() + "]"; String type2 = mapping.getRightVariable().getType() + "[" + mapping.getRightVariable().getMultiplicity() + "]"; throw new MatParseException("Type mismatch, cannot convert " + type1 + " to " + type2, statement1); } }
var.getName(), var.getMultiplicity()); ShaderNodeVariable v = new ShaderNodeVariable(var.getType(), shaderNode.getName(), var.getName(), var.getMultiplicity()); if (!declaredInputs.contains(shaderNode.getName() + "_" + var.getName())) { if (!isVarying(info, v)) {
right.setName(param.getName()); right.setPrefix("m_"); if(mapping.getLeftVariable().getMultiplicity() != null){ if(!param.getVarType().name().endsWith("Array")){ throw new MatParseException(param.getName() + " is not of Array type", statement); String multiplicity = mapping.getLeftVariable().getMultiplicity(); try { Integer.parseInt(multiplicity);
right.setMultiplicity(var.getMultiplicity()); mapping.setRightVariable(right); storeVaryings(node, mapping.getRightVariable());