13 # include <vcl_msvc_warnings.h> 24 for (
auto & it : *
this)
31 return field_definitions;
36 std::string tag_prefix, std::string pretty_name_prefix)
41 std::make_pair(version, std::make_pair(tag_prefix, pretty_name_prefix));
44 field_defs = map_entry->second;
47 add_field_defs(field_defs, version, tag_prefix, pretty_name_prefix);
52 assert(!
"vil_nitf2_classification::get_field_definitions() called with unsupported version!");
58 std::string tag_prefix,
const std::string& pretty_name_prefix)
60 const std::string& tp = tag_prefix;
61 const std::string np = pretty_name_prefix +
" ";
66 .field(tp+
"SCLAS", np+
"Security Classification",
68 .value(
"T",
"Top Secret")
70 .value(
"C",
"Confidential")
71 .value(
"R",
"Restricted")
72 .value(
"U",
"Unclassified")),
73 false,
nullptr,
nullptr)
74 .field(tp+
"SCODE", np+
"Codewords",
NITF_STR_ECSA(40),
true,
nullptr,
nullptr)
75 .field(tp+
"SCTLH", np+
"Control and Handling",
NITF_STR_ECSA(40),
true,
nullptr,
nullptr)
76 .field(tp+
"SREL", np+
"Releasing Instructions",
NITF_STR_ECSA(40),
true,
nullptr,
nullptr)
77 .field(tp+
"SCAUT", np+
"Classification Authority",
NITF_STR_ECSA(20),
true,
nullptr,
nullptr)
78 .field(tp+
"SCTLN", np+
"Security Control Number",
NITF_STR_ECSA(20),
true,
nullptr,
nullptr)
79 .field(tp+
"SDWNG", np+
"Security Downgrade",
NITF_STR_ECSA(6),
true,
nullptr,
nullptr)
80 .field(tp+
"SDEVT", np+
"Downgrading Event",
NITF_STR_ECSA(40),
true,
nullptr,
85 .field(tp+
"SCLAS", np+
"Security Classification",
87 .value(
"T",
"Top Secret")
89 .value(
"C",
"Confidential")
90 .value(
"R",
"Restricted")
91 .value(
"U",
"Unclassified")),
92 false,
nullptr,
nullptr)
93 .field(tp+
"SCLSY", np+
"Security Classification System",
NITF_STR_ECSA(2),
true,
nullptr,
nullptr)
94 .field(tp+
"SCODE", np+
"Codewords",
NITF_STR_ECSA(11),
true,
nullptr,
nullptr)
95 .field(tp+
"SCTLH", np+
"Control and Handling",
NITF_STR_ECSA(2),
true,
nullptr,
nullptr)
96 .field(tp+
"SREL", np+
"Releasing Instructions",
NITF_STR_ECSA(20),
true,
nullptr,
nullptr)
98 .field(tp+
"SDCTP", np+
"Declassification Type",
NITF_STR_ECSA(2),
true,
nullptr,
nullptr)
100 .field(tp+
"SDCDT", np+
"Declassification Date",
NITF_DAT(8),
true,
nullptr,
nullptr)
102 .field(tp+
"SDCXM", np+
"Declassification Exemption",
NITF_STR_ECSA(4),
true,
nullptr,
nullptr)
103 .field(tp+
"SDG", np+
"Downgrade",
105 .value(
"S",
"Secret")
106 .value(
"C",
"Confidential")
107 .value(
"R",
"Restricted")),
108 true,
nullptr,
nullptr)
110 .field(tp+
"SDGDT", np+
"Downgrade Date",
NITF_DAT(8),
true,
nullptr,
nullptr)
111 .field(tp+
"SCLTX", np+
"Classification Text",
NITF_STR_ECSA(43),
true,
nullptr,
nullptr)
112 .field(tp+
"SCATP", np+
"Classification Authority Type",
114 .value(
"O",
"Original classification authority")
115 .value(
"D",
"Derivative from a single source")
116 .value(
"M",
"Derivative from multiple sources")),
117 true,
nullptr,
nullptr)
118 .field(tp+
"SCAUT", np+
"Classification Authority",
NITF_STR_ECSA(40),
true,
nullptr,
nullptr)
119 .field(tp+
"SCRSN", np+
"Classification Reason",
121 .value(
"A",
"Military plans, weapons systems, or operations")
122 .value(
"B",
"Foreign government information")
123 .value(
"C",
"Intelligence activities (including special activities), intelligence sources or methods, or cryptology")
124 .value(
"D",
"Foreign relations or foreign activities of the United States, including confidential sources")
125 .value(
"E",
"Scientific, technological, or economic matters relating to national security")
126 .value(
"F",
"United States Government programs for safeguarding nuclear materials or facilities")
127 .value(
"G",
"Vulnerabilities or capabilities of systems, installations, projects or plans relating to the national security")),
128 true,
nullptr,
nullptr)
130 .field(tp+
"SSRDT", np+
"Security Source Date",
NITF_DAT(8),
true,
nullptr,
nullptr)
131 .field(tp+
"SCTLN", np+
"Security Control Number",
NITF_STR_ECSA(15),
true,
nullptr,
nullptr);
134 assert(!
"vil_nitf2_classification::add_field_defs() called with unsupported version!");
Functor vil_nitf2_field_value_one_of defines a predicate that sets its out parameter to true iff the ...
std::pair< file_version, std::pair< std::string, std::string > > type_field_defs_key
friend class type_field_defs_map_t
static void add_field_defs(vil_nitf2_field_definitions *defs, const file_version &version, std::string prefix, const std::string &pretty_name_prefix)
static type_field_defs_map & s_field_definitions()
std::map< type_field_defs_key, vil_nitf2_field_definitions * > type_field_defs_map
static const vil_nitf2_field_definitions * get_field_definitions(const file_version &version, std::string tag_prefix, std::string pretty_name_prefix)
#define NITF_STR_ECSA(LEN)