35#include "DmrppInt16.h"
36#include "DmrppUInt16.h"
37#include "DmrppInt32.h"
38#include "DmrppUInt32.h"
40#include "DmrppInt64.h"
41#include "DmrppUInt64.h"
43#include "DmrppFloat32.h"
44#include "DmrppFloat64.h"
49#include "DmrppD4Enum.h"
51#include "DmrppD4Opaque.h"
53#include "DmrppArray.h"
54#include "DmrppStructure.h"
56#include "DmrppD4Sequence.h"
57#include "DmrppD4Group.h"
59#include "DmrppTypeFactory.h"
64#define prolog string("DmrppTypeFactory::").append(__func__).append("() - ")
69BaseType *DmrppTypeFactory::NewVariable(
Type t,
const string &name)
const
78 return NewUInt8(name);
83 return NewInt16(name);
85 return NewUInt16(name);
87 return NewInt32(name);
89 return NewUInt32(name);
92 return NewInt64(name);
94 return NewUInt64(name);
97 return NewFloat32(name);
99 return NewFloat64(name);
107 return NewEnum(name);
110 return NewOpaque(name);
113 return NewArray(name);
115 case dods_structure_c:
116 return NewStructure(name);
118 case dods_sequence_c:
119 return NewD4Sequence(name);
122 return NewGroup(name);
125 throw BESError(
"Unimplemented type in DAP4.", BES_INTERNAL_ERROR, __FILE__, __LINE__);
130DmrppTypeFactory::NewByte(
const string &n)
const
132 BESDEBUG(MODULE, prolog <<
"Making a new DmrppByte object named: " << n << endl);
133 return new DmrppByte(n, d_dmz);
137DmrppTypeFactory::NewChar(
const string &n)
const
139 BESDEBUG(MODULE, prolog <<
"Making a new DmrppByte object named: " << n << endl);
140 Byte *b =
new DmrppByte(n, d_dmz);
141 b->set_type(dods_char_c);
146DmrppTypeFactory::NewUInt8(
const string &n)
const
148 BESDEBUG(MODULE, prolog <<
"Making a new DmrppUInt8 object named: " << n << endl);
149 Byte *b =
new DmrppByte(n, d_dmz);
150 b->set_type(dods_uint8_c);
155DmrppTypeFactory::NewInt8(
const string &n)
const
157 BESDEBUG(MODULE, prolog <<
"Making a new DmrppInt8 object named: " << n << endl);
158 return new DmrppInt8(n, d_dmz);
162DmrppTypeFactory::NewInt16(
const string &n)
const
164 BESDEBUG(MODULE, prolog <<
"Making a new DmrppInt16 object named: " << n << endl);
165 return new DmrppInt16(n, d_dmz);
169DmrppTypeFactory::NewUInt16(
const string &n)
const
171 BESDEBUG(MODULE, prolog <<
"Making a new DmrppUInt16 object named: " << n << endl);
172 return new DmrppUInt16(n, d_dmz);
176DmrppTypeFactory::NewInt32(
const string &n)
const
178 BESDEBUG(MODULE, prolog <<
"Making a new DmrppInt32 object named: " << n << endl);
179 return new DmrppInt32(n, d_dmz);
183DmrppTypeFactory::NewUInt32(
const string &n)
const
185 BESDEBUG(MODULE, prolog <<
"Making a new DmrppUInt32 object named: " << n << endl);
186 return new DmrppUInt32(n, d_dmz);
190DmrppTypeFactory::NewInt64(
const string &n)
const
192 BESDEBUG(MODULE, prolog <<
"Making a new DmrppInt64 object named: " << n << endl);
193 return new DmrppInt64(n, d_dmz);
197DmrppTypeFactory::NewUInt64(
const string &n)
const
199 BESDEBUG(MODULE, prolog <<
"Making a new DmrppUInt64 object named: " << n << endl);
200 return new DmrppUInt64(n, d_dmz);
204DmrppTypeFactory::NewFloat32(
const string &n)
const
206 BESDEBUG(MODULE, prolog <<
"Making a new DmrppFloat32 object named: " << n << endl);
207 return new DmrppFloat32(n, d_dmz);
211DmrppTypeFactory::NewFloat64(
const string &n)
const
213 BESDEBUG(MODULE, prolog <<
"Making a new DmrppFloat64 object named: " << n << endl);
214 return new DmrppFloat64(n, d_dmz);
218DmrppTypeFactory::NewStr(
const string &n)
const
220 BESDEBUG(MODULE, prolog <<
"Making a new DmrppStr object named: " << n << endl);
221 return new DmrppStr(n, d_dmz);
225DmrppTypeFactory::NewUrl(
const string &n)
const
227 return new DmrppUrl(n, d_dmz);
239DmrppTypeFactory::NewOpaque(
const string &n)
const
245DmrppTypeFactory::NewEnum(
const string &name,
Type type)
const
247 return new DmrppD4Enum(name, type);
251DmrppTypeFactory::NewArray(
const string &n, BaseType *v)
const
253 return new DmrppArray(n, v, d_dmz);
257DmrppTypeFactory::NewStructure(
const string &n)
const
259 return new DmrppStructure(n, d_dmz);
263DmrppTypeFactory::NewD4Sequence(
const string &n)
const
265 return new DmrppD4Sequence(n, d_dmz);
269DmrppTypeFactory::NewGroup(
const string &n)
const
271 return new DmrppD4Group(n, d_dmz);
virtual libdap::Url * NewURL(const std::string &n="") const