LCOV - code coverage report
Current view: top level - utils - var_uint.dart (source / functions) Coverage Total Hit
Test: lcov.info Lines: 59.1 % 66 39
Test Date: 2025-01-30 01:10:00 Functions: - 0 0

            Line data    Source code
       1              : import 'dart:typed_data';
       2              : 
       3              : extension ByteUtil on ByteData {
       4            6 :   int writeUint64(int offset, int val) {
       5            6 :     setInt64(offset, val, Endian.little);
       6              :     return 8;
       7              :   }
       8              : 
       9            6 :   int writeUint32(int offset, int val) {
      10            6 :     setUint32(offset, val, Endian.little);
      11              :     return 4;
      12              :   }
      13              : 
      14            0 :   int writeUint24(int offset, int value) {
      15            0 :     setUint8(offset, (value & 0xff0000) >> 16); //most significant byte
      16            0 :     setUint8(offset + 1, (value & 0x00ff00) >> 8); //middle byte
      17            0 :     setUint8(offset + 2, value & 0x0000ff); //least significant byte
      18              :     return 3;
      19              :   }
      20              : 
      21            1 :   int writeUint16(int offset, int val) {
      22            1 :     setUint16(offset, val, Endian.little);
      23              :     return 2;
      24              :   }
      25              : 
      26            3 :   int writeUint8(int offset, int val) {
      27            3 :     setUint8(offset, val);
      28              :     return 1;
      29              :   }
      30              : 
      31            6 :   int writeVarInt(int offset, int val) {
      32            6 :     if (val < 0xfd) {
      33            6 :       setUint8(offset, val);
      34              :       return 1;
      35              :     }
      36            0 :     if (val <= 0xffff) {
      37            0 :       setUint8(offset, 0xfd);
      38            0 :       setUint16(offset + 1, val, Endian.little);
      39              :       return 3;
      40              :     }
      41            0 :     if (val <= 0xffffffff) {
      42            0 :       setUint8(offset, 0xfe);
      43            0 :       setUint32(offset + 1, val, Endian.little);
      44              :       return 5;
      45              :     }
      46              : 
      47            0 :     setUint8(offset, 0xff);
      48            0 :     setUint64(offset + 1, val, Endian.little);
      49              :     return 9;
      50              :   }
      51              : 
      52            3 :   (int, int) readUint64(int offset) {
      53            3 :     return (getInt64(offset, Endian.little), 8);
      54              :   }
      55              : 
      56            3 :   (int, int) readUint32(int offset) {
      57            3 :     return (getUint32(offset, Endian.little), 4);
      58              :   }
      59              : 
      60            1 :   (int, int) readUint16(int offset) {
      61            1 :     return (getUint16(offset, Endian.little), 2);
      62              :   }
      63              : 
      64            2 :   (int, int) readUint8(int offset) {
      65            2 :     return (getUint8(offset), 1);
      66              :   }
      67              : 
      68            3 :   (int, int) readVarInt(int offset) {
      69            3 :     final firstByte = getUint8(offset);
      70            3 :     if (firstByte < 0xfd) {
      71              :       return (firstByte, 1);
      72              :     }
      73            0 :     if (firstByte == 0xfd) {
      74            0 :       return (getUint16(offset + 1, Endian.little), 3);
      75              :     }
      76            0 :     if (firstByte == 0xfe) {
      77            0 :       return (getUint32(offset + 1, Endian.little), 5);
      78              :     }
      79            0 :     return (getUint64(offset + 1, Endian.little), 9);
      80              :   }
      81              : 
      82            0 :   int readVarIntFromLength(
      83              :     int offset,
      84              :     int length,
      85              :     Endian endian,
      86              :   ) {
      87            0 :     if (length < 0xfd) {
      88            0 :       return getUint8(offset);
      89              :     }
      90            0 :     if (length == 0xfd) {
      91            0 :       return getUint16(offset, endian);
      92              :     }
      93            0 :     if (length == 0xfe) {
      94            0 :       return getUint32(offset, endian);
      95              :     }
      96            0 :     return getUint64(offset, endian);
      97              :   }
      98              : }
      99              : 
     100              : extension BufferUtil on Uint8List {
     101           36 :   ByteData get bytes => buffer.asByteData();
     102              : 
     103            8 :   int writeSlice(int offset, Uint8List slice) {
     104           24 :     setRange(offset, offset + slice.length, slice);
     105            8 :     return slice.length;
     106              :   }
     107              : 
     108            3 :   (Uint8List, int) readSlice(int offset, int length) {
     109            6 :     return (sublist(offset, offset + length), length);
     110              :   }
     111              : 
     112            6 :   int writeVarSlice(int offset, Uint8List slice) {
     113              :     var diff = 0;
     114           24 :     diff += bytes.writeVarInt(offset, slice.length);
     115           18 :     diff += writeSlice(offset + diff, slice);
     116              :     return diff;
     117              :   }
     118              : 
     119            3 :   (Uint8List, int) readVarSlice(int offset) {
     120            6 :     final (length, lengthByteLength) = bytes.readVarInt(offset);
     121              :     final (slice, sliceByteLength) =
     122            6 :         readSlice(offset + lengthByteLength, length);
     123            3 :     return (slice, lengthByteLength + sliceByteLength);
     124              :   }
     125              : }
     126              : 
     127            3 : int varSliceSize(Uint8List slice) {
     128           12 :   return encodingLength(slice.length) + slice.length;
     129              : }
     130              : 
     131            3 : int encodingLength(int number) {
     132              :   // if (!isUint(number, 53)) throw ArgumentError("Expected UInt53");
     133            3 :   return (number < 0xfd
     134              :       ? 1
     135            0 :       : number <= 0xffff
     136              :           ? 3
     137            0 :           : number <= 0xffffffff
     138              :               ? 5
     139              :               : 9);
     140              : }
        

Generated by: LCOV version 2.0-1