private void _iter(IArgumentType arg) { if (arg.isEnumType()) { for (INameValuePair nvp : arg.getValues()) { iterate(arg, nvp.getArgTypes(), nvp.getName()); } } else if (arg.isIndexedType()) { iterateIndexedChildren(arg.getChildren()); } }
private void iterateIndexedChildren(IArgumentType[] args) { for (IArgumentType subArg : args) { if (!subArg.isIndexedType()) { iter(subArg); } else { iterateIndexedChildren(subArg.getChildren()); } } }
private void iterate(IArgumentType parent, IArgumentType[] args, String value) { // Recurse with bredth first, not depth for (IArgumentType arg : args) { if (isValidArg(parent, value) && !arg.isIndexedType()) { boolean result = iter(arg); if (!result) return; } } for (IArgumentType arg : args) { if (isValidArg(parent, value)) { _iter(arg); } } }