#include <DAS.h>
Inheritance diagram for DAS:
Public Types | |
typedef std::vector< entry * >::const_iterator | Attr_citer |
typedef std::vector< entry * >::iterator | Attr_iter |
Public Member Functions | |
void | add_container_alias (const string &name, AttrTable *src) |
Add an alias to a container held by this attribute table. | |
void | add_value_alias (AttrTable *das, const string &name, const string &source) |
Add an alias for an attribute. | |
unsigned int | append_attr (const string &name, const string &type, vector< string > *values) |
Add an attribute to the table. | |
unsigned int | append_attr (const string &name, const string &type, const string &value) |
Add an attribute to the table. | |
AttrTable * | append_container (AttrTable *at, const string &name) |
Add a container to the attribute table. | |
AttrTable * | append_container (const string &name) |
Add a container to the attribute table. | |
bool | attr_alias (const string &alias, const string &name) |
bool | attr_alias (const string &alias, AttrTable *at, const string &name) |
Adds an alias to the set of attributes. | |
DAS (AttrTable *attr_table, string name) | |
DAS (AttrTable *dflt=(AttrTable *) NULL, unsigned int sz=0) | |
virtual void | dump (ostream &strm) const |
dumps information about this object | |
void | erase () |
Erase the attribute table. | |
void | find (const string &target, AttrTable **at, Attr_iter *iter) |
AttrTable * | find_container (const string &target) |
Find an attribute with a given name. | |
string | get_name () const |
Get the name of this attribute table. | |
string | get_name (Attr_iter &i) |
AttrTable * | get_parent () const |
unsigned int | get_size () const |
Get the number of entries in this attribute table. | |
AttrTable * | get_table (const string &name) |
Returns the attribute table with the given name. | |
AttrTable * | get_table (Attr_iter &i) |
Returns the attribute table. | |
void | print (FILE *out, string pad=" ", bool dereference=false) |
Prints the attribute table. | |
void | print (FILE *out, bool dereference=false) |
void | print_xml (FILE *out, string pad=" ", bool constrained=false) |
AttrTable * | recurrsive_find (const string &target, Attr_iter *location) |
void | set_name (const string &n) |
Set the name of this attribute table. | |
AttrTable::Attr_iter | var_begin () |
AttrTable::Attr_iter | var_end () |
virtual | ~DAS () |
AttrTable * | add_table (const string &name, AttrTable *at) |
Adds an attribute table to the DAS. | |
get information using an iterator | |
Attr_iter | attr_begin () |
Attr_iter | attr_end () |
Attr_iter | del_attr_table (Attr_iter iter) |
string | get_attr (Attr_iter iter, unsigned int i=0) |
string | get_attr (const string &name, unsigned int i=0) |
Attr_iter | get_attr_iter (int i) |
unsigned int | get_attr_num (Attr_iter iter) |
AttrTable * | get_attr_table (Attr_iter iter) |
AttrType | get_attr_type (Attr_iter iter) |
std::vector< string > * | get_attr_vector (Attr_iter iter) |
string | get_name (Attr_iter iter) |
string | get_type (Attr_iter iter) |
bool | is_container (Attr_iter iter) |
Accessors using an attribute name | |
Each of the following accessors get information using the name of an attribute. They perform a simple search for the name in this attribute table only; sub-tables are not searched and the dot notation is not recognized. | |
void | del_attr (const string &name, int i=-1) |
Deletes an attribute. | |
unsigned int | get_attr_num (const string &name) |
Get the number of attributes in this container. | |
AttrTable * | get_attr_table (const string &name) |
Get an attribute container. | |
AttrType | get_attr_type (const string &name) |
Get the type of an attribute. | |
vector< string > * | get_attr_vector (const string &name) |
Get a vector-valued attribute. | |
string | get_type (const string &name) |
Get the type name of an attribute within this attribute table. | |
parse() | |
void | parse (FILE *in=stdin) |
Reads a DAS from an open file descriptor. | |
void | parse (int fd) |
Read attributes from a file descriptor. | |
void | parse (string fname) |
Reads a DAS from the named file. | |
Protected Member Functions | |
void | clone (const AttrTable &at) |
AttrTable * | das_find (string name) |
void | simple_print (FILE *out, string pad, Attr_iter i, bool dereference) |
A value may also consist of a set of other name-value pairs. This makes it possible to nest collections of attributes, giving rise to a hierarchy of attributes. DAP2 uses this structure to provide information about variables in a dataset. For example, consider the dataset used in the DDS example earlier.
In the following example of a DAS, several of the attribute collections have names corresponding to the names of variables in the DDS example. The attributes in that collection are said to belong to that variable. For example, the lat
variable has an attribute ``units'' of ``degrees_north''.
Attributes { GLOBAL { String title "Reynolds Optimum Interpolation (OI) SST"; } lat { String units "degrees_north"; String long_name "Latitude"; Float64 actual_range 89.5, -89.5; } lon { String units "degrees_east"; String long_name "Longitude"; Float64 actual_range 0.5, 359.5; } time { String units "days since 1-1-1 00:00:00"; String long_name "Time"; Float64 actual_range 726468., 729289.; String delta_t "0000-00-07 00:00:00"; } sst { String long_name "Weekly Means of Sea Surface Temperature"; Float64 actual_range -1.8, 35.09; String units "degC"; Float64 add_offset 0.; Float64 scale_factor 0.0099999998; Int32 missing_value 32767; } }
Attributes may have arbitrary names, although in most datasets it is important to choose these names so a reader will know what they describe. In the above example, the ``GLOBAL'' attribute provides information about the entire dataset.
Data attribute information is an important part of the the data provided to a DAP2 client by a server, and the DAS is how this data is packaged for sending (and how it is received).
The DAS class is simply a sequence of attribute tables and names. It may be thought of as the top level of the attribute hierarchy.
Definition at line 121 of file DAS.h.
|
Definition at line 226 of file AttrTable.h. Referenced by AttrTable::clone(), and AttrTable::dump(). |
|
|
Create a DAS from a single attribute table.
|
|
Create a DAS object with one attribute table. Use
Definition at line 102 of file DAS.cc. References AttrTable::append_container(), and www2id(). |
Here is the call graph for this function:
|
|
|
Definition at line 789 of file AttrTable.cc. References AttrTable::entry::aliased_to, AttrTable::attr_end(), AttrTable::entry::attributes, AttrTable::get_name(), AttrTable::entry::is_alias, AttrTable::entry::name, AttrTable::entry::type, and www2id(). |
Here is the call graph for this function:
|
Definition at line 160 of file DAS.cc. References AttrTable::append_container(), and DBG. |
Here is the call graph for this function:
|
Assume source names an attribute value in some container. Add an alias name for that value in this object.
Definition at line 821 of file AttrTable.cc. References AttrTable::entry::aliased_to, AttrTable::entry::attr, AttrTable::attr_end(), AttrTable::Attr_iter, AttrTable::entry::attributes, AttrTable::find(), AttrTable::get_attr_table(), AttrTable::get_attr_type(), AttrTable::entry::is_alias, AttrTable::is_container(), AttrTable::entry::name, AttrTable::entry::type, and www2id(). Referenced by AttrTable::attr_alias(). |
Here is the call graph for this function:
|
This version of append_attr() takes a vector<string> of values. If the given name already refers to an attribute, and the attribute has values, append the new values to the existing ones.
The function throws an Error if the attribute is a container, or if the type of the input value does not match the existing attribute's type. Use
This method performs a simple search for
Definition at line 257 of file AttrTable.cc. References AttrTable::entry::attr, AttrTable::Attr_iter, AttrTable::get_type(), AttrTable::entry::is_alias, AttrTable::entry::name, String_to_AttrType(), AttrTable::entry::type, and www2id(). |
Here is the call graph for this function:
|
If the given name already refers to an attribute, and the attribute has a value, the given value is appended to the attribute vector. Calling this function repeatedly is the way to append to an attribute vector.
The function throws an Error if the attribute is a container, or if the type of the input value does not match the existing attribute's type. Use
This method performs a simple search for
Definition at line 204 of file AttrTable.cc. References AttrTable::entry::attr, AttrTable::Attr_iter, AttrTable::get_type(), AttrTable::entry::is_alias, AttrTable::entry::name, String_to_AttrType(), AttrTable::entry::type, and www2id(). Referenced by DDXParser::ddx_end_element(), DDS::transfer_attributes(), and Constructor::transfer_attributes(). |
Here is the call graph for this function:
|
Append a new attribute container to this attribute table. The new container is
Definition at line 331 of file AttrTable.cc. References AttrTable::attr_end(), AttrTable::entry::attributes, AttrTable::d_parent, DBG, AttrTable::entry::is_alias, AttrTable::entry::name, AttrTable::set_name(), AttrTable::entry::type, and www2id(). |
Here is the call graph for this function:
|
Create and append an attribute container to this AttrTable. If this attribute table already contains an attribute container called
Definition at line 303 of file AttrTable.cc. Referenced by add_table(), DAS(), DDS::find_matching_container(), Constructor::find_matching_container(), DDS::transfer_attributes(), and Constructor::transfer_attributes(). |
|
Definition at line 901 of file AttrTable.cc. References AttrTable::attr_alias(). |
Here is the call graph for this function:
|
Once an alias is inserted into an attribute table, reading the attributes for alias will return those stored for name.
Two forms for this function exist: one searches for name in the AttrTable referenced by at while the other uses
Definition at line 887 of file AttrTable.cc. References AttrTable::add_value_alias(). Referenced by AttrTable::attr_alias(). |
Here is the call graph for this function:
|
Get an iterator to the first entry in this attribute table.
Definition at line 609 of file AttrTable.cc. Referenced by AttrTable::print_xml(), AttrTable::recurrsive_find(), DDS::transfer_attributes(), Constructor::transfer_attributes(), and var_begin(). |
|
Get an iterator to the end attribute table. Does not point to the last attribute in the table
Definition at line 618 of file AttrTable.cc. Referenced by AttrTable::add_container_alias(), AttrTable::add_value_alias(), AttrTable::append_container(), AttrTable::print_xml(), AttrTable::recurrsive_find(), DDS::transfer_attributes(), Constructor::transfer_attributes(), and var_end(). |
|
Clone the given attribute table in Definition at line 106 of file AttrTable.cc. References AttrTable::Attr_citer, AttrTable::attr_map, AttrTable::d_name, and AttrTable::d_parent. Referenced by AttrTable::AttrTable(), AttrTable::entry::entry(), AttrTable::entry::operator=(), and AttrTable::operator=(). |
|
Definition at line 73 of file DAS.cc. References AttrTable::find_container(). |
Here is the call graph for this function:
|
Delete the attribute named
You can use this function to delete container attributes, although the
Definition at line 577 of file AttrTable.cc. References AttrTable::entry::attr, AttrTable::Attr_iter, AttrTable::erase(), and www2id(). |
Here is the call graph for this function:
|
Delete the iterator. Since AttrTable stores pointers to AttrTable objects, the caller should be sure to delete the AttrTable itself. This method does not take care of that operation.
Definition at line 673 of file AttrTable.cc. References AttrTable::erase(). |
Here is the call graph for this function:
|
Displays the pointer value of this instance and then calls parent dump
Reimplemented from AttrTable. Definition at line 291 of file DAS.cc. References AttrTable::dump(), DapIndent::Indent(), and DapIndent::UnIndent(). |
Here is the call graph for this function:
|
Erase the entire attribute table. This returns an AttrTable to the empty state that's the same as the object generated by the null constructor. Definition at line 910 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by AttrTable::del_attr(), AttrTable::del_attr_table(), and AISMerge::merge(). |
|
Look for an attribute or an attribute container. If used to search for an attribute container, this method returns the container's parent using the value-result parameter
Definition at line 370 of file AttrTable.cc. References AttrTable::find_container(), AttrTable::recurrsive_find(), and AttrTable::simple_find(). Referenced by AttrTable::add_value_alias(), and AttrTable::find_container(). |
Here is the call graph for this function:
|
Look in this attribute table for an attribute container named To search the entire DAS object, make sure to invoke this method from that object.
Definition at line 464 of file AttrTable.cc. References AttrTable::find(). Referenced by das_find(), AttrTable::find(), DDS::find_matching_container(), Constructor::find_matching_container(), and AttrTable::get_attr_table(). |
Here is the call graph for this function:
|
Returns the value of an attribute. If the attribute has a vector value, you can indicate which is the desired value with the index argument, i. If the argument is omitted, the first value is returned. If the attribute has only a single value, the index argument is ignored. If i is greater than the number of elements in the attribute, an error is produced. All values in an attribute table are stored as string data. They may be converted to a more appropriate internal format by the calling program.
Definition at line 733 of file AttrTable.cc. References Attr_container. |
|
Definition at line 756 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by AttrTable::print_xml(). |
|
Given an index
Definition at line 632 of file AttrTable.cc. |
|
If the attribute referenced by iter is a container attribute, this method returns the number of attributes in its attribute table. If the indicated attribute is not a container, the method returns the number of values for the attribute (1 for a scalar attribute, N for a vector attribute value).
Definition at line 708 of file AttrTable.cc. References AttrTable::get_size(). |
Here is the call graph for this function:
|
If the indicated attribute is a container attribute, this function returns the number of attributes in its attribute table. If the indicated attribute is not a container, the method returns the number of values for the attribute (1 for a scalar attribute, N for a vector attribute value). Definition at line 535 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by AttrTable::print_xml(). |
|
Get the attribute container referenced by iter. If no such container exists, then return a reference to the end of the table.
Definition at line 659 of file AttrTable.cc. References Attr_container. |
|
Definition at line 505 of file AttrTable.cc. References AttrTable::find_container(). Referenced by AttrTable::add_value_alias(), get_table(), and AttrTable::print_xml(). |
Here is the call graph for this function:
|
Get the type of the attribute referenced by iter.
Definition at line 695 of file AttrTable.cc. |
|
Definition at line 521 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by AttrTable::add_value_alias(). |
|
Returns a pointer to the vector of values associated with the attribute referenced by iterator iter. Note that all values in an attribute table are stored as string data. They may be converted to a more appropriate internal format by the calling program.
Definition at line 774 of file AttrTable.cc. References Attr_container. |
|
Get a pointer to the vector of values associated with the attribute referenced by Pix Note that all values in an attribute table are stored as string data. They may be converted to a more appropriate internal format by the calling program.
Definition at line 554 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by DDS::transfer_attributes(), and Constructor::transfer_attributes(). |
|
Returns the name of the attribute referenced by iter. Definition at line 639 of file AttrTable.cc. References AttrTable::entry::name. |
|
Definition at line 173 of file AttrTable.cc. Referenced by AttrTable::add_container_alias(), get_name(), AttrTable::print(), AttrTable::print_xml(), AttrTable::simple_print(), DDS::transfer_attributes(), and Constructor::transfer_attributes(). |
|
Returns the name of the referenced attribute table. Definition at line 131 of file DAS.cc. References AttrTable::get_name(). |
Here is the call graph for this function:
|
Return a pointer to the AttrTable which holds this table (aka, its parent. If this AttrTable has no parent, this returns null.
Definition at line 261 of file AttrTable.h. |
|
Attributes that are containers count one attribute, as do attributes with both scalar and vector values.
Definition at line 165 of file AttrTable.cc. Referenced by AttrTable::get_attr_num(), AISMerge::merge(), and BaseType::print_xml(). |
|
Definition at line 146 of file DAS.cc. References AttrTable::get_attr_table(). |
Here is the call graph for this function:
|
Returns the referenced attribute table. Definition at line 138 of file DAS.cc. References AttrTable::get_attr_table(). |
Here is the call graph for this function:
|
Get the type name of an attribute referenced by iter.
Definition at line 685 of file AttrTable.cc. References AttrType_to_String(). |
Here is the call graph for this function:
|
Definition at line 512 of file AttrTable.cc. References AttrTable::Attr_iter. Referenced by AttrTable::append_attr(), AttrTable::print_xml(), AttrTable::simple_print(), DDS::transfer_attributes(), and Constructor::transfer_attributes(). |
|
Returns true if the attribute referenced by i is a container. Definition at line 648 of file AttrTable.cc. References AttrTable::entry::type. Referenced by AttrTable::add_value_alias(), and AttrTable::print_xml(). |
|
Read attributes from in (which defaults to stdin). If dasrestart() fails, return false, otherwise return the status of dasparse(). Definition at line 236 of file DAS.cc. References das_buffer(), das_delete_buffer(), das_switch_to_buffer(), and dasparse(). |
Here is the call graph for this function:
|
If the file descriptor cannot be fdopen'd, return false, otherwise return the status of the mfunc parse.
|
Here is the call graph for this function:
|
Read attributes from a file. Returns false if unable to open the file, otherwise returns the result of the mfunc parse. Definition at line 180 of file DAS.cc. References can_not_read_file, and DBG. Referenced by AISMerge::merge(), parse(), DODSFilter::read_ancillary_das(), Connect::request_das(), and Connect::request_das_url(). |
|
Prints an ASCII representation of the attribute table to the indicated FILE pointer. The
Definition at line 964 of file AttrTable.cc. References AttrTable::Attr_iter, AttrTable::get_name(), id2www(), and AttrTable::simple_print(). Referenced by print(), and AttrTable::simple_print(). |
Here is the call graph for this function:
|
Creates an ASCII representation of a DAS on the given output stream. When an identifier contains a character that contains characters that cannot be present in a URL (e.g., a space) AttrTable::print replaces those characters with WWW escape codes. 7/13/2001 jhrg
Definition at line 274 of file DAS.cc. References AttrTable::print(). Referenced by main(), and DODSFilter::send_das(). |
Here is the call graph for this function:
|
Print the attribute table in XML.
Definition at line 990 of file AttrTable.cc. References AttrTable::attr_begin(), AttrTable::attr_end(), AttrTable::Attr_iter, AttrTable::get_attr(), AttrTable::get_attr_num(), AttrTable::get_attr_table(), AttrTable::get_name(), AttrTable::get_type(), id2xml(), and AttrTable::is_container(). Referenced by Grid::print_xml(), DDS::print_xml(), Constructor::print_xml(), BaseType::print_xml(), and Array::print_xml_core(). |
Here is the call graph for this function:
|
This method scans for attributes using recursion to look inside containers even when the name of the attribute is not fully qualified. It starts looking in itself and descends into its children depth first. It will find attributes and attribute containers.
Definition at line 409 of file AttrTable.cc. References AttrTable::attr_begin(), AttrTable::attr_end(), and AttrTable::Attr_iter. Referenced by AttrTable::find(). |
Here is the call graph for this function:
|
Definition at line 181 of file AttrTable.cc. References www2id(). Referenced by AttrTable::append_container(). |
Here is the call graph for this function:
|
A simple printer that does nothing fancy with aliases. Protected. Definition at line 925 of file AttrTable.cc. References Attr_container, AttrTable::entry::attributes, AttrTable::get_name(), AttrTable::get_type(), id2www(), and AttrTable::print(). Referenced by AttrTable::print(). |
Here is the call graph for this function:
|
Returns a reference to the first attribute table. Definition at line 118 of file DAS.cc. References AttrTable::attr_begin(). |
Here is the call graph for this function:
|
Returns a reference to the end of the attribute table. Does not point to an attribute. Definition at line 124 of file DAS.cc. References AttrTable::attr_end(). |
Here is the call graph for this function: