libdap  Updated for version 3.20.6
libdap4 is an implementation of OPeNDAP's DAP protocol.
libdap::DDS Class Reference

#include <DDS.h>

Inheritance diagram for libdap::DDS:
Inheritance graph

Public Types

typedef std::vector< BaseType * >::const_iterator Vars_citer
 
typedef std::vector< BaseType * >::iterator Vars_iter
 
typedef std::vector< BaseType * >::reverse_iterator Vars_riter
 

Public Member Functions

void add_var (BaseType *bt)
 Adds a copy of the variable to the DDS. Using the ptr_duplicate() method, perform a deep copy on the variable bt and adds the result to this DDS. More...
 
void add_var_nocopy (BaseType *bt)
 Adds the variable to the DDS. More...
 
bool check_semantics (bool all=false)
 Check the semantics of each of the variables represented in the DDS. More...
 
 DDS (BaseTypeFactory *factory, const string &name="")
 
 DDS (BaseTypeFactory *factory, const string &name, const string &version)
 
 DDS (const DDS &dds)
 
void del_var (const string &n)
 Removes a variable from the DDS. More...
 
void del_var (Vars_iter i)
 Removes a variable from the DDS. More...
 
void del_var (Vars_iter i1, Vars_iter i2)
 Removes a range of variables from the DDS. More...
 
virtual void dump (ostream &strm) const
 dumps information about this object More...
 
virtual AttrTableget_attr_table ()
 
int get_dap_major () const
 Get the DAP major version as sent by the client. More...
 
int get_dap_minor () const
 Get the DAP minor version as sent by the client. More...
 
string get_dap_version () const
 
DASget_das ()
 Get a DAS object. More...
 
void get_das (DAS *das)
 
string get_dmr_version () const
 
BaseTypeFactoryget_factory () const
 
string get_namespace () const
 Get the namespace associated with the DDS - likely set only by DDX responses. More...
 
int get_request_size (bool constrained)
 Get the estimated response size. More...
 
string get_request_xml_base () const
 Get the URL that will return this DDS/DDX/DataThing. More...
 
long get_response_limit ()
 Get the maximum response size, in Bytes. Zero indicates no limit. More...
 
BaseTypeget_var_index (int i)
 Get a variable. More...
 
Vars_iter get_vars_iter (int i)
 Get an iterator. More...
 
void insert_var (Vars_iter i, BaseType *ptr)
 Insert a variable before the referenced element. More...
 
void insert_var_nocopy (Vars_iter i, BaseType *ptr)
 
bool mark (const string &name, bool state)
 Mark the send_p flag of the named variable to state. More...
 
void mark_all (bool state)
 
int num_var ()
 Returns the number of variables in the DDS. More...
 
DDSoperator= (const DDS &rhs)
 
void parse (string fname)
 Parse a DDS from a file with the given d_name. More...
 
void parse (int fd)
 Parse a DDS from a file indicated by the input file descriptor. More...
 
void parse (FILE *in=stdin)
 Parse a DDS from a file indicated by the input file descriptor. Read the persistent representation of a DDS from the FILE *in, parse it and create a matching binary object. More...
 
void print (FILE *out)
 Print the entire DDS to the specified file. More...
 
void print (ostream &out)
 Print the entire DDS to the specified ostream. More...
 
void print_constrained (FILE *out)
 Print a constrained DDS to the specified file. More...
 
void print_constrained (ostream &out)
 Print a constrained DDS to the specified ostream. More...
 
void print_das (ostream &out)
 write the DAS response given the attribute information in the DDS More...
 
void print_dmr (ostream &out, bool constrained)
 Print the DAP4 DMR object using a DDS. More...
 
void print_xml (FILE *out, bool constrained, const string &blob="")
 
void print_xml (ostream &out, bool constrained, const string &blob="")
 
void print_xml_writer (ostream &out, bool constrained, const string &blob="")
 
void set_dap_major (int p)
 
void set_dap_minor (int p)
 
void set_dap_version (const string &version_string="2.0")
 
void set_dap_version (double d)
 
BaseTypeFactoryset_factory (BaseTypeFactory *factory)
 
