OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimNitfEngrdaTag Class Reference

#include <ossimNitfEngrdaTag.h>

Inheritance diagram for ossimNitfEngrdaTag:
ossimNitfRegisteredTag ossimObject ossimPropertyInterface ossimReferenced

Classes

class  ossimEngDataElement
 Container class for an Engineering Data Element Record. More...
 

Public Types

enum  {
  RESRC_SIZE = 20, RECNT_SIZE = 3, ENGLN_SIZE = 2, ENGMTXC_SIZE = 4,
  ENGMTXR_SIZE = 4, ENGTYP_SIZE = 1, ENGDTS_SIZE = 1, ENGDATU_SIZE = 2,
  ENGDATC_SIZE = 8, TMP_BUF_SIZE = 128
}
 

Public Member Functions

 ossimNitfEngrdaTag ()
 default constructor More...
 
virtual ~ossimNitfEngrdaTag ()
 destructor More...
 
virtual void parseStream (std::istream &in)
 Method to parse data from stream. More...
 
virtual void writeStream (std::ostream &out)
 Method to write data to stream. More...
 
virtual void clearFields ()
 Method to clear all fields including null terminating. More...
 
virtual std::ostream & print (std::ostream &out, const std::string &prefix=std::string()) const
 Print method that outputs a key/value type format adding prefix to keys. More...
 
- Public Member Functions inherited from ossimNitfRegisteredTag
 ossimNitfRegisteredTag ()
 default constructor More...
 
 ossimNitfRegisteredTag (const std::string &tagName, ossim_uint32 tagLength)
 Constructor that takes name and size. More...
 
virtual ~ossimNitfRegisteredTag ()
 destructor More...
 
virtual std::string getRegisterTagName () const
 This will return the name of the registered tag for this user defined header. More...
 
virtual const std::string & getTagName () const
 This will return the name of the registered tag for this user defined header. More...
 
virtual void setTagName (const std::string &tagName)
 
virtual ossim_uint32 getSizeInBytes () const
 Returns the length in bytes of the tag from the CEL or REL field. More...
 
virtual ossim_uint32 getTagLength () const
 Returns the length in bytes of the tag from the CEL or REL field. More...
 
virtual void setTagLength (ossim_uint32 length)
 Set the tag length. More...
 
virtual void parseStream (ossim::istream &in)=0
 This will allow the user defined data to parse the stream. More...
 
virtual void writeStream (ossim::ostream &out)=0
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 
virtual void getMetadata (ossimKeywordlist &kwl, const char *prefix=0) const
 Default interface to populate keyword list with metadata. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const ossimString &prefix) const
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 
- Public Member Functions inherited from ossimPropertyInterface
 ossimPropertyInterface ()
 
virtual ~ossimPropertyInterface ()
 
virtual void setProperty (const ossimString &name, const ossimString &value)
 
virtual ossimString getPropertyValueAsString (const ossimString &name) const
 
void getPropertyList (std::vector< ossimRefPtr< ossimProperty > > &propertyList) const
 
void setProperties (std::vector< ossimRefPtr< ossimProperty > > &propertyList)
 

Protected Member Functions

std::ostream & printData (std::ostream &out, const ossimEngDataElement &element, ossim_uint32 elIndex, const std::string &prefix) const
 Method to print out a ossimEngDataElement object. More...
 
template<class T >
void getValueAsString (T v, ossim_uint16 w, std::string &s) const
 Method to convert value to a string, padding with zero's, left justified. More...
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

char m_reSrc [RESRC_SIZE+1]
 Type R = Required Type <R> = BCS spaces allowed for entire field. More...
 
char m_reCnt [RECNT_SIZE+1]
 FIELD: RECNT. More...
 
std::vector< ossimEngDataElementm_data
 
- Protected Attributes inherited from ossimNitfRegisteredTag
std::string m_tagName
 
ossim_uint32 m_tagLength
 

Detailed Description

Definition at line 24 of file ossimNitfEngrdaTag.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Constructor & Destructor Documentation

◆ ossimNitfEngrdaTag()

ossimNitfEngrdaTag::ossimNitfEngrdaTag ( )

default constructor

Definition at line 30 of file ossimNitfEngrdaTag.cpp.

References clearFields().

31  : ossimNitfRegisteredTag(std::string("ENGRDA"), 0)
32 {
33  clearFields();
34 }
virtual void clearFields()
Method to clear all fields including null terminating.
ossimNitfRegisteredTag()
default constructor

◆ ~ossimNitfEngrdaTag()

ossimNitfEngrdaTag::~ossimNitfEngrdaTag ( )
virtual

destructor

Definition at line 36 of file ossimNitfEngrdaTag.cpp.

37 {
38 }

Member Function Documentation

◆ clearFields()

