libdap++
Updated for version 3.11.7
|
#include <DataDDS.h>
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... | |
DataDDS (BaseTypeFactory *factory, const string &n="", const string &v="", const string &p="") | |
Make an instance of DataDDS A DataDDS instance is a DDS with additional information about the version of the server from which the data came. More... | |
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 AttrTable & | get_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 |
BaseTypeFactory * | get_factory () const |
Keywords & | get_keywords () |
string | get_protocol () const |
int | get_protocol_major () const |
int | get_protocol_minor () const |
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 KB. Zero indicates no limit. More... | |
int | get_timeout () |
BaseType * | get_var_index (int i) |
Get a variable. More... | |
Vars_iter | get_vars_iter (int i) |
Get an iterator. More... | |
string | get_version () const |
Get the server version string, unparsed. More... | |
int | get_version_major () const |
Returns the major version number. More... | |
int | get_version_minor () const |
Returns the minor version number. 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... | |
void | parse (string fname) |
Parse a DDS from a file with the given 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) |
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) |
Set the DAP major version (typically using info from the client) More... | |
void | set_dap_minor (int p) |
Set the DAP minor version (typically using info from the client) More... | |
void | set_dap_version (const string &version_string) |
void | set_dap_version (double d) |
BaseTypeFactory * | set_factory (BaseTypeFactory *factory) |
void | set_protocol (const string &p) |
void | set_request_xml_base (const string &xb) |
void | set_response_limit (long size) |
void | set_timeout (int t) |
void | set_version (const string &v) |
void | tag_nested_sequences () |
Traverse DDS, set Sequence leaf nodes. More... | |
void | timeout_off () |
void | timeout_on () |
virtual void | transfer_attributes (DAS *das) |
BaseType * | var (const string &n, BaseType::btp_stack &s) |
BaseType * | var (const string &n, BaseType::btp_stack *s=0) |
Find the variable with the given 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... | |
virtual | ~DataDDS () |
Dataset Name Accessors | |
Get and set the dataset's name. This is the name of the dataset itself, and is not to be confused with the name of the file or disk on which it is stored. | |
string | get_dataset_name () const |
void | set_dataset_name (const string &n) |
File Name Accessor | |
Get and set the dataset's filename. This is the physical location on a disk where the dataset exists. The dataset name is simply a title.
| |
string | filename () |
void | filename (const string &fn) |
Container Name Accessor | |
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.
| |
string | container_name () |
void | container_name (const string &cn) |
Structure * | container () |
Protected Member Functions | |
void | duplicate (const DDS &dds) |
BaseType * | exact_match (const string &name, BaseType::btp_stack *s=0) |
BaseType * | leaf_match (const string &name, BaseType::btp_stack *s=0) |
This class adds some useful state information to the DDS structure. It is for use on the client side of the connection.
|
inherited |
|
inherited |
|
inherited |
libdap::DataDDS::DataDDS | ( | BaseTypeFactory * | factory, |
const string & | n = "" , |
||
const string & | v = "" , |
||
const string & | p = "" |
||
) |
factory | Use this BaseTypeFactory to instantiate the variables. Caller must free; can also be set using the set_factory() method. Never delete until just before deleting the DDS itself unless you intend to replace the factory with a new instance. |
n | The name of the dataset. Can also be set using the set_dataset_name() method. |
v | The server version. |
p | The protocol version. |
Definition at line 163 of file DataDDS.cc.
|
inherited |
bt | Source variable. |
Definition at line 470 of file DDS.cc.
References libdap::Structure::add_var(), DBG2, and libdap::BaseType::ptr_duplicate().
Referenced by libdap::DDS::container_name(), and libdap::DDXParser::ddx_end_document().
|
inherited |
bt | Source variable. |
Definition at line 493 of file DDS.cc.
References libdap::Structure::add_var_nocopy(), and DBG2.
Referenced by libdap::ConstraintEvaluator::eval_function_clauses().
|
inherited |
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.
all | If true, recursively check the individual members of compound variables. |
Definition at line 1279 of file DDS.cc.
References libdap::unique_names().
|
inherited |
|
inherited |
|
inherited |
Set the current container name and get or create a structure for that name.
Definition at line 403 of file DDS.cc.
References libdap::DDS::add_var(), and libdap::DDS::var().
|
inherited |
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 name given.
n | The name of the variable to remove. |
Definition at line 515 of file DDS.cc.
References libdap::Structure::del_var().
|
inherited |
|
virtual |
Displays the pointer value of this instance and then calls parent dump
strm | C++ i/o stream to dump the information to |
Reimplemented from libdap::DDS.
Definition at line 128 of file DataDDS.cc.
|
protectedinherited |
Definition at line 114 of file DDS.cc.
References DBG, libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by libdap::DDS::DDS(), and libdap::DDS::operator=().
|
protectedinherited |
Definition at line 645 of file DDS.cc.
References DBG2, libdap::BaseType::name(), libdap::DDS::var(), and libdap::BaseType::var().
Referenced by libdap::DDS::var().
|
inherited |
Gets the dataset file name.
Definition at line 289 of file DDS.cc.
Referenced by libdap::ResponseBuilder::get_cached_data_ddx(), and libdap::ResponseBuilder::send_data().
|
inherited |
|
virtualinherited |
Get the attribute table for the global attributes.
Definition at line 274 of file DDS.cc.
Referenced by libdap::DDXParser::ddx_start_document().
|
inlineinherited |
Definition at line 263 of file DDS.h.
Referenced by libdap::DDS::print_xml(), and libdap::DDS::print_xml_writer().
|
inlineinherited |
Definition at line 265 of file DDS.h.
Referenced by libdap::DDS::print_xml(), and libdap::DDS::print_xml_writer().
|
inlineinherited |
Definition at line 275 of file DDS.h.
Referenced by libdap::Connect::read_data_no_mime(), libdap::ResponseBuilder::send_das(), libdap::ResponseBuilder::send_data(), libdap::ResponseBuilder::send_dds(), and libdap::ResponseBuilder::send_ddx().
|
inherited |
Returns the dataset's name.
Definition at line 258 of file DDS.cc.
Referenced by libdap::ConstraintEvaluator::eval_function_clauses().
|
inlineinherited |
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.
Definition at line 239 of file DDS.h.
Referenced by libdap::ConstraintEvaluator::eval_function_clauses(), libdap::ResponseBuilder::read_data_from_cache(), libdap::Connect::request_ddx(), and libdap::Connect::request_ddx_url().
|
inline |
Definition at line 129 of file DataDDS.h.
Referenced by libdap::Sequence::deserialize(), libdap::ConstraintEvaluator::eval_function_clauses(), and libdap::Connect::read_data_no_mime().
|
inline |
Definition at line 133 of file DataDDS.h.
Referenced by libdap::Sequence::deserialize().
|
inline |
Definition at line 137 of file DataDDS.h.
Referenced by libdap::Sequence::deserialize().
|
inherited |
Get the size of a response. This method looks at the variables in the DDS a computes the number of bytes in the response.
constrained | Should the size of the whole DDS be used or should the current constraint be taken into account? |
Definition at line 449 of file DDS.cc.
Referenced by libdap::ResponseBuilder::send_data(), and libdap::ResponseBuilder::send_data_ddx().
|
inlineinherited |
Definition at line 280 of file DDS.h.
Referenced by libdap::DDS::print_xml(), and libdap::DDS::print_xml_writer().
|
inlineinherited |
Definition at line 286 of file DDS.h.
Referenced by libdap::ResponseBuilder::send_data(), and libdap::ResponseBuilder::send_data_ddx().
|
inherited |
|
inherited |
|
inline |
Definition at line 109 of file DataDDS.h.
Referenced by libdap::ConstraintEvaluator::eval_function_clauses().
Insert a copy of the BaseType before the position given.
i | The iterator that marks the position |
ptr | The BaseType object to copy and insert |
Definition at line 724 of file DDS.cc.
References libdap::BaseType::ptr_duplicate().
|
protectedinherited |
Definition at line 609 of file DDS.cc.
References DBG, libdap::BaseType::is_constructor_type(), libdap::BaseType::is_vector_type(), libdap::BaseType::name(), and libdap::BaseType::var().
Referenced by libdap::DDS::var().
|
inherited |
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.
Definition at line 1325 of file DDS.cc.
References DBG2, libdap::BaseType::name(), libdap::BaseType::set_send_p(), libdap::BaseType::type_name(), and libdap::DDS::var().
|
inherited |
Mark the member variable send_p
flags to state.
Definition at line 1371 of file DDS.cc.
Referenced by libdap::ResponseBuilder::send_data(), and libdap::ResponseBuilder::send_dds().
|
inherited |
Definition at line 793 of file DDS.cc.
References cannot_read_file.
Referenced by libdap::DDS::parse(), libdap::Ancillary::read_ancillary_dds(), libdap::Connect::request_dds(), and libdap::Connect::request_dds_url().
|
inherited |
Definition at line 814 of file DDS.cc.
References libdap::DDS::parse().
|
inherited |
in | Read the persistent DDS from this FILE*. |
InternalErr | Thrown if in is null |
Error | Thrown if the parse fails. |
Definition at line 843 of file DDS.cc.
References DBG2, dds_buffer(), dds_delete_buffer(), dds_switch_to_buffer(), ddsparse(), libdap::parser_arg::error(), and libdap::parser_arg::status().
|
inherited |
Definition at line 871 of file DDS.cc.
References libdap::id2www().
Referenced by main(), libdap::ResponseBuilder::send_dds(), and libdap::DODSFilter::send_dds().
|
inherited |
Definition at line 894 of file DDS.cc.
References libdap::id2www().
|
inherited |
Print those parts (variables) of the DDS structure to OS that are marked to be sent after evaluating the constraint expression.
Definition at line 941 of file DDS.cc.
References libdap::id2www().
Referenced by libdap::ResponseBuilder::dataset_constraint(), libdap::DODSFilter::dataset_constraint(), libdap::ResponseBuilder::send_data(), libdap::ResponseBuilder::send_dds(), and libdap::DODSFilter::send_dds().
|
inherited |
Print those parts (variables) of the DDS structure to OS that are marked to be sent after evaluating the constraint expression.
Definition at line 969 of file DDS.cc.
References libdap::id2www().
|
inherited |
Print the DAP2 DAS object using attribute information recorded this DDS object.
out | Write the DAS here. |
Definition at line 917 of file DDS.cc.
References libdap::AttrTable::print().
Referenced by libdap::ResponseBuilder::send_das().
|
inherited |
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.
out | Destination. |
constrained | True if the output should be limited to just those variables that are in the projection of the current constraint expression. |
blob | The dataBLOB href. |
Definition at line 1012 of file DDS.cc.
References c_dap20_namespace, c_dap32_namespace, c_default_dap20_schema_location, c_default_dap32_schema_location, libdap::DDS::get_dap_major(), libdap::DDS::get_dap_minor(), libdap::id2xml(), libdap::AttrTable::print_xml(), libdap::DDS::print_xml_writer(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by libdap::ResponseBuilder::dataset_constraint_ddx(), libdap::DODSFilter::dataset_constraint_ddx(), main(), and libdap::DODSFilter::send_ddx().
|
inherited |
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.
out | Destination ostream. |
constrained | True if the output should be limited to just those variables that are in the projection of the current constraint expression. |
blob | The dataBLOB href. |
Definition at line 1097 of file DDS.cc.
References c_dap20_namespace, c_dap32_namespace, c_default_dap20_schema_location, c_default_dap32_schema_location, c_xml_namespace, libdap::DDS::get_dap_major(), libdap::DDS::get_dap_minor(), libdap::DDS::get_request_xml_base(), grddl_transformation_dap32, libdap::id2xml(), libdap::AttrTable::print_xml(), libdap::DDS::print_xml_writer(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
|
inherited |
Definition at line 1179 of file DDS.cc.
References c_dap20_namespace, c_dap32_namespace, c_dap_20_n_sl, c_dap_32_n_sl, c_xml_namespace, libdap::DDS::get_dap_major(), libdap::DDS::get_dap_minor(), XMLWriter::get_doc(), libdap::DDS::get_request_xml_base(), XMLWriter::get_writer(), grddl_transformation_dap32, libdap::AttrTable::print_xml_writer(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by libdap::DDS::print_xml(), and libdap::ResponseBuilder::send_ddx().
|
inherited |
Definition at line 303 of file DDS.cc.
Referenced by libdap::DDS::set_dap_version().
|
inherited |
Definition at line 319 of file DDS.cc.
Referenced by libdap::DDS::set_dap_version().
|
inherited |
Given the dap protocol version either from a MIME header or from within the DDX Dataset element, parse that string and set the DDS fields.
version_string | The version string from the MIME (request) or XML document. |
Definition at line 337 of file DDS.cc.
References DBG, libdap::DDS::set_dap_major(), and libdap::DDS::set_dap_minor().
Referenced by libdap::ResponseBuilder::cache_data_ddx(), libdap::DDXParser::ddx_sax2_start_element(), and libdap::ResponseBuilder::send_data().
|
inherited |
Given the dap protocol version, parse that string and set the DDS fields. This version of th method takes a double - a value that would be passed to a server-side function. This provides a way to set the protocol using stuff in the URL.
d | The protocol version requested by the client, as a double. |
Definition at line 370 of file DDS.cc.
References DBG, libdap::DDS::set_dap_major(), and libdap::DDS::set_dap_minor().
|
inherited |
Sets the dataset name.
Definition at line 265 of file DDS.cc.
Referenced by libdap::DDXParser::ddx_sax2_start_element(), libdap::ResponseBuilder::get_cached_data_ddx(), and libdap::ResponseBuilder::send_data().
|
inlineinherited |
Set the factory class used to instantiate variables during the parse of a DDS.
factory | The factory this DDS should use. Caller must free factory when done with this DDS. |
Definition at line 250 of file DDS.h.
Referenced by libdap::ResponseBuilder::get_cached_data_ddx(), and libdap::ResponseBuilder::send_data().
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inherited |
Definition at line 766 of file DDS.cc.
Referenced by libdap::ResponseBuilder::send_das(), libdap::ResponseBuilder::send_data(), libdap::DODSFilter::send_data(), libdap::ResponseBuilder::send_data_ddx(), libdap::DODSFilter::send_data_ddx(), and libdap::ResponseBuilder::send_dds().
|
inline |
|
inherited |
Definition at line 781 of file DDS.cc.
References libdap::dods_sequence_c, and libdap::dods_structure_c.
Referenced by libdap::ResponseBuilder::send_data(), libdap::DODSFilter::send_data(), libdap::ResponseBuilder::send_data_ddx(), and libdap::DODSFilter::send_data_ddx().
|
inherited |
Definition at line 758 of file DDS.cc.
Referenced by libdap::Grid::intern_data(), libdap::BaseType::intern_data(), libdap::Sequence::read_row(), libdap::Str::serialize(), libdap::Int16::serialize(), libdap::UInt16::serialize(), libdap::Float32::serialize(), libdap::UInt32::serialize(), libdap::Int32::serialize(), libdap::Float64::serialize(), libdap::Byte::serialize(), libdap::Vector::serialize(), libdap::Structure::serialize(), and libdap::Grid::serialize().
|
inherited |
Definition at line 750 of file DDS.cc.
Referenced by libdap::Grid::intern_data(), libdap::BaseType::intern_data(), libdap::Sequence::read_row(), libdap::Str::serialize(), libdap::Int16::serialize(), libdap::UInt16::serialize(), libdap::Float32::serialize(), libdap::UInt32::serialize(), libdap::Int32::serialize(), libdap::Float64::serialize(), libdap::Byte::serialize(), libdap::Vector::serialize(), libdap::Structure::serialize(), and libdap::Grid::serialize().
|
virtualinherited |
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.
das | Transfer (copy) attributes from this DAS object. |
Definition at line 201 of file DDS.cc.
References libdap::AttrTable::append_container(), libdap::AttrTable::attr_begin(), libdap::Attr_container, libdap::AttrTable::attr_end(), libdap::DAS::container_name(), DBG, libdap::Error::get_error_message(), libdap::AttrTable::get_name(), libdap::DAS::get_top_level_attributes(), libdap::DDS::var(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by libdap::ResponseBuilder::get_cached_data_ddx(), main(), and libdap::ResponseBuilder::send_data().
|
inherited |
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.
Definition at line 571 of file DDS.cc.
Referenced by libdap::DDS::container_name(), libdap::DDS::exact_match(), libdap::function_miic_ex2(), libdap::DDS::mark(), and libdap::DDS::transfer_attributes().
|
inherited |
Returns a pointer to the named variable. If the name contains one or more field separators then the function looks for a variable whose name matches exactly. If the 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.
n | The name of the variable to find. |
s | If given, this value-result parameter holds the path to the returned BaseType. Thus, this method can return the FQN for the variable n. |
Definition at line 595 of file DDS.cc.
References libdap::DDS::exact_match(), libdap::DDS::leaf_match(), libdap::Structure::var(), and libdap::www2id().
|
inherited |
Returns the first variable in the DDS.
Definition at line 678 of file DDS.cc.
Referenced by libdap::ResponseBuilder::dataset_constraint(), libdap::DODSFilter::dataset_constraint(), libdap::ResponseBuilder::dataset_constraint_ddx(), libdap::DODSFilter::dataset_constraint_ddx(), libdap::DDS::duplicate(), libdap::ResponseBuilder::get_cached_data_ddx(), libdap::DDS::print_xml(), libdap::DDS::print_xml_writer(), libdap::ResponseBuilder::read_data_from_cache(), libdap::ResponseBuilder::send_data(), and libdap::DDS::transfer_attributes().
|
inherited |
Definition at line 690 of file DDS.cc.
Referenced by libdap::ResponseBuilder::dataset_constraint(), libdap::DODSFilter::dataset_constraint(), libdap::ResponseBuilder::dataset_constraint_ddx(), libdap::DODSFilter::dataset_constraint_ddx(), libdap::DDS::duplicate(), libdap::ResponseBuilder::get_cached_data_ddx(), libdap::DDS::print_xml(), libdap::DDS::print_xml_writer(), libdap::ResponseBuilder::read_data_from_cache(), libdap::ResponseBuilder::send_data(), and libdap::DDS::transfer_attributes().
|
inherited |
|
inherited |