<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>libdap++: libdap::BaseTypeFactory Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespacelibdap.html">libdap</a>::<a class="el" href="classlibdap_1_1BaseTypeFactory.html">BaseTypeFactory</a> </div> </div> <div class="contents"> <h1>libdap::BaseTypeFactory Class Reference</h1><!-- doxytag: class="libdap::BaseTypeFactory" --><code>#include <<a class="el" href="BaseTypeFactory_8h_source.html">BaseTypeFactory.h</a>></code> <p> <p> <a href="classlibdap_1_1BaseTypeFactory-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#7a4c5fb2ec417df8bb9ec438903aad4e">BaseTypeFactory</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Array.html">Array</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#7b3a0de64761aea906849d7750b51c26">NewArray</a> (const string &n="", <a class="el" href="classlibdap_1_1BaseType.html">BaseType</a> *v=0) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Byte.html">Byte</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#37f6b0a4cc437fc295095d010bc2edf7">NewByte</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Float32.html">Float32</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#df2f6d7991ea9733b8d6cc54a228b967">NewFloat32</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Float64.html">Float64</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#9f832b220b3cf4989e69c88e56d1c3a0">NewFloat64</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Grid.html">Grid</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#38a98e437226e1a0dd0c5f83b9c52590">NewGrid</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Int16.html">Int16</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#1407056b185116aeb964d815b07ff261">NewInt16</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Int32.html">Int32</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#21291b8b54b32158768d39d3339ece54">NewInt32</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Sequence.html">Sequence</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#602578428e44bb336456dc2c36234e7b">NewSequence</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Str.html">Str</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#af3b49f558701769a5abd53ff786d84d">NewStr</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Structure.html">Structure</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#bbf2b3b3a6953e0ab598e9a8a2aec970">NewStructure</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1UInt16.html">UInt16</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#995029cf91acfb704aae311336b4e049">NewUInt16</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1UInt32.html">UInt32</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#9ac9a31757d5a0e7158f4dd79a399a19">NewUInt32</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classlibdap_1_1Url.html">Url</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#28d105c1aa1a1e54526db236e970cb8f">NewUrl</a> (const string &n="") const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1BaseTypeFactory.html#d1af66eee2dba9ae73db9258eb4fbe44">~BaseTypeFactory</a> ()</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> A factory to create instances of the leaf nodes of <a class="el" href="classlibdap_1_1BaseType.html" title="The basic data type for the DODS DAP types.">BaseType</a> (<a class="el" href="classlibdap_1_1Byte.html" title="Holds a single byte.">Byte</a>, ... <a class="el" href="classlibdap_1_1Grid.html" title="Holds the Grid data type.">Grid</a>). Clients of libdap++ which require special behavior for the types should subclass this factory and provide an implementation which creates instances of those specializations. Make sure to pass a reference to the new factory to DDS's constructor since by default it uses this factory.<p> To define and use your own factory, first make sure that you are not using the compile time constant 'DEFAULT_BASETYPE_FACTORY.' Then pass a pointer to an instance of your factory to the DDS/DataDDS constructors. When the parser is used to build a <a class="el" href="classlibdap_1_1DDS.html">DDS</a> from a DAP response, the factory will be used to instantiate the different variable-type classes.<p> <dl class="note" compact><dt><b>Note:</b></dt><dd>The easiest way to subclass this is to follow the pattern of using a separate class declaration and implementation. It's possible to use one file to hold both, but that is complicated somewhat because <a class="el" href="DDS_8h.html">DDS.h</a>, which includes this class, also includes many of the type classes (<a class="el" href="Array_8h.html">Array.h</a>, ..., <a class="el" href="Grid_8h.html">Grid.h</a>) and the order of their inclusion can create compilation problems where the <a class="el" href="classlibdap_1_1Vector.html" title="Holds a one-dimensional collection of DAP2 data types.">Vector</a> and/or <a class="el" href="classlibdap_1_1Constructor.html">Constructor</a> base classes are not defined. It's easiest to split the declaration and implementation and include forward declarations of the type classes in the declaration (<code></code>.h) file and then include the type class' headers in the implementation (<code></code>.cc) file.</dd></dl> <dl class="author" compact><dt><b>Author:</b></dt><dd>James Gallagher </dd></dl> <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classlibdap_1_1DDS.html">DDS</a> </dd></dl> <p>Definition at line <a class="el" href="BaseTypeFactory_8h_source.html#l00077">77</a> of file <a class="el" href="BaseTypeFactory_8h_source.html">BaseTypeFactory.h</a>.</p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="7a4c5fb2ec417df8bb9ec438903aad4e"></a><!-- doxytag: member="libdap::BaseTypeFactory::BaseTypeFactory" ref="7a4c5fb2ec417df8bb9ec438903aad4e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">libdap::BaseTypeFactory::BaseTypeFactory </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8h_source.html#l00080">80</a> of file <a class="el" href="BaseTypeFactory_8h_source.html">BaseTypeFactory.h</a>.</p> </div> </div><p> <a class="anchor" name="d1af66eee2dba9ae73db9258eb4fbe44"></a><!-- doxytag: member="libdap::BaseTypeFactory::~BaseTypeFactory" ref="d1af66eee2dba9ae73db9258eb4fbe44" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual libdap::BaseTypeFactory::~BaseTypeFactory </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8h_source.html#l00082">82</a> of file <a class="el" href="BaseTypeFactory_8h_source.html">BaseTypeFactory.h</a>.</p> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="7b3a0de64761aea906849d7750b51c26"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewArray" ref="7b3a0de64761aea906849d7750b51c26" args="(const string &n="", BaseType *v=0) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Array.html">Array</a> * libdap::BaseTypeFactory::NewArray </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classlibdap_1_1BaseType.html">BaseType</a> * </td> <td class="paramname"> <em>v</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00104">104</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="37f6b0a4cc437fc295095d010bc2edf7"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewByte" ref="37f6b0a4cc437fc295095d010bc2edf7" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Byte.html">Byte</a> * libdap::BaseTypeFactory::NewByte </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00049">49</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="df2f6d7991ea9733b8d6cc54a228b967"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewFloat32" ref="df2f6d7991ea9733b8d6cc54a228b967" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Float32.html">Float32</a> * libdap::BaseTypeFactory::NewFloat32 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00080">80</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="9f832b220b3cf4989e69c88e56d1c3a0"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewFloat64" ref="9f832b220b3cf4989e69c88e56d1c3a0" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Float64.html">Float64</a> * libdap::BaseTypeFactory::NewFloat64 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00086">86</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="38a98e437226e1a0dd0c5f83b9c52590"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewGrid" ref="38a98e437226e1a0dd0c5f83b9c52590" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Grid.html">Grid</a> * libdap::BaseTypeFactory::NewGrid </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00123">123</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="1407056b185116aeb964d815b07ff261"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewInt16" ref="1407056b185116aeb964d815b07ff261" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Int16.html">Int16</a> * libdap::BaseTypeFactory::NewInt16 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00055">55</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="21291b8b54b32158768d39d3339ece54"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewInt32" ref="21291b8b54b32158768d39d3339ece54" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Int32.html">Int32</a> * libdap::BaseTypeFactory::NewInt32 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00067">67</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00058">DBG</a>.</p> </div> </div><p> <a class="anchor" name="602578428e44bb336456dc2c36234e7b"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewSequence" ref="602578428e44bb336456dc2c36234e7b" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Sequence.html">Sequence</a> * libdap::BaseTypeFactory::NewSequence </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00116">116</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00058">DBG</a>.</p> </div> </div><p> <a class="anchor" name="af3b49f558701769a5abd53ff786d84d"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewStr" ref="af3b49f558701769a5abd53ff786d84d" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Str.html">Str</a> * libdap::BaseTypeFactory::NewStr </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00092">92</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="bbf2b3b3a6953e0ab598e9a8a2aec970"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewStructure" ref="bbf2b3b3a6953e0ab598e9a8a2aec970" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Structure.html">Structure</a> * libdap::BaseTypeFactory::NewStructure </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00110">110</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="995029cf91acfb704aae311336b4e049"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewUInt16" ref="995029cf91acfb704aae311336b4e049" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1UInt16.html">UInt16</a> * libdap::BaseTypeFactory::NewUInt16 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00061">61</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="9ac9a31757d5a0e7158f4dd79a399a19"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewUInt32" ref="9ac9a31757d5a0e7158f4dd79a399a19" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1UInt32.html">UInt32</a> * libdap::BaseTypeFactory::NewUInt32 </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00074">74</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <a class="anchor" name="28d105c1aa1a1e54526db236e970cb8f"></a><!-- doxytag: member="libdap::BaseTypeFactory::NewUrl" ref="28d105c1aa1a1e54526db236e970cb8f" args="(const string &n="") const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classlibdap_1_1Url.html">Url</a> * libdap::BaseTypeFactory::NewUrl </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"> <em>n</em> = <code>""</code> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="BaseTypeFactory_8cc_source.html#l00098">98</a> of file <a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a>.</p> </div> </div><p> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="BaseTypeFactory_8h_source.html">BaseTypeFactory.h</a><li><a class="el" href="BaseTypeFactory_8cc_source.html">BaseTypeFactory.cc</a></ul> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Wed Oct 7 19:59:02 2009 for libdap++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>