/usr/include/OTB-5.8/otbAttributesMapLabelObjectWithClassLabel.h is in libotb-dev 5.8.0+dfsg-3.
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 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#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
|