void set_namespace (const string &ns)
 Set the namespace for this DDS/DDX object/response. More...
 
void set_request_xml_base (const string &xb)
 
void set_response_limit (long size)
 
void tag_nested_sequences ()
 Traverse DDS, set Sequence leaf nodes. More...
 
virtual void transfer_attributes (DAS *das)
 
BaseTypevar (const string &n, BaseType::btp_stack &s)
 
BaseTypevar (const string &n, BaseType::btp_stack *s=0)
 Find the variable with the given d_name. More...
 
Vars_iter var_begin ()
 Return an iterator to the first variable. More...
 
Vars_iter var_end ()
 Return an iterator. More...
 
Vars_riter var_rbegin ()
 Return a reverse iterator. More...
 
Vars_riter var_rend ()
 Return a reverse iterator. More...
 
string get_dataset_name () const
 
void set_dataset_name (const string &n)
 
string filename () const
 
void filename (const string &fn)
 
string container_name ()
 
void container_name (const string &cn)
 
Structurecontainer ()
 
DDS_timeout

Old deprecated DDS timeout code

Deprecated:
void timeout_on ()
 
void timeout_off ()
 
void set_timeout (int t)
 
int get_timeout ()
 

Protected Member Functions

void duplicate (const DDS &dds)
 
BaseTypeexact_match (const string &name, BaseType::btp_stack *s=0)
 
BaseTypeleaf_match (const string &name, BaseType::btp_stack *s=0)
 

Friends

class DDSTest
 

Detailed Description

The DAP2 Data Descriptor Object (DDS) is a data structure used by the DAP2 software to describe datasets and subsets of those datasets. The DDS may be thought of as the declarations for the data structures that will hold data requested by some DAP2 client. Part of the job of a DAP2 server is to build a suitable DDS for a specific dataset and to send it to the client. Depending on the data access API in use, this may involve reading part of the dataset and inferring the DDS. Other APIs may require the server simply to read some ancillary data file with the DDS in it.

On the server side, in addition to the data declarations, the DDS holds the clauses of any constraint expression that may have accompanied the data request from the DAP2 client. The DDS object includes methods for modifying the DDS according to the given constraint expression. It also has methods for directly modifying a DDS, and for transmitting it from a server to a client.

For the client, the DDS object includes methods for reading the persistent form of the object sent from a server. This includes parsing the ASCII representation of the object and, possibly, reading data received from a server into a data object.

Note that the class DDS is used to instantiate both DDS and DataDDS objects. A DDS that is empty (contains no actual data) is used by servers to send structural information to the client. The same DDS can becomes a DataDDS when data values are bound to the variables it defines.

For a complete description of the DDS layout and protocol, please refer to The OPeNDAP User Guide.

The DDS has an ASCII representation, which is what is transmitted from a DAP2 server to a client. Here is the DDS representation of an entire dataset containing a time series of worldwide grids of sea surface temperatures:

Dataset {
    Float64 lat[lat = 180];
    Float64 lon[lon = 360];
    Float64 time[time = 404];
    Grid {
     ARRAY:
        Int32 sst[time = 404][lat = 180][lon = 360];
     MAPS:
        Float64 time[time = 404];
        Float64 lat[lat = 180];
        Float64 lon[lon = 360];
    } sst;
} weekly;

If the data request to this dataset includes a constraint expression, the corresponding DDS might be different. For example, if the request was only for northern hemisphere data at a specific time, the above DDS might be modified to appear like this:

Dataset {
    Grid {
     ARRAY:
        Int32 sst[time = 1][lat = 90][lon = 360];
     MAPS:
        Float64 time[time = 1];
        Float64 lat[lat = 90];
        Float64 lon[lon = 360];
    } sst;
} weekly;

Since the constraint has narrowed the area of interest, the range of latitude values has been halved, and there is only one time value in the returned array. Note that the simple arrays (lat, lon, and time) described in the dataset are also part of the sst Grid object. They can be requested by themselves or as part of that larger object.

See the The OPeNDAP User Guide, or the documentation of the BaseType class for descriptions of the DAP2 data types.

