radarlib 1.4.6
odimh5v21_utils.hpp
Go to the documentation of this file.
1/*
2 * odimh5v21_utils - odimh5v21 utilities
3 *
4 * Copyright (C) 2013 ARPA-SIM <urpsim@smr.arpa.emr.it>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Author: Emanuele Di Giacomo <edigiacomo@arpa.emr.it>
21 */
22#ifndef __RADAR_ODIMH5V21_UTILS_HPP__
23#define __RADAR_ODIMH5V21_UTILS_HPP__
30
31namespace OdimH5v21 {
33namespace utils {
34
56 public:
70 protected:
72 virtual void visitDefault(OdimH5v21::OdimObject& obj) {}
74 virtual void visit(OdimH5v21::PolarVolume& obj) {}
76 virtual void visit(OdimH5v21::ImageObject& obj) {}
78 virtual void visit(OdimH5v21::CompObject& obj) {}
80 virtual void visit(OdimH5v21::XsecObject& obj) {}
81
82 private:
84 template <class T>
85 void castAndVisitObject(OdimH5v21::OdimObject& obj) {
86 T& x = dynamic_cast<T&>(obj);
87 this->visit(x);
88 }
89};
99 public:
113 protected:
115 virtual void visitDefault(OdimH5v21::Product_2D& prod) {}
117 virtual void visit(OdimH5v21::Product_PPI& prod) {}
119 virtual void visit(OdimH5v21::Product_CAPPI& prod) {}
121 virtual void visit(OdimH5v21::Product_PCAPPI& prod) {}
123 virtual void visit(OdimH5v21::Product_ETOP& prod) {}
125 virtual void visit(OdimH5v21::Product_MAX& prod) {}
127 virtual void visit(OdimH5v21::Product_RR& prod) {}
129 virtual void visit(OdimH5v21::Product_VIL& prod) {}
131 virtual void visit(OdimH5v21::Product_LBM& prod) {}
133 virtual void visit(OdimH5v21::Product_POH& prod) {}
135 virtual void visit(OdimH5v21::Product_COMP& prod) {}
137 virtual void visit(OdimH5v21::Product_XSEC& prod) {}
139 virtual void visit(OdimH5v21::Product_RHI& prod) {}
141 virtual void visit(OdimH5v21::Product_VSP& prod) {}
143 virtual void visit(OdimH5v21::Product_HSP& prod) {}
144 private:
145 template<class T>
146 void castAndVisitProduct2D(OdimH5v21::Product_2D& prod) {
147 T&x = dynamic_cast<T&>(prod);
148 this->visit(x);
149 }
150};
151
152}
153}
154#endif
OdimH5 v2.1 CompObject.
Definition odimh5v21_classes.hpp:1799
OdimH5 v2.1 ImageObject.
Definition odimh5v21_classes.hpp:1772
Generic OdimH5 v2.1 object.
Definition odimh5v21_classes.hpp:96
OdimH5 v2.1 Polar Volume.
Definition odimh5v21_classes.hpp:882
OdimH5 v2.1 Product_2D Dataset.
Definition odimh5v21_classes.hpp:1887
OdimH5 v2.1 CAPPI Product Dataset.
Definition odimh5v21_classes.hpp:2300
OdimH5 v2.1 COMP Product Dataset.
Definition odimh5v21_classes.hpp:2511
OdimH5 v2.1 ETOP Product Dataset.
Definition odimh5v21_classes.hpp:2352
OdimH5 v2.1 HSP Product Dataset.
Definition odimh5v21_classes.hpp:2676
OdimH5 v2.1 PPI Product Dataset.
Definition odimh5v21_classes.hpp:2457
OdimH5 v2.1 MAX Product Dataset.
Definition odimh5v21_classes.hpp:2378
OdimH5 v2.1 PCAPPI Product Dataset.
Definition odimh5v21_classes.hpp:2326
OdimH5 v2.1 PPI Product Dataset.
Definition odimh5v21_classes.hpp:2484
OdimH5 v2.1 PPI Product Dataset.
Definition odimh5v21_classes.hpp:2274
OdimH5 v2.1 RHI Product Dataset.
Definition odimh5v21_classes.hpp:2603
OdimH5 v2.1 RR Product Dataset.
Definition odimh5v21_classes.hpp:2405
OdimH5 v2.1 VIL Product Dataset.
Definition odimh5v21_classes.hpp:2431
OdimH5 v2.1 VSP Product Dataset.
Definition odimh5v21_classes.hpp:2703
OdimH5 v2.1 XSEC Product Dataset.
Definition odimh5v21_classes.hpp:2576
OdimH5 v2.1 XsecObject.
Definition odimh5v21_classes.hpp:1826
Generic OdimObject visitor.
Definition odimh5v21_utils.hpp:55
void visitObject(OdimH5v21::OdimObject &obj)
Visit a generic object and call the proper method visit()
Definition odimh5v21_utils.cpp:26
virtual void visit(OdimH5v21::ImageObject &obj)
Called when the visited OdimObject is a ImageObject (noop)
Definition odimh5v21_utils.hpp:76
virtual void visit(OdimH5v21::XsecObject &obj)
Called when the visited OdimObject is a XsecObject (noop)
Definition odimh5v21_utils.hpp:80
virtual void visit(OdimH5v21::PolarVolume &obj)
Called when the visited OdimObject is a PolarVolume (noop)
Definition odimh5v21_utils.hpp:74
virtual void visit(OdimH5v21::CompObject &obj)
Called when the visited OdimObject is a CompObject (noop)
Definition odimh5v21_utils.hpp:78
virtual void visitDefault(OdimH5v21::OdimObject &obj)
Called when the visited OdimObject is not supported (noop)
Definition odimh5v21_utils.hpp:72
Generic 2D product visitor.
Definition odimh5v21_utils.hpp:98
virtual void visit(OdimH5v21::Product_ETOP &prod)
Called when the visited Product_2D is a ETOP product (noop)
Definition odimh5v21_utils.hpp:123
virtual void visit(OdimH5v21::Product_VIL &prod)
Called when the visited Product_2D is a VIL product (noop)
Definition odimh5v21_utils.hpp:129
virtual void visit(OdimH5v21::Product_LBM &prod)
Called when the visited Product_2D is a LBM product (noop)
Definition odimh5v21_utils.hpp:131
virtual void visit(OdimH5v21::Product_POH &prod)
Called when the visited Product_2D is a POH product (noop)
Definition odimh5v21_utils.hpp:133
virtual void visit(OdimH5v21::Product_MAX &prod)
Called when the visited Product_2D is a MAX product (noop)
Definition odimh5v21_utils.hpp:125
void visitProduct2D(OdimH5v21::Product_2D &prod)
Visit a generic 2D product and call the proper method visit()
Definition odimh5v21_utils.cpp:40
virtual void visit(OdimH5v21::Product_RHI &prod)
Called when the visited Product_2D is a RHI product (noop)
Definition odimh5v21_utils.hpp:139
virtual void visit(OdimH5v21::Product_PPI &prod)
Called when the visited Product_2D is a PPI product (noop)
Definition odimh5v21_utils.hpp:117
virtual void visit(OdimH5v21::Product_CAPPI &prod)
Called when the visited Product_2D is a CAPPI product (noop)
Definition odimh5v21_utils.hpp:119
virtual void visit(OdimH5v21::Product_HSP &prod)
Called when the visited Product_2D is a HSP product (noop)
Definition odimh5v21_utils.hpp:143
virtual void visit(OdimH5v21::Product_XSEC &prod)
Called when the visited Product_2D is a XSEC product (noop)
Definition odimh5v21_utils.hpp:137
virtual void visit(OdimH5v21::Product_COMP &prod)
Called when the visited Product_2D is a COMP product (noop)
Definition odimh5v21_utils.hpp:135
virtual void visit(OdimH5v21::Product_PCAPPI &prod)
Called when the visited Product_2D is a PCAPPI product (noop)
Definition odimh5v21_utils.hpp:121
virtual void visit(OdimH5v21::Product_VSP &prod)
Called when the visited Product_2D is a VSP product (noop)
Definition odimh5v21_utils.hpp:141
virtual void visitDefault(OdimH5v21::Product_2D &prod)
Called when the visited Product_2D is not supported (noop)
Definition odimh5v21_utils.hpp:115
virtual void visit(OdimH5v21::Product_RR &prod)
Called when the visited Product_2D is a RR product (noop)
Definition odimh5v21_utils.hpp:127
Namespace related to ODIMH5 version 2.1.
Definition odimh5v21.hpp:46
Main library classes (generic objects, polar volumes etc.)