This file is indexed.

/usr/include/srecord/input/filter/checksum.h is in libsrecord-dev 1.56-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//
// srecord - manipulate eprom load files
// Copyright (C) 1998, 1999, 2001, 2002, 2005-2008, 2010 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see
// <http://www.gnu.org/licenses/>.
//

#ifndef SRECORD_INPUT_FILTER_CHECKSUM_H
#define SRECORD_INPUT_FILTER_CHECKSUM_H


#include <srecord/endian.h>
#include <srecord/interval.h>
#include <srecord/input/filter.h>
#include <srecord/record.h>

namespace srecord {

/**
  * The srecord::input_filter_checksum class is an abstraction of various
  * checksums to be ammplied to input sources.
  */
class input_filter_checksum:
    public input_filter
{
public:
    /**
      * The destructor.
      */
    virtual ~input_filter_checksum();

protected:
    // See bas class for documentation.
    bool read(record &record);

    /**
      * The constructor.
      * May only be called by derived classes.
      *
      * @param deeper
      *     The deeper input source being checksummed.
      * @param address
      *     The address to place the checksum.
      * @param length
      *     The number of bytes of checksum to be placed into the result.
      * @param end
      *     The byte order
      * @param width
      *     The width of the values being summed.  Usually 1 byte, but
      *     wider combinations are possible.  If you use something
      *     wider, it is assumed that they are alligned on multiples of
      *     that width, no provision for an offset is provided.
      */
    input_filter_checksum(input::pointer deeper, int address,
        int length, endian_t end, int width = 1);

    typedef unsigned long sum_t;

    /**
      * The checksum_address instance variable is used to remember where
      * to place the checksum at the end of the data.
      */
    int checksum_address;

    /**
      * The length instance variable is used to remember how many bytes
      * of checksum are to be emitted.
      */
    int length;

    /**
      * The end instance variable is used to remember whether the
      * summation for the checksum is bigendian or little endian.
      */
    endian_t end;

    /**
      * The sum instance variable is used to remember the running
      * checksum of the incoming data source.
      */
    sum_t sum;

    /**
      * The width instance variable is used to remember the swathe width
      * as the incming bytes are added to the running sum.
      */
    int width;

    /**
      * The calculate method is used to calculate the checksum to be
      * written into the output, based on the "sum" instance variable.
      */
    virtual sum_t calculate() = 0;

    /**
      * The generate method is used to generate the final data record,
      * once all of the deeper input has been passed through, based on
      * the calculated checksum.
      *
      * @param record
      *     Where to place the returned data.
      * @returns
      *     bool; false if end-of-file, true if data available
      */
    bool generate(record &record);

private:
    /**
      * The default constructor.  Do not use.
      */
    input_filter_checksum();

    /**
      * The copy constructor.  Do not use.
      */
    input_filter_checksum(const input_filter_checksum &);

    /**
      * The assignment operator.  Do not use.
      */
    input_filter_checksum &operator=(const input_filter_checksum &);
};

};

#endif // SRECORD_INPUT_FILTER_CHECKSUM_H