getBestCodec<T> static method

int getBestCodec<T>(
  1. List<BitCodec<T>> codecs,
  2. T value
)

Implementation

static int getBestCodec<T>(List<BitCodec<T>> codecs, T value) {
  int bestCodec = -1;
  int smallest = -1;

  for (int i = 0; i < codecs.length; i++) {
    int size = getCodecWrittenSize(codecs[i], value);
    if (size >= 0 && (smallest == -1 || size < smallest)) {
      smallest = size;
      bestCodec = i;
    }
  }

  if (bestCodec == -1) throw Exception("No codec could write $value");

  return bestCodec;
}