void ossimNitfEngrdaTag::clearFields ( )
virtual

Method to clear all fields including null terminating.

Definition at line 149 of file ossimNitfEngrdaTag.cpp.

References m_data, m_reCnt, m_reSrc, RECNT_SIZE, and RESRC_SIZE.

Referenced by ossimNitfEngrdaTag(), and parseStream().

150 {
151  // BCS-N's to '0's, BCS-A's to ' '(spaces)
152 
153  // clear
154  memset(m_reSrc, ' ', RESRC_SIZE);
155  memset(m_reCnt, ' ', RECNT_SIZE);
156  m_data.clear();
157 
158  // null terminate
159  m_reSrc[RESRC_SIZE] = '\0';
160  m_reCnt[RECNT_SIZE] = '\0';
161 }
char m_reCnt[RECNT_SIZE+1]
FIELD: RECNT.
std::vector< ossimEngDataElement > m_data
char m_reSrc[RESRC_SIZE+1]
Type R = Required Type <R> = BCS spaces allowed for entire field.

◆ getValueAsString()

template<class T >
void ossimNitfEngrdaTag::getValueAsString ( v,
ossim_uint16  w,
std::string &  s 
) const
protected

Method to convert value to a string, padding with zero's, left justified.

Parameters
vThe value to convert.
wThe width of the string field.
sThe string to stuff.

Definition at line 236 of file ossimNitfEngrdaTag.cpp.

