/** * @return The size of one vertex in octets */ @Value.Derived default int vertexSizeOctets() { int size = 0; for (final SMFAttribute a : this.attributesOrdered()) { size = Math.addExact(size, a.sizeOctets()); } return size; }
/** * @return The packed attributes by octet offset */ @Value.Derived default SortedMap<Integer, SMFByteBufferPackedAttribute> packedAttributesByOffset() { TreeMap<Integer, SMFByteBufferPackedAttribute> output = TreeMap.empty(); final Seq<SMFAttribute> ordered = this.attributesOrdered(); int offset = 0; for (int index = 0; index < ordered.size(); ++index) { final SMFAttribute attr = ordered.get(index); final SMFByteBufferPackedAttribute packed = SMFByteBufferPackedAttribute.of(attr, index, offset); output = output.put(Integer.valueOf(offset), packed); offset = Math.addExact(offset, attr.sizeOctets()); } return output; }