bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
MyBaseTypeFactory.h
1
2// This file is part of the "NcML Module" project, a BES module designed
3// to allow NcML files to be used to be used as a wrapper to add
4// AIS to existing datasets of any format.
5//
6// Copyright (c) 2009 OPeNDAP, Inc.
7// Author: Michael Johnson <m.johnson@opendap.org>
8//
9// For more information, please also see the main website: http://opendap.org/
10//
11// This library is free software; you can redistribute it and/or
12// modify it under the terms of the GNU Lesser General Public
13// License as published by the Free Software Foundation; either
14// version 2.1 of the License, or (at your option) any later version.
15//
16// This library is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19// Lesser General Public License for more details.
20//
21// You should have received a copy of the GNU Lesser General Public
22// License along with this library; if not, write to the Free Software
23// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24//
25// Please see the files COPYING and COPYRIGHT for more information on the GLPL.
26//
27// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
29#ifndef __NCML_MODULE__MYBASETYPEFACTORY_H__
30#define __NCML_MODULE__MYBASETYPEFACTORY_H__
31
32#include <memory>
33#include <string>
34
35// libdap
36#include <libdap/Array.h>
37#include <libdap/BaseType.h> // need the Type enum...
38
39namespace libdap {
40class BaseTypeFactory;
41}
42
43namespace ncml_module {
56class MyBaseTypeFactory {
57protected:
58 // static class for now
59 MyBaseTypeFactory() = default;
60 virtual ~MyBaseTypeFactory() = default;
61
62private:
63 // disallow copies
64 MyBaseTypeFactory(const MyBaseTypeFactory& rhs);
65 MyBaseTypeFactory& operator=(const MyBaseTypeFactory& rhs);
66
67public:
68
69 static libdap::Type getType(const std::string& name);
70
72 static bool isSimpleType(const std::string& typeName);
73
78 static bool isArrayTemplate(const std::string& typeName);
79
84 static std::unique_ptr<libdap::BaseType> makeVariable(const libdap::Type& type, const std::string& name);
85
90 static std::unique_ptr<libdap::BaseType> makeVariable(const std::string& type, const std::string& name);
91
100 static std::unique_ptr<libdap::Array> makeArrayTemplateVariable(const std::string& type, const std::string& name,
101 bool addTemplateVar);
102
103private:
104 //data rep
105
106 // Singleton factory we will use to create variables by type name
107 static libdap::BaseTypeFactory* _spFactory;
108};
109
110}
111
112#endif /* __NCML_MODULE__MYBASETYPEFACTORY_H__ */
static std::unique_ptr< libdap::Array > makeArrayTemplateVariable(const std::string &type, const std::string &name, bool addTemplateVar)
static bool isArrayTemplate(const std::string &typeName)
static libdap::Type getType(const std::string &name)
static std::unique_ptr< libdap::BaseType > makeVariable(const libdap::Type &type, const std::string &name)
static bool isSimpleType(const std::string &typeName)
NcML Parser for adding/modifying/removing metadata (attributes) to existing local datasets using NcML...