示例#1
0
 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());
   }
 }
示例#2
0
  @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);
  }