00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef base_type_factory_h
00027 #define base_type_factory_h
00028
00029 #include <string>
00030
00031
00032
00033
00034 namespace libdap
00035 {
00036
00037 class Byte;
00038 class Int16;
00039 class UInt16;
00040 class Int32;
00041 class UInt32;
00042 class Float32;
00043 class Float64;
00044 class Str;
00045 class Url;
00046 class Array;
00047 class Structure;
00048 class Sequence;
00049 class Grid;
00050 class BaseType;
00051
00077 class BaseTypeFactory
00078 {
00079 public:
00080 BaseTypeFactory()
00081 {}
00082 virtual ~BaseTypeFactory()
00083 {}
00084
00085 virtual Byte *NewByte(const string &n = "") const;
00086 virtual Int16 *NewInt16(const string &n = "") const;
00087 virtual UInt16 *NewUInt16(const string &n = "") const;
00088 virtual Int32 *NewInt32(const string &n = "") const;
00089 virtual UInt32 *NewUInt32(const string &n = "") const;
00090 virtual Float32 *NewFloat32(const string &n = "") const;
00091 virtual Float64 *NewFloat64(const string &n = "") const;
00092
00093 virtual Str *NewStr(const string &n = "") const;
00094 virtual Url *NewUrl(const string &n = "") const;
00095
00096 virtual Array *NewArray(const string &n = "", BaseType *v = 0) const;
00097 virtual Structure *NewStructure(const string &n = "") const;
00098 virtual Sequence *NewSequence(const string &n = "") const;
00099 virtual Grid *NewGrid(const string &n = "") const;
00100 };
00101
00102 }
00103
00104 #endif // base_type_factory_h