@@ -84,11 +84,22 @@ MarsLanguage::MarsLanguage(const std::string& verb) : verb_(verb) {
84
84
types_[keyword]->attach ();
85
85
keywords_.push_back (keyword);
86
86
87
+ std::optional<eckit::Value> aliases;
87
88
if (settings.contains (" aliases" )) {
88
- eckit::Value aliases = settings[" aliases" ];
89
- for (size_t j = 0 ; j < aliases.size (); ++j) {
90
- aliases_[aliases[j]] = keyword;
91
- keywords_.push_back (aliases[j]);
89
+ aliases = settings[" aliases" ];
90
+ }
91
+ if (settings.contains (" category" ) && settings[" category" ] == " data" ) {
92
+ dataKeywords_.insert (keyword);
93
+ if (aliases) {
94
+ for (size_t j = 0 ; j < aliases->size (); ++j) {
95
+ dataKeywords_.insert ((*aliases)[j]);
96
+ }
97
+ }
98
+ }
99
+ if (aliases) {
100
+ for (size_t j = 0 ; j < aliases->size (); ++j) {
101
+ aliases_[(*aliases)[j]] = keyword;
102
+ keywords_.push_back ((*aliases)[j]);
92
103
}
93
104
}
94
105
}
@@ -100,9 +111,7 @@ MarsLanguage::MarsLanguage(const std::string& verb) : verb_(verb) {
100
111
}
101
112
}
102
113
103
- std::set<std::string> keywordsInAxis;
104
114
for (const std::string& a : hypercube::AxisOrder::instance ().axes ()) {
105
- keywordsInAxis.insert (a);
106
115
Type* t=nullptr ;
107
116
auto it = types_.find (a);
108
117
if (it != types_.end ()) {
@@ -111,10 +120,15 @@ MarsLanguage::MarsLanguage(const std::string& verb) : verb_(verb) {
111
120
typesByAxisOrder_.emplace_back (a, t);
112
121
}
113
122
for (const auto & [k,t] : types_) {
114
- if (keywordsInAxis .find (k) == keywordsInAxis .end ()) { typesByAxisOrder_.emplace_back (k, t); }
123
+ if (dataKeywords_ .find (k) == dataKeywords_ .end ()) { typesByAxisOrder_.emplace_back (k, t); }
115
124
}
116
125
}
117
126
127
+ bool MarsLanguage::isData (const std::string& keyword) const {
128
+ return (dataKeywords_.find (keyword) != dataKeywords_.end ());
129
+ }
130
+
131
+
118
132
MarsLanguage::~MarsLanguage () {
119
133
for (std::map<std::string, Type*>::iterator j = types_.begin (); j != types_.end (); ++j) {
120
134
(*j).second ->detach ();
0 commit comments