This file is indexed.

/usr/include/OTB-6.4/otbAttributesMapLabelObjectWithClassLabel.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
152
153
154
155
156
157
/*
 * 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 otbAttributesMapLabelObjectWithClassLabel_h
#define otbAttributesMapLabelObjectWithClassLabel_h

#include "otbAttributesMapLabelObject.h"

namespace otb
{

/** \class AttributesMapLabelObjectWithClassLabel
 *  \brief An AttributesMapLabelObject with an optional class label.
 *
 *  The label type is defined by the template parameter TClassLabel and
 *  accessible using the ClassLabelType typedef.
 *
 * The HasClassLabel() method returns true if the LabelObject has a
 * class label and false otherwise.
 *
 * The SetClassLabel() method set the class label and set the internal flag
 * m_HasClassLabel to true.
 *
 * The GetClassLabel() method returns the class label or an exception if m_HasClassLabel
 * is set to false.
 *
 * The RemoveClassLabel() method set m_HasClassLabel to false and the
 * class label value to a default value.
 *
 *\sa LabelObject, ShapeLabelObject, StatisticsLabelObject
 *
 * \ingroup DataRepresentation
 *
 * \ingroup OTBLabelMap
 */
template < class TLabel, unsigned int VImageDimension, class TAttributesValue, class TClassLabel >
class ITK_EXPORT AttributesMapLabelObjectWithClassLabel : public AttributesMapLabelObject<TLabel, VImageDimension, TAttributesValue>
{
public:
  /** Standard class typedefs */
  typedef AttributesMapLabelObjectWithClassLabel      Self;
  typedef AttributesMapLabelObject<TLabel,
      VImageDimension, TAttributesValue>  Superclass;
  typedef itk::LabelObject<TLabel, VImageDimension>    LabelObjectType;
  typedef itk::SmartPointer<Self>                     Pointer;
  typedef itk::SmartPointer<const Self>               ConstPointer;
  typedef itk::WeakPointer <const Self>               ConstWeakPointer;

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

  /** Run-time type information (and related methods). */
  itkTypeMacro(AttributesMapLabelObjectWithClassLabel, AttributesMapLabelObject);

  itkStaticConstMacro(ImageDimension, unsigned int, VImageDimension);

  /** Class label typedef */
  typedef TClassLabel                                  ClassLabelType;

  /** Set the class label */
  void SetClassLabel(const ClassLabelType& label)
  {
    m_ClassLabel = label;
    m_HasClassLabel = true;
  }

  /** Get the class label. Throws an exception if no class label is
   *  available */
  const ClassLabelType & GetClassLabel() const
  {
    if(!m_HasClassLabel)
      {
      itkExceptionMacro(<<"LabelObject has no class label!");
      }
    return m_ClassLabel;
  }

  /** \return true if a class label is available */
  bool HasClassLabel() const
  {
    return m_HasClassLabel;
  }

  /** Invalidate the class label if any */
  void RemoveClassLabel()
  {
    m_ClassLabel = itk::NumericTraits<ClassLabelType>::Zero;
    m_HasClassLabel = false;
  }

  void CopyAttributesFrom( const LabelObjectType * lo ) ITK_OVERRIDE
    {
    Superclass::CopyAttributesFrom( lo );

    // copy the data of the current type if possible
    const Self * src = dynamic_cast<const Self *>( lo );
    if( src == ITK_NULLPTR )
      {
      return;
      }

    m_ClassLabel = src->m_ClassLabel;
    m_HasClassLabel = src->m_HasClassLabel;
    }

protected:
  /** Constructor */
  AttributesMapLabelObjectWithClassLabel() : m_ClassLabel(itk::NumericTraits<ClassLabelType>::Zero), m_HasClassLabel(false)
    {}
  /** Destructor */
  ~AttributesMapLabelObjectWithClassLabel() ITK_OVERRIDE {}

  /** The printself method */
  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE
    {
      Superclass::PrintSelf( os, indent );
      if(m_HasClassLabel)
  {
  os<<indent<<"Class Label: "<<m_ClassLabel<<std::endl;
  }
      else
  {
  os<<indent<<"No class label available."<<std::endl;
  }
    }

private:
  AttributesMapLabelObjectWithClassLabel(const Self&); //purposely not implemented
  void operator=(const Self&); //purposely not implemented

  /** The class label */
  ClassLabelType m_ClassLabel;

  /** Does the LabelObject have a class label ? */
  bool           m_HasClassLabel;

};

} // end namespace otb
#endif