Exemplo n.º 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());
   }
 }
Exemplo n.º 2
0
 private void iterateIndexedChildren(IArgumentType[] args) {
   for (IArgumentType subArg : args) {
     if (!subArg.isIndexedType()) {
       iter(subArg);
     } else {
       iterateIndexedChildren(subArg.getChildren());
     }
   }
 }
Exemplo n.º 3
0
 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);
     }
   }
 }
Exemplo n.º 4
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);
  }