#include <DataDDS.h>
Inheritance diagram for libdap::DataDDS:
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. | |
bool | check_semantics (bool all=false) |
Check the semantics of each of the variables represented in the DDS. | |
DataDDS (BaseTypeFactory *factory, const string &n="", const string &v="", const string &p="") | |
Make an instance of DataDDS A DataDDS instance is a DDS with aditional information about the version of the server from which the data came. | |
void | del_var (Vars_iter i1, Vars_iter i2) |
Removes a range of variables from the DDS. | |
void | del_var (Vars_iter i) |
Removes a variable from the DDS. | |
void | del_var (const string &n) |
Removes a variable from the DDS. | |
virtual void | dump (ostream &strm) const |
dumps information about this object | |
virtual AttrTable & | get_attr_table () |
int | get_client_dap_major () const |
Get the DAP major version as sent by the client. | |
int | get_client_dap_minor () const |
Get the DAP minor version as sent by the client. | |
int | get_dap_major () const |
Get the DAP major version as sent by the client. | |
int | get_dap_minor () const |
Get the DAP minor version as sent by the client. | |
BaseTypeFactory * | get_factory () const |
string | get_protocol () const |
int | get_protocol_major () const |
int | get_protocol_minor () const |
string | get_request_xml_base () const |
Get the URL that will return this DDS/DDX/DataThing. | |
int | get_timeout () |
BaseType * | get_var_index (int i) |
Get a variable. | |
Vars_iter | get_vars_iter (int i) |
Get an iterator. | |
string | get_version () const |
Get the server version string, unparsed. | |
int | get_version_major () const |
Returns the major version number. | |
int | get_version_minor () const |
Returns the minor version number. | |
bool | mark (const string &name, bool state) |
Mark the send_p flag of the named variable to state. | |
void | mark_all (bool state) |
int | num_var () |
Returns the number of variables in the DDS. | |
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. | |
void | parse (int fd) |
Parse a DDS from a file indicated by the input file descriptor. | |
void | parse (string fname) |
Parse a DDS from a file with the given name. | |
void | print (ostream &out) |
Print the entire DDS to the specified ostream. | |
void | print (FILE *out) |
Print the entire DDS to the specified file. | |
void | print_constrained (ostream &out) |
Print a constrained DDS to the specified ostream. | |
void | print_constrained (FILE *out) |
Print a constrained DDS to the specified file. | |
void | print_xml (ostream &out, bool constrained, const string &blob) |
void | print_xml (FILE *out, bool constrained, const string &blob) |
void | set_client_dap_major (int p) |
Set the DAP major version (typically using info from the client). | |
void | set_client_dap_minor (int p) |
Set the DAP minor version (typically using info from the client). | |
void | set_client_dap_version (const string &version_string) |
void | set_dap_major (int p) |
Set the DAP major version (typically using info from the client). | |
void | set_dap_minor (int p) |
Set the DAP minor version (typically using info from the client). | |
void | set_dap_version (const string &version_string) |
BaseTypeFactory * | set_factory (BaseTypeFactory *factory) |
void | set_protocol (const string &p) |
void | set_request_xml_base (const string &xb) |
void | set_timeout (int t) |
void | set_version (const string &v) |
void | tag_nested_sequences () |
Traverse DDS, set Sequence leaf nodes. | |
void | timeout_off () |
void | timeout_on () |
virtual void | transfer_attributes (DAS *das) |
BaseType * | var (const string &n, BaseType::btp_stack *s=0) |
Find the variable with the given name. | |
BaseType * | var (const string &n, BaseType::btp_stack &s) |
Vars_iter | var_begin () |
Returns the first variable in the DDS. | |
Vars_iter | var_end () |
Return an iterator. | |
Vars_riter | var_rbegin () |
Return a reverse iterator. | |
Vars_riter | var_rend () |
Return a reverse iterator. | |
virtual | ~DataDDS () |
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.
| |
Structure * | container () |
void | container_name (const string &cn) |
string | container_name () |
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.
| |
void | filename (const string &fn) |
string | filename () |
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) |
Protected Member Functions | |
void | duplicate (const DDS &dds) |
BaseType * | exact_match (const string &name, BaseType::btp_stack *s=0) |
virtual AttrTable * | find_matching_container (AttrTable::entry *source, BaseType **dest_variable) |
BaseType * | leaf_match (const string &name, BaseType::btp_stack *s=0) |
Update: I removed the DEFAULT_BASETYPE_FACTORY switch because it caused more confusion than it avoided. See Trac #130.
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.
Definition at line 77 of file DataDDS.h.
typedef std::vector<BaseType *>::const_iterator libdap::DDS::Vars_citer [inherited] |
typedef std::vector<BaseType *>::iterator libdap::DDS::Vars_iter [inherited] |
typedef std::vector<BaseType *>::reverse_iterator libdap::DDS::Vars_riter [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 istelf 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.
void libdap::DDS::add_var | ( | BaseType * | bt | ) | [inherited] |
bt | Source variable. |
Definition at line 525 of file DDS.cc.
References libdap::Structure::add_var(), DBG2, and libdap::BaseType::ptr_duplicate().
Referenced by libdap::DDS::container_name(), and libdap::DDS::duplicate().
Here is the call graph for this function:
bool libdap::DDS::check_semantics | ( | bool | all = false |
) | [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 1132 of file DDS.cc.
References libdap::unique_names().
Here is the call graph for this function:
Structure * libdap::DDS::container | ( | ) | [inherited] |
void libdap::DDS::container_name | ( | const string & | cn | ) | [inherited] |
Set the current container name and get or create a structure for that name.
Definition at line 484 of file DDS.cc.
References libdap::DDS::add_var(), and libdap::DDS::var().
Here is the call graph for this function:
string libdap::DDS::container_name | ( | ) | [inherited] |
void libdap::DDS::del_var | ( | Vars_iter | i | ) | [inherited] |
void libdap::DDS::del_var | ( | const string & | n | ) | [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 552 of file DDS.cc.
References libdap::Structure::del_var().
Here is the call graph for this function:
void libdap::DataDDS::dump | ( | ostream & | strm | ) | const [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.
References libdap::DDS::dump(), libdap::DapIndent::Indent(), libdap::DapIndent::LMarg(), and libdap::DapIndent::UnIndent().
Here is the call graph for this function:
void libdap::DDS::duplicate | ( | const DDS & | dds | ) | [protected, inherited] |
Definition at line 95 of file DDS.cc.
References libdap::DDS::add_var(), libdap::DDS::d_client_dap_major, libdap::DDS::d_client_dap_minor, libdap::DDS::d_container, libdap::DDS::d_factory, DBG, libdap::DDS::name, libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by libdap::DDS::DDS(), and libdap::DDS::operator=().
Here is the call graph for this function:
BaseType * libdap::DDS::exact_match | ( | const string & | name, | |
BaseType::btp_stack * | s = 0 | |||
) | [protected, inherited] |
Definition at line 682 of file DDS.cc.
References DBG2, libdap::BaseType::name(), libdap::BaseType::var(), and libdap::DDS::var().
Referenced by libdap::DDS::var().
Here is the call graph for this function:
void libdap::DDS::filename | ( | const string & | fn | ) | [inherited] |
string libdap::DDS::filename | ( | ) | [inherited] |
AttrTable * libdap::DDS::find_matching_container | ( | AttrTable::entry * | source, | |
BaseType ** | dest_variable | |||
) | [protected, virtual, inherited] |
Given an attribute container from a DAS, find or make a destination for its contents in the DDS.
source | Attribute table | |
dest_variable | result param that holds the BaseType |
Definition at line 224 of file DDS.cc.
References libdap::AttrTable::append_container(), libdap::Attr_container, DBG, libdap::dods_grid_c, libdap::AttrTable::find_container(), libdap::BaseType::get_attr_table(), libdap::BaseType::get_parent(), libdap::AttrTable::entry::name, libdap::BaseType::type(), libdap::AttrTable::entry::type, and libdap::DDS::var().
Referenced by libdap::DDS::transfer_attributes().
Here is the call graph for this function:
AttrTable & libdap::DDS::get_attr_table | ( | ) | [virtual, inherited] |
Get the attribute table for the global attributes.
Definition at line 385 of file DDS.cc.
Referenced by libdap::DDXParser::ddx_start_document().
int libdap::DDS::get_client_dap_major | ( | ) | const [inline, inherited] |
int libdap::DDS::get_client_dap_minor | ( | ) | const [inline, inherited] |
string libdap::DDS::get_dataset_name | ( | ) | const [inherited] |
BaseTypeFactory* libdap::DDS::get_factory | ( | ) | const [inline, inherited] |
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 247 of file DDS.h.
Referenced by libdap::Connect::request_ddx().
string libdap::DataDDS::get_protocol | ( | ) | const [inline] |
int libdap::DataDDS::get_protocol_major | ( | ) | const [inline] |
int libdap::DataDDS::get_protocol_minor | ( | ) | const [inline] |
string libdap::DDS::get_request_xml_base | ( | ) | const [inline, inherited] |
BaseType * libdap::DDS::get_var_index | ( | int | i | ) | [inherited] |
DDS::Vars_iter libdap::DDS::get_vars_iter | ( | int | i | ) | [inherited] |
BaseType * libdap::DDS::leaf_match | ( | const string & | name, | |
BaseType::btp_stack * | s = 0 | |||
) | [protected, inherited] |
bool libdap::DDS::mark | ( | const string & | n, | |
bool | state | |||
) | [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 1178 of file DDS.cc.
References DBG2, libdap::BaseType::name(), libdap::BaseType::set_send_p(), libdap::BaseType::type_name(), and libdap::DDS::var().
Here is the call graph for this function:
void libdap::DDS::mark_all | ( | bool | state | ) | [inherited] |
void libdap::DDS::parse | ( | FILE * | in = stdin |
) | [inherited] |
in | Read the persistent DDS from this FILE*. |
InternalErr | Thrown if in is null | |
Error | Thrown if the parse fails. |
Definition at line 857 of file DDS.cc.
References DBG2, dds_buffer(), dds_delete_buffer(), dds_switch_to_buffer(), and ddsparse().
Here is the call graph for this function:
void libdap::DDS::parse | ( | int | fd | ) | [inherited] |
Definition at line 828 of file DDS.cc.
References libdap::DDS::parse().
Here is the call graph for this function:
void libdap::DDS::parse | ( | string | fname | ) | [inherited] |
Definition at line 807 of file DDS.cc.
References cannot_read_file.
Referenced by libdap::DDS::parse(), libdap::Ancillary::read_ancillary_dds(), libdap::Connect::request_dds(), libdap::Connect::request_dds_url(), libdap::Connect::request_ddx(), and libdap::Connect::request_ddx_url().
void libdap::DDS::print | ( | ostream & | out | ) | [inherited] |
Definition at line 899 of file DDS.cc.
References libdap::id2www().
Here is the call graph for this function:
void libdap::DDS::print | ( | FILE * | out | ) | [inherited] |
Definition at line 884 of file DDS.cc.
References libdap::id2www().
Referenced by main(), and libdap::DODSFilter::send_dds().
Here is the call graph for this function:
void libdap::DDS::print_constrained | ( | ostream & | out | ) | [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 950 of file DDS.cc.
References libdap::id2www().
Here is the call graph for this function:
void libdap::DDS::print_constrained | ( | FILE * | out | ) | [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 923 of file DDS.cc.
References libdap::id2www().
Referenced by libdap::DODSFilter::dataset_constraint(), and libdap::DODSFilter::send_dds().
Here is the call graph for this function:
void libdap::DDS::print_xml | ( | ostream & | out, | |
bool | constrained, | |||
const string & | blob | |||
) | [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 1062 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_client_dap_major(), libdap::DDS::get_client_dap_minor(), libdap::DDS::get_request_xml_base(), grddl_transformation_dap32, libdap::id2xml(), libdap::AttrTable::print_xml(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Here is the call graph for this function:
void libdap::DDS::print_xml | ( | FILE * | out, | |
bool | constrained, | |||
const string & | blob | |||
) | [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 992 of file DDS.cc.
References c_dap20_namespace, c_dap32_namespace, c_default_dap20_schema_location, c_default_dap32_schema_location, libdap::DDS::get_client_dap_major(), libdap::DDS::get_client_dap_minor(), libdap::id2xml(), libdap::AttrTable::print_xml(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by main(), and libdap::DODSFilter::send_ddx().
Here is the call graph for this function:
void libdap::DDS::set_client_dap_major | ( | int | p | ) | [inline, inherited] |
void libdap::DDS::set_client_dap_minor | ( | int | p | ) | [inline, inherited] |
void libdap::DDS::set_client_dap_version | ( | const string & | version_string | ) | [inherited] |
Given a version string passed to a server from a client in the XDAP-Accept MIME header, parse that string and record the major and minor protocol version numbers. This method differs from set_dap_version() in that it is storing the version that the client would _like_ the server to use. The actual protocol version to which this DDS/DDX conforms is found using the get_dap_major() and get_dap_minor() methods.
version_string |
Definition at line 447 of file DDS.cc.
References DBG, libdap::DDS::set_client_dap_major(), and libdap::DDS::set_client_dap_minor().
Here is the call graph for this function:
void libdap::DDS::set_dap_major | ( | int | p | ) | [inline, inherited] |
void libdap::DDS::set_dap_minor | ( | int | p | ) | [inline, inherited] |
void libdap::DDS::set_dap_version | ( | const string & | version_string | ) | [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 of XML document. |
Definition at line 419 of file DDS.cc.
References DBG, libdap::DDS::set_dap_major(), and libdap::DDS::set_dap_minor().
Referenced by libdap::DDXParser::ddx_start_element().
Here is the call graph for this function:
void libdap::DDS::set_dataset_name | ( | const string & | n | ) | [inherited] |
Sets the dataset name.
Definition at line 376 of file DDS.cc.
Referenced by libdap::DDXParser::ddx_start_element().
BaseTypeFactory* libdap::DDS::set_factory | ( | BaseTypeFactory * | factory | ) | [inline, inherited] |
void libdap::DataDDS::set_protocol | ( | const string & | p | ) | [inline] |
void libdap::DDS::set_request_xml_base | ( | const string & | xb | ) | [inline, inherited] |
void libdap::DDS::set_timeout | ( | int | t | ) | [inherited] |
void libdap::DataDDS::set_version | ( | const string & | v | ) | [inline] |
void libdap::DDS::tag_nested_sequences | ( | ) | [inherited] |
Definition at line 795 of file DDS.cc.
References libdap::dods_sequence_c, and libdap::dods_structure_c.
Referenced by libdap::DODSFilter::send_data().
void libdap::DDS::timeout_off | ( | ) | [inherited] |
Definition at line 772 of file DDS.cc.
Referenced by libdap::Grid::intern_data(), libdap::BaseType::intern_data(), libdap::Sequence::read_row(), libdap::Vector::serialize(), libdap::UInt32::serialize(), libdap::UInt16::serialize(), libdap::Structure::serialize(), libdap::Str::serialize(), libdap::Int32::serialize(), libdap::Int16::serialize(), libdap::Grid::serialize(), libdap::Float64::serialize(), libdap::Float32::serialize(), and libdap::Byte::serialize().
void libdap::DDS::timeout_on | ( | ) | [inherited] |
Definition at line 764 of file DDS.cc.
Referenced by libdap::Grid::intern_data(), libdap::BaseType::intern_data(), libdap::Sequence::read_row(), libdap::Vector::serialize(), libdap::UInt32::serialize(), libdap::UInt16::serialize(), libdap::Structure::serialize(), libdap::Str::serialize(), libdap::Int32::serialize(), libdap::Int16::serialize(), libdap::Grid::serialize(), libdap::Float64::serialize(), libdap::Float32::serialize(), and libdap::Byte::serialize().
void libdap::DDS::transfer_attributes | ( | DAS * | das | ) | [virtual, inherited] |
Given a DAS object, scavenge attributes from it and load them into this object and the variables it contains.
If a DAS contains attributes from the current (8/2006) HDF4 server with names like var_dim_0, var_dim_1, then make those attribute tables sub tables of the var table.
das | Get attribute information from this DAS. |
Definition at line 288 of file DDS.cc.
References libdap::AttrTable::append_attr(), libdap::AttrTable::append_container(), libdap::AttrTable::attr_begin(), libdap::Attr_container, libdap::AttrTable::attr_end(), libdap::AttrTable::entry::attributes, libdap::DAS::container_name(), DBG, libdap::DDS::find_matching_container(), libdap::AttrTable::get_attr_vector(), libdap::AttrTable::get_name(), libdap::DAS::get_top_level_attributes(), libdap::AttrTable::get_type(), and libdap::BaseType::is_constructor_type().
Referenced by main().
Here is the call graph for this function:
BaseType * libdap::DDS::var | ( | const string & | n, | |
BaseType::btp_stack * | s = 0 | |||
) | [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 632 of file DDS.cc.
References libdap::DDS::exact_match(), libdap::DDS::leaf_match(), libdap::Structure::var(), and libdap::www2id().
Here is the call graph for this function:
BaseType * libdap::DDS::var | ( | const string & | n, | |
BaseType::btp_stack & | s | |||
) | [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 608 of file DDS.cc.
Referenced by libdap::DDS::container_name(), libdap::DDS::exact_match(), libdap::DDS::find_matching_container(), and libdap::DDS::mark().
DDS::Vars_iter libdap::DDS::var_begin | ( | ) | [inherited] |
Definition at line 715 of file DDS.cc.
Referenced by libdap::DODSFilter::dataset_constraint(), libdap::DDS::duplicate(), and libdap::DDS::print_xml().
DDS::Vars_iter libdap::DDS::var_end | ( | ) | [inherited] |
Definition at line 727 of file DDS.cc.
Referenced by libdap::DODSFilter::dataset_constraint(), libdap::DDS::duplicate(), and libdap::DDS::print_xml().
DDS::Vars_riter libdap::DDS::var_rbegin | ( | ) | [inherited] |
DDS::Vars_riter libdap::DDS::var_rend | ( | ) | [inherited] |