libdap Updated for version 3.20.11
libdap4 is an implementation of OPeNDAP's DAP protocol.
BaseTypeFactory.h
1
2// -*- mode: c++; c-basic-offset:4 -*-
3
4// This file is part of libdap, A C++ implementation of the OPeNDAP Data
5// Access Protocol.
6
7// Copyright (c) 2005 OPeNDAP, Inc.
8// Author: James Gallagher <jgallagher@opendap.org>
9//
10// This library is free software; you can redistribute it and/or
11// modify it under the terms of the GNU Lesser General Public
12// License as published by the Free Software Foundation; either
13// version 2.1 of the License, or (at your option) any later version.
14//
15// This library is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18// Lesser General Public License for more details.
19//
20// You should have received a copy of the GNU Lesser General Public
21// License along with this library; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23//
24// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
25
26#ifndef base_type_factory_h
27#define base_type_factory_h
28
29#include <string>
30
31#include "Type.h"
32#include "InternalErr.h"
33
34// Class declarations; Make sure to include the corresponding headers in the
35// implementation file.
36
37namespace libdap
38{
39
40class Byte;
41class Int16;
42class UInt16;
43class Int32;
44class UInt32;
45class Float32;
46class Float64;
47class Str;
48class Url;
49class Array;
50class Structure;
51class Sequence;
52class Grid;
53class BaseType;
54
81{
82public:
84 {}
85 virtual ~BaseTypeFactory()
86 {}
87
97 virtual BaseType *NewVariable(Type t, const string &name = "") const;
98
105 throw InternalErr(__FILE__, __LINE__, "Not Implemented.");
106 }
107
108 virtual Byte *NewByte(const string &n = "") const;
109 virtual Int16 *NewInt16(const string &n = "") const;
110 virtual UInt16 *NewUInt16(const string &n = "") const;
111 virtual Int32 *NewInt32(const string &n = "") const;
112 virtual UInt32 *NewUInt32(const string &n = "") const;
113 virtual Float32 *NewFloat32(const string &n = "") const;
114 virtual Float64 *NewFloat64(const string &n = "") const;
115
116 virtual Str *NewStr(const string &n = "") const;
117 virtual Url *NewUrl(const string &n = "") const;
118
119 virtual Array *NewArray(const string &n = "", BaseType *v = 0) const;
120 virtual Structure *NewStructure(const string &n = "") const;
121 virtual Sequence *NewSequence(const string &n = "") const;
122 virtual Grid *NewGrid(const string &n = "") const;
123};
124
125} // namespace libdap
126
127#endif // base_type_factory_h
A multidimensional array of identical data types.
Definition: Array.h:113
virtual BaseType * NewVariable(Type t, const string &name="") const
virtual BaseTypeFactory * ptr_duplicate() const
The basic data type for the DODS DAP types.
Definition: BaseType.h:118
Holds a single byte.
Definition: Byte.h:61
Holds a 32-bit floating point value.
Definition: Float32.h:62
Holds a 64-bit (double precision) floating point value.
Definition: Float64.h:61
Holds the Grid data type.
Definition: Grid.h:123
Holds a 16-bit signed integer value.
Definition: Int16.h:60
Holds a 32-bit signed integer.
Definition: Int32.h:66
A class for software fault reporting.
Definition: InternalErr.h:65
Holds a sequence.
Definition: Sequence.h:163
Holds character string data.
Definition: Str.h:63
Holds a structure (aggregate) type.
Definition: Structure.h:84
Holds an unsigned 16-bit integer.
Definition: UInt16.h:58
Holds a 32-bit unsigned integer.
Definition: UInt32.h:60
Holds an Internet address (URL).
Definition: Url.h:69
top level DAP object to house generic methods
Definition: AlarmHandler.h:36
Type
Identifies the data type.
Definition: Type.h:94