238 {
240  os << std::setw(w) << std::setfill('0') << setiosflags(ios::right) << v;
241  s = os.str();
242 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35

◆ parseStream()

void ossimNitfEngrdaTag::parseStream ( std::istream &  in)
virtual

Method to parse data from stream.

Definition at line 40 of file ossimNitfEngrdaTag.cpp.

References clearFields(), ENGDATC_SIZE, ENGDATU_SIZE, ENGLN_SIZE, ENGMTXC_SIZE, ENGMTXR_SIZE, m_data, ossimNitfEngrdaTag::ossimEngDataElement::m_engDat, ossimNitfEngrdaTag::ossimEngDataElement::m_engDatC, ossimNitfEngrdaTag::ossimEngDataElement::m_engDatU, ossimNitfEngrdaTag::ossimEngDataElement::m_engDts, ossimNitfEngrdaTag::ossimEngDataElement::m_engLbl, ossimNitfEngrdaTag::ossimEngDataElement::m_engLn, ossimNitfEngrdaTag::ossimEngDataElement::m_engMtxC, ossimNitfEngrdaTag::ossimEngDataElement::m_engMtxR, ossimNitfEngrdaTag::ossimEngDataElement::m_engTyp, m_reCnt, m_reSrc, RECNT_SIZE, RESRC_SIZE, size, TMP_BUF_SIZE, ossimString::toUInt16(), and ossimString::toUInt32().

41 {
42  clearFields();
43 
44  in.read(m_reSrc, RESRC_SIZE);
45  in.read(m_reCnt, RECNT_SIZE);
46 
47  const ossim_uint16 ELEMENT_COUNT = ossimString(m_reCnt).toUInt16();
48 
49  for (ossim_uint16 i = 0; i < ELEMENT_COUNT; ++i)
50  {
51  ossimString os;
52  ossim_uint32 size(0);
53 
54  char buf[TMP_BUF_SIZE];
55 
56  ossimEngDataElement element;
57 
58  // ENGLN - label length field
59  in.read(element.m_engLn, ENGLN_SIZE);
60  element.m_engLn[ENGLN_SIZE] = '\0';
61 
62  // ENGLBL - label field
63  os = element.m_engLn;
64  size = os.toUInt16();
65  in.read(buf, size);
66  buf[size] = '\0';
67  element.m_engLbl = buf;
68 
69  // ENGMTXC - data column count
70  in.read(element.m_engMtxC, ENGMTXC_SIZE);
71  element.m_engMtxC[ENGMTXC_SIZE] = '\0';
72 
73  // ENGMTXR - data row count
74  in.read(element.m_engMtxR, ENGMTXR_SIZE);
75  element.m_engMtxR[ENGMTXR_SIZE] = '\0';
76 
77  // ENGTYP - Value Type of Engineering Data Element.
78  in.get( element.m_engTyp );
79 
80  // ENGDTS - Engineering Data Element Size
81  in.get( element.m_engDts );
82  os = element.m_engDts;
83  ossim_uint32 engDataElementSize = os.toUInt32();
84 
85  // ENGDATU - Engineering Data Units.
86  in.read( element.m_engDatU, ENGDATU_SIZE );
87  element.m_engDatU[ENGDATU_SIZE] = '\0';
88 
89  // ENGDATC - Engineering Data Count
90  in.read(element.m_engDatC, ENGDATC_SIZE);
91  element.m_engDatC[ENGDATC_SIZE] = '\0';
92  os = element.m_engDatC;
93  ossim_uint32 engDataCount = os.toUInt32();
94 
95  // ENGDATA - Engineering Data
96  size = engDataElementSize * engDataCount;
97  element.m_engDat.resize(size);
98  in.read((char*)&(element.m_engDat.front()), size);
99 
100  m_data.push_back(element);
101 
102  } // Matches: for (ossim_uint16 i = 0; i < ELEMENT_COUNT; ++i)
103 }
virtual void clearFields()
Method to clear all fields including null terminating.
char m_reCnt[RECNT_SIZE+1]
FIELD: RECNT.
std::vector< ossimEngDataElement > m_data
ossim_uint32 toUInt32() const
unsigned short ossim_uint16
char m_reSrc[RESRC_SIZE+1]
Type R = Required Type <R> = BCS spaces allowed for entire field.
yy_size_t size
unsigned int ossim_uint32
ossim_uint16 toUInt16() const

◆ print()

std::ostream & ossimNitfEngrdaTag::print ( std::ostream &  out,
const std::string &  prefix = std::string() 
) const
virtual

Print method that outputs a key/value type format adding prefix to keys.

Parameters
outStream to output to.
prefixPrefix added to key like "image0.";

Reimplemented from ossimNitfRegisteredTag.

Definition at line 163 of file ossimNitfEngrdaTag.cpp.

References ossimNitfRegisteredTag::getSizeInBytes(), ossimNitfRegisteredTag::getTagName(), m_data, m_reCnt, m_reSrc, and printData().

165 {
166  std::string pfx = prefix;
167  pfx += getTagName();
168  pfx += ".";
169 
170  const ossim_uint32 W = 17;
171 
172  out << setiosflags(std::ios::left)
173  << pfx << std::setw(W) << "CETAG:"
174  << getTagName() << "\n"
175  << pfx << std::setw(W) << "CEL:" << getSizeInBytes() << "\n"
176  << pfx << std::setw(W) << "RESRC:" << m_reSrc << "\n"
177  << pfx << std::setw(W) << "RECNT:" << m_reCnt << "\n";
178 
179  for (ossim_uint32 i = 0; i < m_data.size(); ++i)
180  {
181  out << pfx << "ENGLN[" << i << std::setw(W-7) << "]:"
182  << m_data[i].m_engLn << "\n"
183  << pfx << "ENGLBL[" << i << std::setw(W-8) << "]:"
184  << m_data[i].m_engLbl << "\n"
185  << pfx << "ENGMTXC[" << i << std::setw(W-9) << "]:"
186  << m_data[i].m_engMtxC << "\n"
187  << pfx << "ENGMTXR[" << i << std::setw(W-9) << "]:"
188  << m_data[i].m_engMtxR << "\n"
189  << pfx << "ENGTYP[" << i << std::setw(W-8) << "]:"
190  << std::string(1, m_data[i].m_engTyp) << "\n"
191  << pfx << "ENGDTS[" << i << std::setw(W-8) << "]:"
192  << std::string(1, m_data[i].m_engDts) << "\n"
193  << pfx << "ENGDATU[" << i << std::setw(W-9) << "]:"
194  << m_data[i].m_engDatU << "\n"
195  << pfx << "ENGDATC[" << i << std::setw(W-9) << "]:"
196  << m_data[i].m_engDat.size() << "\n";
197 
198  printData(out, m_data[i], i, pfx);
199  }
200 
201  return out;
202 }
virtual const std::string & getTagName() const
This will return the name of the registered tag for this user defined header.
char m_reCnt[RECNT_SIZE+1]
FIELD: RECNT.
std::vector< ossimEngDataElement > m_data
char m_reSrc[RESRC_SIZE+1]
Type R = Required Type <R> = BCS spaces allowed for entire field.
std::ostream & printData(std::ostream &out, const ossimEngDataElement &element, ossim_uint32 elIndex, const std::string &prefix) const
Method to print out a ossimEngDataElement object.
unsigned int ossim_uint32
virtual ossim_uint32 getSizeInBytes() const
Returns the length in bytes of the tag from the CEL or REL field.

◆ printData()

std::ostream & ossimNitfEngrdaTag::printData ( std::ostream &  out,
const ossimEngDataElement element,
ossim_uint32  elIndex,
const std::string &  prefix 
) const
protected

Method to print out a ossimEngDataElement object.

Parameters
outStream to print to.
elementThe element to print.
elIndexThe index of the element array index.
prefixThe prefix to add to key.

Definition at line 204 of file ossimNitfEngrdaTag.cpp.

References ossimNitfEngrdaTag::ossimEngDataElement::m_engDat, and ossimNitfEngrdaTag::ossimEngDataElement::m_engTyp.

Referenced by print().

208 {
209  if (element.m_engTyp == 'A')
210  {
211  out << prefix << "ENGDATA[" << elIndex << std::setw(8) << "]:";
212 
213  std::vector<ossim_uint8>::const_iterator i = element.m_engDat.begin();
214  while (i != element.m_engDat.end())
215  {
216  out << static_cast<ossim_int8>(*i);
217  ++i;
218  }
219  out << "\n";
220  }
221  else
222  {
223  out << prefix << "ENGDATA[" << elIndex << std::setw(8) << "]: NOT DISPLAYED\n";
224  if ( traceDebug() )
225  {
227  << "ossimNitfEngrdaTag::printData WARNING unhandled data type."
228  << "Data type = " << (char)element.m_engTyp << "\n"
229  << std::endl;
230  }
231  }
232  return out;
233 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ writeStream()

void ossimNitfEngrdaTag::writeStream ( std::ostream &  out)
virtual

Method to write data to stream.

Definition at line 105 of file ossimNitfEngrdaTag.cpp.

References ENGDATC_SIZE, ENGDATU_SIZE, ENGDTS_SIZE, ENGLN_SIZE, ENGMTXC_SIZE, ENGMTXR_SIZE, ENGTYP_SIZE, m_data, m_reCnt, m_reSrc, RECNT_SIZE, RESRC_SIZE, and ossimString::toUInt16().

106 {
107  //out.write(theAcMsnId, AC_MSN_ID_SIZE);
108  // out.write(theAcTailNo, AC_TAIL_NO_SIZE);
109 
110  out.write(m_reSrc, RESRC_SIZE);
111  out.write(m_reCnt, RECNT_SIZE);
112 
113  const ossim_uint16 ELEMENT_COUNT = ossimString(m_reCnt).toUInt16();
114 
115  for (ossim_uint16 i = 0; i < ELEMENT_COUNT; ++i)
116  {
117  // ENGLN - label length field
118  out.write(m_data[i].m_engLn, ENGLN_SIZE);
119 
120  // ENGLBL - label field
121  out.write(m_data[i].m_engLbl.data(), (std::streamsize)m_data[i].m_engLbl.size());
122 
123  // ENGMTXC - data column count
124  out.write(m_data[i].m_engMtxC, ENGMTXC_SIZE );
125 
126  // ENGMTXR - data row count
127  out.write(m_data[i].m_engMtxR, ENGMTXR_SIZE );
128 
129  // ENGTYP - Value Type of Engineering Data Element.
130  out.write( (char*)(&m_data[i].m_engTyp), ENGTYP_SIZE );
131 
132  // ENGDTS - Engineering Data Element Size
133  out.write((char*)(&m_data[i].m_engDts), ENGDTS_SIZE );
134 
135  // ENGDATU - Engineering Data Units.
136  out.write( m_data[i].m_engDatU, ENGDATU_SIZE );
137 
138  // ENGDATC - Engineering Data Count
139  out.write( m_data[i].m_engDatC, ENGDATC_SIZE );
140 
141  // ENGDATA - Engineering Data NOTE: should be big endian...
142  out.write((char*)&(m_data[i].m_engDat.front()),
143  (std::streamsize)m_data[i].m_engDat.size());
144 
145  } // Matches: for (ossim_uint16 i = 0; i < ELEMENT_COUNT; ++i)
146 
147 }
char m_reCnt[RECNT_SIZE+1]
FIELD: RECNT.
std::vector< ossimEngDataElement > m_data
unsigned short ossim_uint16
char m_reSrc[RESRC_SIZE+1]
Type R = Required Type <R> = BCS spaces allowed for entire field.
ossim_uint16 toUInt16() const

Member Data Documentation

◆ m_data

std::vector<ossimEngDataElement> ossimNitfEngrdaTag::m_data
protected

Definition at line 210 of file ossimNitfEngrdaTag.h.

Referenced by clearFields(), parseStream(), print(), and writeStream().

◆ m_reCnt

char ossimNitfEngrdaTag::m_reCnt[RECNT_SIZE+1]
protected

FIELD: RECNT.

TYPE: BCS-N

3 byte field

Record Entry Count 001 - 999

Definition at line 208 of file ossimNitfEngrdaTag.h.

Referenced by clearFields(), parseStream(), print(), and writeStream().

◆ m_reSrc

char ossimNitfEngrdaTag::m_reSrc[RESRC_SIZE+1]
protected

Type R = Required Type <R> = BCS spaces allowed for entire field.

FIELD: RESRC

TYPE: BCS-A

20 byte field

Unique Source System Name.

Definition at line 197 of file ossimNitfEngrdaTag.h.

Referenced by clearFields(), parseStream(), print(), and writeStream().


The documentation for this class was generated from the following files: