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()); } }
@Override INameValuePair decodeToNV(final IArgumentType argType) { if (!isInt(argType)) return null; int result = 0; int[] data = protocol.getDataAsInts(); if (argType.getSizeInBytes() >= 4 && protocol.isMsbFirst()) { for (int i = 0; i < Math.min(4, argType.getSizeInBytes()); i++) { result += data[argType.getStartByteIndex() + i] << ((argType.getSizeInBytes() - 1 - i) * 8); } } else { for (int i = 0; i < argType.getSizeInBytes(); i++) { result += data[argType.getStartByteIndex() + i] << (i * 8); } } if (argType.isEnumType()) { return argType.nvpOf(result); } return new NameValuePair(argType.nameOf(result), result); }