private String buildString() { switch (type) { case Action: return PArray.valueOf(PString.valueOf(type), properties).toString(); case Function: return PArray.valueOf( PString.valueOf(type), PArray.valueOf(inputs), PArray.valueOf(outputs), properties) .toString(); default: return PArray.valueOf( PString.valueOf(type), PArray.valueOf(outputs), PArray.valueOf(defaults), properties) .toString(); } }
private static ControlInfo parseProperty(String string, Type type, PArray array) throws Exception { // array(1) is outputs PArray args = PArray.coerce(array.get(1)); ArgumentInfo[] outputs = new ArgumentInfo[args.getSize()]; for (int i = 0; i < outputs.length; i++) { outputs[i] = ArgumentInfo.coerce(args.get(i)); } ArgumentInfo[] inputs = type == Type.ReadOnlyProperty ? EMPTY_INFO : outputs; // array(2) is defaults args = PArray.coerce(array.get(2)); Argument[] defs = new Argument[args.getSize()]; for (int i = 0; i < defs.length; i++) { defs[i] = PString.coerce(args.get(i)); } // optional array(3) is properties PMap properties; if (array.getSize() > 3) { properties = PMap.coerce(array.get(3)); } else { properties = PMap.EMPTY; } return new ControlInfo(inputs, outputs, defs, type, properties, string); }