Note
Make sure to pass a valid pointer to the DDS constructor or use the set_factory() method before actually using the DDS. Also make sure that the Factory's lifetime thereafter is the same as the DDS's. Never delete the factory until you're done using the DDS.
Update: I removed the DEFAULT_BASETYPE_FACTORY switch because it caused more confusion than it avoided. See Trac #130. jhrg
The compile-time symbol DEFAULT_BASETYPE_FACTORY controls whether the old (3.4 and earlier) DDS and DataDDS constructors are supported. These constructors now use a default factory class (BaseTypeFactory, implemented by this library) to instantiate Byte, ..., Grid variables. To use the default ctor in your code you must also define this symbol. If you do choose to define this and fail to provide a specialization of BaseTypeFactory when your software needs one, you code may not link or may fail at run time. In addition to the older ctors for DDS and DataDDS, defining the symbol also makes some of the older methods in Connect available (because those methods require the older DDS and DataDDS ctors.
See also
BaseType
DAS

Definition at line 183 of file DDS.h.

Constructor & Destructor Documentation

◆ DDS() [1/3]

libdap::DDS::DDS ( BaseTypeFactory factory,
const string &  name = "" 
)

Make a DDS which uses the given BaseTypeFactory to create variables.

Note
The default DAP version is 3.2 - this is really DAP2 with a handful of enhancements that our WCS software relies on.
Parameters
factoryThe BaseTypeFactory to use when creating instances of DAP variables. The caller must ensure the factory's lifetime is at least that of the DDS instance.
nameThe name of the DDS - usually derived from the name of the pathname or table name of the dataset.

Definition at line 204 of file DDS.cc.

◆ DDS() [2/3]

libdap::DDS::DDS ( BaseTypeFactory factory,
const string &  name,
const string &  version 
)

Make a DDS with the DAP protocol set to a specific value. This method provides an easy way to build DDS objects for use in a server or client that will process DAP4, for example. It's roughly equivalent to calling set_dap_version() after making an instance using DDS::DDS(BaseTypeFactory *, const string &).

Parameters
factoryThe BaseTypeFactory to use when creating instances of DAP variables. The caller must ensure the factory's lifetime is at least that of the DDS instance.
nameThe name of the DDS - usually derived from the name of the pathname or table name of the dataset.
versionThe DAP version to support. This sets the DAP version, as well as a number of other dependent constants.

Definition at line 231 of file DDS.cc.

◆ DDS() [3/3]

libdap::DDS::DDS ( const DDS rhs)

The DDS copy constructor.

Definition at line 244 of file DDS.cc.

Member Function Documentation

◆ add_var()

void libdap::DDS::add_var ( BaseType bt)

Adds a copy of the variable to the DDS. Using the ptr_duplicate() method, perform a deep copy on the variable bt and adds the result to this DDS.

Note
The copy will not copy data values.
Parameters
btSource variable.

Definition at line 586 of file DDS.cc.

◆ add_var_nocopy()

void libdap::DDS::add_var_nocopy ( BaseType bt)

Adds the variable to the DDS.

Parameters
btSource variable.

Definition at line 613 of file DDS.cc.

◆ check_semantics()

bool libdap::DDS::check_semantics ( bool  all = false)

Check the semantics of each of the variables represented in the DDS.

Check the semantics of the DDS describing a complete dataset. If ALL is true, check not only the semantics of THIS->TABLE, but also recursively all ctor types in the THIS->TABLE. By default, ALL is false since parsing a DDS input file runs semantic checks on all variables (but not the dataset itself.

Returns
TRUE if the conventions for the DDS are not violated, FALSE otherwise.
Parameters
allIf true, recursively check the individual members of compound variables.
See also
BaseType::check_semantics

Definition at line 1720 of file DDS.cc.

◆ container()

Structure * libdap::DDS::container ( )

Get the current container structure.

Definition at line 547 of file DDS.cc.

◆ container_name() [1/2]

string libdap::DDS::container_name ( )

Get and set the current container. If there are multiple files being used to build this DDS, using a container will set a virtual structure for the current container.

Container Name Accessor

See also
Dataset Name Accessors Gets the dataset file d_name.

Definition at line 511 of file DDS.cc.

◆ container_name() [2/2]

void libdap::DDS::container_name ( const string &  cn)

Set the current container d_name and get or create a structure for that d_name.

Definition at line 519 of file DDS.cc.

◆ del_var() [1/3]

void libdap::DDS::del_var ( const string &  n)

Removes a variable from the DDS.

Remove the named variable from the DDS. This method is not smart about looking up names. The variable must exist at the top level of the DDS and must match exactly the d_name given.

Note
Invalidates any iterators that reference the contents of the DDS.
Parameters
nThe d_name of the variable to remove.

Definition at line 636 of file DDS.cc.

◆ del_var() [2/3]

void libdap::DDS::del_var ( Vars_iter  i)

Removes a variable from the DDS.

Remove the variable referenced by the iterator and free its storage.

Note
Invalidates any iterators that reference the contents of the DDS.
Parameters
iThe Vars_iter which refers to the variable.

Definition at line 659 of file DDS.cc.

◆ del_var() [3/3]

void libdap::DDS::del_var ( Vars_iter  i1,
Vars_iter  i2 
)

Removes a range of variables from the DDS.

Remove the variables referenced by the range of iterators and free their storage.

Note
Invalidates any iterators that reference the contents of the DDS.
Parameters
i1The start of the range.
i2The end of the range.

Definition at line 675 of file DDS.cc.

◆ dump()

void libdap::DDS::dump ( ostream &  strm) const
virtual

dumps information about this object

Displays the pointer value of this instance and then calls parent dump

Parameters
strmC++ i/o stream to dump the information to
Returns
void

Implements libdap::DapObj.

Reimplemented in libdap::DataDDS.

Definition at line 1835 of file DDS.cc.

◆ filename() [1/2]

string libdap::DDS::filename ( ) const

Get and set the dataset's filename. This is the physical location on a disk where the dataset exists. The dataset d_name is simply a title.

File Name Accessor

See also
Dataset Name Accessors Gets the dataset file d_name.

Definition at line 387 of file DDS.cc.

◆ filename() [2/2]

void libdap::DDS::filename ( const string &  fn)

Set the dataset's filename.

Definition at line 394 of file DDS.cc.

◆ get_attr_table()

AttrTable & libdap::DDS::get_attr_table ( )
virtual

Get the attribute table for the global attributes.

Definition at line 372 of file DDS.cc.

◆ get_dap_major()

int libdap::DDS::get_dap_major ( ) const
inline

Get the DAP major version as sent by the client.

Definition at line 266 of file DDS.h.

◆ get_dap_minor()

int libdap::DDS::get_dap_minor ( ) const
inline

Get the DAP minor version as sent by the client.

Definition at line 268 of file DDS.h.

◆ get_das()

DAS * libdap::DDS::get_das ( )

Get a DAS object.

Returns a new DAS that contains all of the Dataset attributes. This includes all Variable attributes as well as Global attributes. The caller is responsible for deleting the returned object.

Returns
A newly allocated DAS object

Definition at line 1211 of file DDS.cc.

◆ get_dataset_name()

string libdap::DDS::get_dataset_name ( ) const

Get and set the dataset's d_name. This is the d_name of the dataset itself, and is not to be confused with the d_name of the file or disk on which it is stored.

Dataset Name Accessors Returns the dataset's d_name.

Definition at line 356 of file DDS.cc.

◆ get_factory()

BaseTypeFactory* libdap::DDS::get_factory ( ) const
inline

Return the factory which makes instances of the Byte, ..., Grid type classes. Specialize BaseTypeFactory so that a DDS will be populated with your client or server's specialized types.

Returns
An instance of BaseTypeFactory.

Definition at line 242 of file DDS.h.

◆ get_namespace()

string libdap::DDS::get_namespace ( ) const
inline

Get the namespace associated with the DDS - likely set only by DDX responses.

Definition at line 292 of file DDS.h.

◆ get_request_size()

int libdap::DDS::get_request_size ( bool  constrained)

Get the estimated response size.

Get the size of a response. This method looks at the variables in the DDS a computes the number of bytes in the response.

Note
This version of the method does a poor job with Sequences. A better implementation would look at row-constraint-based limitations and use them for size computations. If a row-constraint is missing, return an error.
Parameters
constrainedShould the size of the whole DDS be used or should the current constraint be taken into account?

Definition at line 565 of file DDS.cc.

◆ get_request_xml_base()

string libdap::DDS::get_request_xml_base ( ) const
inline

Get the URL that will return this DDS/DDX/DataThing.

Definition at line 286 of file DDS.h.

◆ get_response_limit()

long libdap::DDS::get_response_limit ( )
inline

Get the maximum response size, in Bytes. Zero indicates no limit.

Definition at line 298 of file DDS.h.

◆ get_var_index()

BaseType * libdap::DDS::get_var_index ( int  i)

Get a variable.

Return the ith variable.

Parameters
ithe index
Returns
The corresponding variable

Definition at line 835 of file DDS.cc.

◆ get_vars_iter()

DDS::Vars_iter libdap::DDS::get_vars_iter ( int  i)

Get an iterator.

Return the iterator for the ith variable.

Parameters
ithe index
Returns
The corresponding Vars_iter

Definition at line 826 of file DDS.cc.

◆ insert_var()

void libdap::DDS::insert_var ( Vars_iter  i,
BaseType ptr 
)

Insert a variable before the referenced element.

Insert a copy of the BaseType before the position given.

Parameters
iThe iterator that marks the position
ptrThe BaseType object to copy and insert

Definition at line 845 of file DDS.cc.

◆ insert_var_nocopy()

void libdap::DDS::insert_var_nocopy ( Vars_iter  i,
BaseType ptr 
)

Insert the BaseType before the position given.

Note
Does not copy the BaseType object - that caller must not free the inserted object's pointer. This object will, however, delete the pointer when it is deleted.
Parameters
iThe iterator that marks the position
ptrThe BaseType object to insert

Definition at line 862 of file DDS.cc.

◆ mark()

bool libdap::DDS::mark ( const string &  n,
bool  state 
)

Mark the send_p flag of the named variable to state.

Mark the named variable by setting its SEND_P flag to STATE (true indicates that it is to be sent). Names must be fully qualified.

Note
For aggregate types this sets each part to STATE when STATE is True. Thus, if State is True and N is `exp1.test', then both `exp1' and `test' have their SEND_P flag set to True. If STATE is False, then the SEND_P flag of the `test' is set to False, but `exp1' is left unchanged. This means that a single variable can be removed from the current projection without removing all the other children of its parent. See the mfunc set_send_p().
Returns
True if the named variable was found, false otherwise.
Todo:
These methods that use the btp_stack to keep track of the path from the top of a dataset to a particular variable can be rewritten to use the parent field instead.
Todo:
All the methods that use names to identify variables should have counterparts that take BaseType pointers.

Definition at line 1764 of file DDS.cc.

◆ mark_all()

void libdap::DDS::mark_all ( bool  state)

Mark the member variable send_p flags to state.

Returns
Void

Definition at line 1821 of file DDS.cc.

◆ num_var()

int libdap::DDS::num_var ( )

Returns the number of variables in the DDS.

Definition at line 873 of file DDS.cc.

◆ parse() [1/3]

void libdap::DDS::parse ( string  fname)

Parse a DDS from a file with the given d_name.

Definition at line 942 of file DDS.cc.

◆ parse() [2/3]

void libdap::DDS::parse ( int  fd)

Parse a DDS from a file indicated by the input file descriptor.

Definition at line 963 of file DDS.cc.

◆ parse() [3/3]

void libdap::DDS::parse ( FILE *  in = stdin)

Parse a DDS from a file indicated by the input file descriptor. Read the persistent representation of a DDS from the FILE *in, parse it and create a matching binary object.

Parameters
inRead the persistent DDS from this FILE*.
Exceptions
InternalErrThrown if in is null
ErrorThrown if the parse fails.

Definition at line 996 of file DDS.cc.

◆ print() [1/2]

void libdap::DDS::print ( FILE *  out)

Print the entire DDS to the specified file.

Definition at line 1023 of file DDS.cc.

◆ print() [2/2]

void libdap::DDS::print ( ostream &  out)

Print the entire DDS to the specified ostream.

Definition at line 1032 of file DDS.cc.

◆ print_constrained() [1/2]

void libdap::DDS::print_constrained ( FILE *  out)

Print a constrained DDS to the specified file.

Print those parts (variables) of the DDS structure to OS that are marked to be sent after evaluating the constraint expression.

Note
This function only works for scalars at the top level.
Returns
true.

Definition at line 1332 of file DDS.cc.

◆ print_constrained() [2/2]

void libdap::DDS::print_constrained ( ostream &  out)

Print a constrained DDS to the specified ostream.

Print those parts (variables) of the DDS structure to OS that are marked to be sent after evaluating the constraint expression.

Note
This function only works for scalars at the top level.
Returns
true.

Definition at line 1350 of file DDS.cc.

◆ print_das()

void libdap::DDS::print_das ( ostream &  out)

write the DAS response given the attribute information in the DDS

This method provides the same DAS response as DAS::print(), but does so using the AttrTables bound to the variables in this DDS object.

Parameters
outWrite the DAS response to this stream

Definition at line 1182 of file DDS.cc.

◆ print_dmr()

void libdap::DDS::print_dmr ( ostream &  out,
bool  constrained 
)

Print the DAP4 DMR object using a DDS.

This method prints the DMR from a DDS. If the dap version is not >= 4.0, it's an error to call this method.

Note
Calling methods that print the DDS or DDX when get_dap_major() returns a value >= 4 is undefined. Use this method to get the DAP4 metadata response.
Parameters
outWrite the XML to this stream
constrainedShould the DMR be subject to a constraint?

Definition at line 1649 of file DDS.cc.

◆ print_xml() [1/2]

void libdap::DDS::print_xml ( FILE *  out,
bool  constrained,
const string &  blob = "" 
)

Print an XML representation of this DDS. This method is used to generate the part of the DDX response. The Dataset tag is not written by this code. The caller of this method must handle writing that and including the dataBLOB tag.

Parameters
outDestination.
constrainedTrue if the output should be limited to just those variables that are in the projection of the current constraint expression.
blobThe dataBLOB href.
Deprecated:

Definition at line 1378 of file DDS.cc.

◆ print_xml() [2/2]

void libdap::DDS::print_xml ( ostream &  out,
bool  constrained,
const string &  blob = "" 
)

Print an XML representation of this DDS. This method is used to generate the DDX response. The Dataset tag is not written by this code. The caller of this method must handle writing that and including the dataBLOB tag.

Parameters
outDestination ostream.
constrainedTrue if the output should be limited to just those variables that are in the projection of the current constraint expression.
blobThe dataBLOB href.
Deprecated:

Definition at line 1397 of file DDS.cc.

◆ print_xml_writer()

void libdap::DDS::print_xml_writer ( ostream &  out,
bool  constrained,
const string &  blob = "" 
)

Print the DDX. This code uses the libxml2 'TextWriter' interface; something that seems to be a good compromise between doing it by hand (although more verbose it is also more reliable) and DOM.

Note
This code handles several different versions of DAP in a fairly crude way. I've broken it up into three different responses: DAP2, DAP3.2 and DAP4.
Parameters
outWrite the XML to this output sink
constrainedTrue if the only variables to print are those in the current projection. If true, this will also suppress printing attributes.
blobThis is an href (DAP2) or a cid (DAP3.4 and 4). The href points to the binary data; the cid is the M-MIME separator for the binary data.

Definition at line 1433 of file DDS.cc.

◆ set_dap_major()

void libdap::DDS::set_dap_major ( int  p)
Deprecated:
Deprecated:

Definition at line 404 of file DDS.cc.

◆ set_dap_minor()

void libdap::DDS::set_dap_minor ( int  p)
Deprecated:
Deprecated:

Definition at line 423 of file DDS.cc.

◆ set_dap_version() [1/2]

void libdap::DDS::set_dap_version ( const string &  v = "2.0")

Given the DAP protocol version, parse that string and set the DDS fields.

Parameters
vThe version string.

Definition at line 440 of file DDS.cc.

◆ set_dap_version() [2/2]

void libdap::DDS::set_dap_version ( double  d)
Deprecated:

Old way to set the DAP version.

Note
Don't use this - two interfaces to set the version number is overkill
Parameters
dThe protocol version requested by the client, as a double.
Deprecated:

Definition at line 488 of file DDS.cc.

◆ set_dataset_name()

void libdap::DDS::set_dataset_name ( const string &  n)

Sets the dataset d_name.

Definition at line 363 of file DDS.cc.

◆ set_factory()

BaseTypeFactory* libdap::DDS::set_factory ( BaseTypeFactory factory)
inline

Set the factory class used to instantiate variables during the parse of a DDS.

Parameters
factoryThe factory this DDS should use. Caller must free factory when done with this DDS.
Returns
The old factory.
See also
BaseTypeFactory

Definition at line 253 of file DDS.h.

◆ set_namespace()

void libdap::DDS::set_namespace ( const string &  ns)
inline

Set the namespace for this DDS/DDX object/response.

Definition at line 295 of file DDS.h.

◆ set_request_xml_base()

void libdap::DDS::set_request_xml_base ( const string &  xb)
inline
See also
get_request_xml_base

Definition at line 289 of file DDS.h.

◆ set_response_limit()

void libdap::DDS::set_response_limit ( long  size)
inline

Set the maximum response size. Zero is the default value. The size is given in kilobytes (but stored internally as the number of bytes).

Parameters
sizeThe maximum size of the response in kilobytes.

Definition at line 303 of file DDS.h.

◆ tag_nested_sequences()

void libdap::DDS::tag_nested_sequences ( )

Traverse DDS, set Sequence leaf nodes.

Definition at line 930 of file DDS.cc.

◆ transfer_attributes()

void libdap::DDS::transfer_attributes ( DAS das)
virtual

This is the main method used to transfer attributes from a DAS object into a DDS. This uses the BaseType::transfer_attributes() method and the various implementations found here (in the constructors classes) and in handlers.

This method uses a deep copy to transfer the attributes, so it is safe to delete the source DAS object passed to this method once it is done.

Note
To accommodate oddly built DAS objects produced by various handlers, specialize the methods there.
Parameters
dasTransfer (copy) attributes from this DAS object.

Definition at line 286 of file DDS.cc.

◆ var() [1/2]

BaseType * libdap::DDS::var ( const string &  n,
BaseType::btp_stack &  s 
)

Search for for variable n as above but record all compound type variables which ultimately contain n on s. This stack can then be used to mark the contained compound-type variables as part of the current projection.

Returns
A BaseType pointer to the variable n or 0 if n could not be found.

Definition at line 692 of file DDS.cc.

◆ var() [2/2]

BaseType * libdap::DDS::var ( const string &  n,
BaseType::btp_stack *  s = 0 
)

Find the variable with the given d_name.

Returns a pointer to the named variable. If the d_name contains one or more field separators then the function looks for a variable whose name matches exactly. If the d_name contains no field separators then the function looks first in the top level and then in all subsequent levels and returns the first occurrence found. In general, this function searches constructor types in the order in which they appear in the DDS, but there is no requirement that it do so.

Note
If a dataset contains two constructor types which have field names that are the same (say point.x and pair.x) you should use fully qualified names to get each of those variables.
Parameters
nThe name of the variable to find.
sIf given, this value-result parameter holds the path to the returned BaseType. Thus, this method can return the FQN for the variable n.
Returns
A BaseType pointer to the variable or null if not found.

Definition at line 716 of file DDS.cc.

◆ var_begin()

DDS::Vars_iter libdap::DDS::var_begin ( )

Return an iterator to the first variable.

Returns the first variable in the DDS.

Definition at line 799 of file DDS.cc.

◆ var_end()

DDS::Vars_iter libdap::DDS::var_end ( )

Return an iterator.

Definition at line 811 of file DDS.cc.

◆ var_rbegin()

DDS::Vars_riter libdap::DDS::var_rbegin ( )

Return a reverse iterator.

Definition at line 805 of file DDS.cc.

◆ var_rend()

DDS::Vars_riter libdap::DDS::var_rend ( )

Return a reverse iterator.

Definition at line 817 of file DDS.cc.


The documentation for this class was generated from the following files: