00001 // vil_nitf2: Written by Harry Voorhees (hlv@) and Rob Radtke (rob@) of 00002 // Stellar Science Ltd. Co. (stellarscience.com) for 00003 // Air Force Research Laboratory, 2005. 00004 00005 #include "vil_nitf2.h" 00006 #include "vil_nitf2_field.h" 00007 #include "vil_nitf2_field_formatter.h" 00008 #include "vil_nitf2_field_definition.h" 00009 #include "vil_nitf2_index_vector.h" 00010 00011 vil_nitf2::enum_field_type vil_nitf2_field::type() const 00012 { 00013 if (m_definition && m_definition->formatter) { 00014 return m_definition->formatter->field_type; 00015 } else { 00016 return vil_nitf2::type_undefined; 00017 } 00018 } 00019 00020 vcl_string vil_nitf2_field::tag() const 00021 { 00022 return m_definition->tag; 00023 } 00024 00025 vcl_string vil_nitf2_field::pretty_name() const 00026 { 00027 return m_definition->pretty_name; 00028 } 00029 00030 vcl_string vil_nitf2_field::description() const 00031 { 00032 return m_definition->description; 00033 } 00034 00035 vil_nitf2_field::field_tree* vil_nitf2_field::get_tree( ) const 00036 { 00037 field_tree* tr = new field_tree; 00038 tr->columns.push_back( tag() ); 00039 tr->columns.push_back( pretty_name() ); 00040 return tr; 00041 } 00042 00043 vil_nitf2_field::field_tree::~field_tree() 00044 { 00045 for( unsigned int i = 0 ; i < children.size() ; i++ ){ 00046 delete children[i]; 00047 } 00048 children.clear(); 00049 } 00050 00051 vil_nitf2_scalar_field* vil_nitf2_field::scalar_field() 00052 { 00053 if (num_dimensions()==0) { 00054 return (vil_nitf2_scalar_field*) this; 00055 } else { 00056 return 0; 00057 } 00058 } 00059 00060 vil_nitf2_array_field* vil_nitf2_field::array_field() 00061 { 00062 if (num_dimensions()>0) { 00063 return (vil_nitf2_array_field*) this; 00064 } else { 00065 return 0; 00066 } 00067 } 00068 00069 vcl_ostream& operator << (vcl_ostream& os, const vil_nitf2_field& field) 00070 { 00071 return field.output(os); 00072 }
1.5.1