NetCDF4 C++ API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MetadataUtils.h
Go to the documentation of this file.
1 
13 #ifndef INC_netCDF_MetadataUtils_h
14 #define INC_netCDF_MetadataUtils_h
15 
17 #include "metadata/NcVarMetaCF.h"
19 #include "metadata/NcFileMetaCF.h"
20 #include <ostream>
21 
22 namespace netcdf {
23 
24 
26 template< typename TNumeric >
28  NcVarMetaCF & metaVar,
29  MetadataCFVariable<TNumeric> const & meta)
30 {
31  metaVar.Set ( NcVarMetaCF::Meta_longName, meta.longName );
33  metaVar.Set ( NcVarMetaCF::Meta_units, meta.units );
34  metaVar.Set ( NcVarMetaCF::Meta_validMin, meta.validMin );
35  metaVar.Set ( NcVarMetaCF::Meta_validMax, meta.validMax );
36  metaVar.Set ( NcVarMetaCF::Meta_FillValue, meta.fillValue );
37  metaVar.Set ( NcVarMetaCF::Meta_Encoding, meta.encoding );
38 }
39 
41 template< typename TNumeric >
43  NcVarMetaCF & metaVar,
45 {
46  metaVar.Get ( NcVarMetaCF::Meta_longName, meta.longName );
48  metaVar.Get ( NcVarMetaCF::Meta_units, meta.units );
49  metaVar.Get ( NcVarMetaCF::Meta_validMin, meta.validMin );
50  metaVar.Get ( NcVarMetaCF::Meta_validMax, meta.validMax );
51  metaVar.Get ( NcVarMetaCF::Meta_FillValue, meta.fillValue );
52  metaVar.Get ( NcVarMetaCF::Meta_Encoding, meta.encoding );
53 }
54 
56 void operator<< (
57  NcFileMetaCF & metaFile,
58  MetadataCFGlobal const & meta);
59 
61 void operator>> (
62  NcFileMetaCF & metaFile,
63  MetadataCFGlobal & meta);
64 
66 template< typename TNumeric >
67 std::ostream & operator<< (
68  std::ostream & os,
69  MetadataCFVariable<TNumeric> const & meta)
70 {
71  char const * const SPACE = " ";
72  char const * const EQUALS = " = ";
73  char const NL = '\n';
74  os << SPACE << NcVarMetaCF::GetAttName(NcVarMetaCF::Meta_longName) << EQUALS
75  << meta.longName << NL;
77  << meta.standardName << NL;
78  os << SPACE << NcVarMetaCF::GetAttName(NcVarMetaCF::Meta_units) << EQUALS
79  << meta.units << NL;
80  os << SPACE << NcVarMetaCF::GetAttName(NcVarMetaCF::Meta_validMin) << EQUALS
81  << meta.validMin << NL;
82  os << SPACE << NcVarMetaCF::GetAttName(NcVarMetaCF::Meta_validMax) << EQUALS
83  << meta.validMax << NL;
85  << meta.fillValue << NL;
86  os << SPACE << NcVarMetaCF::GetAttName(NcVarMetaCF::Meta_Encoding) << EQUALS
87  << meta.encoding << std::endl;
88  return os;
89 }
90 
92 std::ostream & operator<< (
93  std::ostream & os,
94  MetadataCFGlobal const & meta);
95 
97 void UpdateHistory (
98  MetadataCFGlobal & meta,
99  std::string const & newHistory,
100  char const separator =
102 
103 
104 } // namespace netcdf
105 
106 #endif // INC_netCDF_MetadataUtils_h
static char const *const GetAttName(MetaItem const which)
Definition: NcVarMetaCF.h:83
void operator>>(NcFileMetaCF &metaFile, MetadataCFGlobal &meta)
Read metadata from netCDF global attributes.
Definition: MetadataUtils.cpp:35
void operator<<(NcFileMetaCF &metaFile, MetadataCFGlobal const &meta)
Add metadata to netCDF global attributes.
Definition: MetadataUtils.cpp:19
TNumeric fillValue
_FillValue : matching type
Definition: MetadataCFVariable.h:32
long_name : string
Definition: NcVarMetaCF.h:29
_FillValue : matching type
Definition: NcVarMetaCF.h:34
units : string
Definition: NcVarMetaCF.h:31
std::string encoding
_Encoding : string
Definition: MetadataCFVariable.h:36
std::string units
units : string
Definition: MetadataCFVariable.h:28
void Get(MetaItem const which, data_type &data)
Definition: NcVarMetaCF.h:72
std::string longName
long_name : string
Definition: MetadataCFVariable.h:28
TNumeric validMin
valid_min : numeric type
Definition: MetadataCFVariable.h:32
standard_name : string
Definition: NcVarMetaCF.h:30
void Set(MetaItem const which, data_type const &data)
Definition: NcVarMetaCF.h:44
_Encoding : string
Definition: NcVarMetaCF.h:35
TNumeric validMax
valid_max : numeric type
Definition: MetadataCFVariable.h:32
void UpdateHistory(MetadataCFGlobal &meta, std::string const &newHistory, char const separator)
Append update with datestamp to history attribute.
Definition: MetadataUtils.cpp:80
std::string standardName
standard_name : string
Definition: MetadataCFVariable.h:28
valid_min : numeric type
Definition: NcVarMetaCF.h:32
valid_max : numeric type
Definition: NcVarMetaCF.h:33
Class managing variable metadata that conform to netCDF CF conventions. A typical set of attributes a...
Definition: MetadataCFVariable.h:23
Class for read/write CF-convention metadata for a netCDF variable. A typical set of attributes are kn...
Definition: NcVarMetaCF.h:23
static char const defaultSeparator
default separatory for history items is a vertical bar
Definition: MetadataCFGlobal.h:38