This file is indexed.

/usr/include/OTB-6.4/otbPatternSampler.h is in libotb-dev 6.4.0+dfsg-1.

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
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
 *
 * This file is part of Orfeo Toolbox
 *
 *     https://www.orfeo-toolbox.org/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef otbPatternSampler_h
#define otbPatternSampler_h

#include "otbSamplerBase.h"

namespace otb
{

/**
 * \class PatternSampler
 *
 * \brief Periodic sampler for iteration loops
 * 
 * This class allows doing periodic sampling during an iteration loop.
 *
 * \ingroup OTBStatistics
 */
class ITK_EXPORT PatternSampler : public SamplerBase
{
public:
  typedef PatternSampler  Self;
  typedef SamplerBase      Superclass;
  typedef itk::SmartPointer<Self>       Pointer;
  typedef itk::SmartPointer<const Self> ConstPointer;

  /** Internal parameters, only contains an offset to shift the periodic 
   * sampling
   */
  typedef struct Parameter
    {
    /** Maximum size of the internal patterns */
    unsigned long MaxPatternSize = 0;

    /** First sampling pattern */
    std::vector<bool> Pattern1;

    /** Second sampling pattern (can be empty).
     * It is called when the first pattern returns false */
    std::vector<bool> Pattern2;

    /** Seed used to randomly generate patterns (used only if greater than 0) */
    unsigned int Seed = 0;

    bool operator!=(const struct Parameter  & param) const;
    } ParameterType; 

  /** Method for creation through the object factory. */
  itkNewMacro(Self);

  /** Runtime information support. */
  itkTypeMacro(PatternSampler,SamplerBase);

  /** Setter for internal parameters */
  void SetParameters(const ParameterType &param)
    {
    if (m_Parameters != param)
      {
      this->Modified();
      m_Parameters = param;
      }
    }

  /** Getter for internal parameters */
  ParameterType GetParameters()
    {
    return m_Parameters;
    }

  /**
   * Method that resets the internal state of the sampler
   */
  void Reset(void) ITK_OVERRIDE;

  /**
   * Method to call during iteration, returns true if the sample is selected,
   * and false otherwise.
   */
  bool TakeSample(void);

  /** Import sampling patterns from an input string
   *  Two patterns may be given, separated by a slash
   *  Beware, the second pattern may be empty
   */
  static void ImportPatterns(
    const std::string &data,
    ParameterType &param);

  /** Export the sampling patterns in the input parameter to
   *  an output string. If the second pattern is not empty, it will be
   *  concatenated to the output string, separated by a slash
   */
  static void ExportPatterns(
    const ParameterType &param,
    std::string &data);

protected:
  /** Constructor */
  PatternSampler();

  /** Destructor */
  ~PatternSampler() ITK_OVERRIDE {}

private:
  // Not implemented
  PatternSampler(const Self&);
  void operator=(const Self&);

  /** Generate a random array of booleans */
  std::vector<bool> RandArray(unsigned long N,unsigned long T);

  /** Find a suitable size for internal patterns */
  unsigned long FindBestSize(unsigned long tot);

  /** Internal parameters for the sampler */
  ParameterType m_Parameters;

  /** Index tracking the position in first internal pattern */
  unsigned long m_Index1;

  /** Index tracking the position in the second internal pattern */
  unsigned long m_Index2;

  /** Helper function to decode boolean sequence
   *  Caracters converted into true : '1' 'X' 'y' 'Y' '|' '+'
   *  Caracters converted into false : '0' '_' 'n' 'N' '.' '-'
   *  Other caracters will return a 2 */
  static unsigned int ParseSymbol(const char &s);
};

} // namespace otb
#endif