# Global Metrics

path: .metrics.loc.lloc
old: 456.0
new: 0.0
path: .metrics.loc.sloc
old: 1345.0
new: 80.0
path: .metrics.loc.cloc
old: 273.0
new: 18.0
path: .metrics.loc.blank
old: 152.0
new: 13.0
path: .metrics.loc.ploc
old: 920.0
new: 49.0
path: .metrics.nom.total
old: 43.0
new: 2.0
path: .metrics.nom.functions
old: 43.0
new: 2.0
path: .metrics.cyclomatic.average
old: 6.0227272727272725
new: 1.0
path: .metrics.cyclomatic.sum
old: 265.0
new: 6.0
path: .metrics.cognitive.average
old: 9.0
new: 0.0
path: .metrics.cognitive.sum
old: 387.0
new: 0.0
path: .metrics.nargs.average
old: 1.162790697674419
new: 0.0
path: .metrics.nargs.sum
old: 50.0
new: 0.0
path: .metrics.mi.mi_sei
old: -105.85345950646766
new: 47.73817302679756
path: .metrics.mi.mi_original
old: -61.875434451006925
new: 61.901111329607446
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 36.19948030971196
path: .metrics.nexits.average
old: 2.3255813953488373
new: 0.0
path: .metrics.nexits.sum
old: 100.0
new: 0.0
path: .metrics.halstead.N2
old: 1882.0
new: 75.0
path: .metrics.halstead.vocabulary
old: 386.0
new: 53.0
path: .metrics.halstead.time
old: 199885.21647476233
new: 637.5720982162607
path: .metrics.halstead.volume
old: 40900.09549739606
new: 1168.4957727308924
path: .metrics.halstead.difficulty
old: 87.96883852691218
new: 9.821428571428571
path: .metrics.halstead.bugs
old: 7.826739246987825
new: 0.1695950936262192
path: .metrics.halstead.purity_ratio
old: 0.6626237625427639
new: 1.2967209782437168
path: .metrics.halstead.n2
old: 353.0
new: 42.0
path: .metrics.halstead.level
old: 0.01136766173960648
new: 0.10181818181818182
path: .metrics.halstead.estimated_program_length
old: 3154.089109703556
new: 264.53107956171823
path: .metrics.halstead.N1
old: 2878.0
new: 129.0
path: .metrics.halstead.effort
old: 3597933.896545722
new: 11476.297767892693
path: .metrics.halstead.length
old: 4760.0
new: 204.0
path: .metrics.halstead.n1
old: 33.0
new: 11.0

# Spaces Data

## Minimal test - lines (15, 78)

path: .spaces[0].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[0].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[0].metrics.halstead.n1
old: 6.0
new: 11.0
path: .spaces[0].metrics.halstead.level
old: 0.2777777777777778
new: 0.0998719590268886
path: .spaces[0].metrics.halstead.estimated_program_length
old: 27.11941547876375
new: 244.18443434063795
path: .spaces[0].metrics.halstead.effort
old: 186.8093074064141
new: 11302.183805677076
path: .spaces[0].metrics.halstead.n2
old: 5.0
new: 39.0
path: .spaces[0].metrics.halstead.N1
old: 9.0
new: 129.0
path: .spaces[0].metrics.halstead.N2
old: 6.0
new: 71.0
path: .spaces[0].metrics.halstead.length
old: 15.0
new: 200.0
path: .spaces[0].metrics.halstead.vocabulary
old: 11.0
new: 50.0
path: .spaces[0].metrics.halstead.time
old: 10.378294855911893
new: 627.8991003153931
path: .spaces[0].metrics.halstead.difficulty
old: 3.6
new: 10.012820512820513
path: .spaces[0].metrics.halstead.bugs
old: 0.01089292262669305
new: 0.16787537244799708
path: .spaces[0].metrics.halstead.volume
old: 51.89147427955946
new: 1128.7712379549448
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.8079610319175832
new: 1.2209221717031895
path: .spaces[0].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[0].metrics.nom.functions
old: 1.0
new: 2.0
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 5.0
path: .spaces[0].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 38.55315348858419
path: .spaces[0].metrics.mi.mi_original
old: 132.43687749961728
new: 65.92589246547895
path: .spaces[0].metrics.mi.mi_sei
old: 115.46699426690871
new: 49.86960320477696
path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 11.0
path: .spaces[0].metrics.loc.sloc
old: 3.0
new: 64.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 10.0
path: .spaces[0].metrics.loc.ploc
old: 3.0
new: 43.0
path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 0.0
path: .spaces[0].metrics.nargs.average
old: 1.0
new: 0.0
path: .spaces[0].metrics.nargs.sum
old: 1.0
new: 0.0

### Code

    namespace mozilla {
    namespace detail {

    //
    // Utility class providing primitives necessary to build streams based
    // on the snappy compressor.  This essentially abstracts the framing format
    // defined in:
    //
    //  other-licences/snappy/src/framing_format.txt
    //
    // NOTE: Currently only the StreamIdentifier and CompressedData chunks are
    //       supported.
    //
    class SnappyFrameUtils {
     public:
      enum ChunkType {
        Unknown,
        StreamIdentifier,
        CompressedData,
        UncompressedData,
        Padding,
        Reserved,
        ChunkTypeCount
      };

      static const size_t kChunkTypeLength = 1;
      static const size_t kChunkLengthLength = 3;
      static const size_t kHeaderLength = kChunkTypeLength + kChunkLengthLength;
      static const size_t kStreamIdentifierDataLength = 6;
      static const size_t kCRCLength = 4;

      static nsresult WriteStreamIdentifier(char* aDest, size_t aDestLength,
                                            size_t* aBytesWrittenOut);

      static nsresult WriteCompressedData(char* aDest, size_t aDestLength,
                                          const char* aData, size_t aDataLength,
                                          size_t* aBytesWrittenOut);

      static nsresult ParseHeader(const char* aSource, size_t aSourceLength,
                                  ChunkType* aTypeOut, size_t* aDataLengthOut);

      static nsresult ParseData(char* aDest, size_t aDestLength, ChunkType aType,
                                const char* aData, size_t aDataLength,
                                size_t* aBytesWrittenOut, size_t* aBytesReadOut);

      static nsresult ParseStreamIdentifier(char* aDest, size_t aDestLength,
                                            const char* aData, size_t aDataLength,
                                            size_t* aBytesWrittenOut,
                                            size_t* aBytesReadOut);

      static nsresult ParseCompressedData(char* aDest, size_t aDestLength,
                                          const char* aData, size_t aDataLength,
                                          size_t* aBytesWrittenOut,
                                          size_t* aBytesReadOut);

      static size_t MaxCompressedBufferLength(size_t aSourceLength);

     protected:
      SnappyFrameUtils() = default;
      virtual ~SnappyFrameUtils() = default;
    };

    }  // namespace detail
    }  // namespace mozilla