libdap Namespace Reference

The Byte constructor. More...


Classes

class  AISConnect
class  AISDatabaseParser
class  AISDatabaseReadFailed
class  AISDatabaseWriteFailed
class  AISMerge
 Merge AIS resources. More...
class  AISResources
 Manage AIS resources. More...
class  AlarmHandler
class  Ancillary
class  Array
 A multidimensional array of identical data types. More...
class  ArrayGeoConstraint
class  AttrTable
 Contains the attributes for a dataset. More...
class  BaseType
 The basic data type for the DODS DAP types. More...
class  BaseTypeFactory
class  Byte
 Holds a single byte. More...
struct  ce_parser_arg
struct  Clause
 Holds a fragment of a constraint expression. More...
class  Cmp
class  Connect
 Holds information about the link from a DAP2 client to a dataset. More...
class  ConstraintEvaluator
 Evaluate a constraint expression. More...
class  Constructor
class  DapIndent
 class with static methods to help with indentation of debug information. More...
class  DapObj
 libdap base object for common functionality of libdap objects More...
class  DAS
 Hold attribute data for a DAP2 dataset. More...
class  DataDDS
 Holds a DAP2 DDS. More...
class  DDS
class  DDXParseFailed
class  DDXParser
class  DODSFilter
 Common functions for DODS server filter programs. More...
class  Error
 A class for error processing. More...
class  EventHandler
class  Float32
 Holds a 32-bit floating point value. More...
class  Float64
 Holds a 64-bit (double precision) floating point value. More...
class  GeoConstraint
class  Grid
 Holds the Grid data type. More...
class  GridGeoConstraint
struct  gse_arg
class  GSEClause
class  HTTPCache
class  HTTPCacheInterruptHandler
class  HTTPCacheResponse
class  HTTPCacheTable
class  HTTPConnect
class  HTTPResponse
class  Int16
 Holds a 16-bit signed integer value. More...
class  Int32
 Holds a 32-bit signed integer. More...
class  InternalErr
 A class for software fault reporting. More...
class  Marshaller
 abstract base class used to marshall/serialize dap data objects More...
class  NoSuchPrimaryResource
struct  parser_arg
 Pass parameters by reference to a parser. More...
class  PipeResponse
 Encapsulate a response. This class provides special treatment for 'stream pipes.' It arranges to close them using pclose() instead of fclose(). More...
class  RCReader
class  Resource
 Associate a rule with an ancillary resource. More...
class  Response
class  ResponseTooBigErr
class  rvalue
class  Sequence
 Holds a sequence. More...
class  SignalHandler
class  SignalHandlerRegisteredErr
class  StdinResponse
 Encapsulate a response read from stdin. More...
class  Str
 Holds character string data. More...
class  StrCmp
class  Structure
 Holds a structure (aggregate) type. More...
class  SUCmp
class  TestHandler
class  UInt16
 Holds an unsigned 16-bit integer. More...
class  UInt32
 Holds a 32-bit unsigned integer. More...
class  UnMarshaller
 abstract base class used to unmarshall/deserialize dap data objects More...
class  Url
 Holds an Internet address (URL). More...
class  USCmp
class  Vector
 Holds a one-dimensional collection of DAP2 data types. More...
class  XDRFileMarshaller
 marshaller that knows how to marshall/serialize dap data objects to a file using XDR More...
class  XDRFileUnMarshaller
 unmarshaller that knows how to unmarshall/deserialize dap objects using XDR from a file More...
class  XDRStreamMarshaller
 marshaller that knows how to marshall/serialize dap data objects to a C++ iostream using XDR More...
class  XDRUtils

Typedefs

typedef vector< BaseType * > BaseTypeRow
typedef uint8_t dods_byte
typedef float dods_float32
typedef double dods_float64
typedef int16_t dods_int16
typedef int32_t dods_int32
typedef uint16_t dods_uint16
typedef uint32_t dods_uint32
typedef int ErrorCode
 An enumerated type for common errors.
typedef vector< ResourceResourceVector
typedef
ResourceVector::const_iterator 
ResourceVectorCIter
typedef ResourceVector::iterator ResourceVectorIter
typedef std::vector< rvalue * > rvalue_list
typedef std::vector< rvalue * >
::const_iterator 
rvalue_list_citer
typedef std::vector< rvalue * >
::iterator 
rvalue_list_iter
typedef vector< BaseTypeRow * > SequenceValues
typedef void Sigfunc (int)

Enumerations

enum  AttrType {
  Attr_unknown, Attr_container, Attr_byte, Attr_int16,
  Attr_uint16, Attr_int32, Attr_uint32, Attr_float32,
  Attr_float64, Attr_string, Attr_url
}
enum  CacheDisconnectedMode { DISCONNECT_NONE = 0, DISCONNECT_NORMAL = 1, DISCONNECT_EXTERNAL = 2 }
enum  EncodingType { unknown_enc, deflate, x_plain }
 The type of encoding used on the current stream. More...
enum  ObjectType {
  unknown_type, dods_das, dods_dds, dods_data,
  dods_error, web_error, dap4_ddx
}
 The type of object in the stream coming from the data server. More...
enum  Part { nil, array, maps }
 Names the parts of multi-section constructor data types. More...
enum  relop {
  dods_nop_op, dods_greater_op, dods_greater_equal_op, dods_less_op,
  dods_less_equal_op, dods_equal_op, dods_not_equal_op
}
enum  Type {
  dods_null_c, dods_byte_c, dods_int16_c, dods_uint16_c,
  dods_int32_c, dods_uint32_c, dods_float32_c, dods_float64_c,
  dods_str_c, dods_url_c, dods_array_c, dods_structure_c,
  dods_sequence_c, dods_grid_c
}
 Identifies the data type. More...

Functions

rvalue_listappend_rvalue_list (rvalue_list *rvals, rvalue *rv)
string AttrType_to_String (const AttrType at)
BaseType ** build_btp_args (rvalue_list *args, DDS &dds, const string &dataset)
string char2ASCII (string s, const string escape="%[0-7][0-9a-fA-F]")
int check_byte (const char *val)
 Is the value a valid byte?
int check_float32 (const char *val)
 Is the value a valid float?
int check_float64 (const char *val)
int check_int16 (const char *val)
 Is the value a valid integer?
int check_int32 (const char *val)
int check_uint16 (const char *val)
int check_uint32 (const char *val)
int check_url (const char *val)
 Is the value a valid URL?
void close_temp (FILE *s, const string &name)
FILE * compressor (FILE *output, int &childpid)
string dap_version ()
string date_time_str (time_t *calendar, bool local)
bool deflate_exists ()
unsigned dods_max (int i1, int i2)
const char * dods_progress ()
bool double_eq (double lhs, double rhs, double epsilon=1.0e-5)
void downcase (string &s)
string esc2underscore (string s)
string escattr (string s)
double * extract_double_array (Array *a)
double extract_double_value (BaseType *arg)
string extract_string_argument (BaseType *arg)
string file_to_string (FILE *fp)
bool found_override (string name, string &doc)
BaseTypefunc_version (int argc, BaseType *argv[], DDS &dds, const string &dataset)
BaseTypefunction_geoarray (int argc, BaseType *argv[], DDS &, const string &dataset)
BaseTypefunction_geogrid (int argc, BaseType *argv[], DDS &, const string &dataset)
BaseTypefunction_grid (int argc, BaseType *argv[], DDS &, const string &dataset)
BaseTypefunction_linear_scale (int argc, BaseType *argv[], DDS &, const string &dataset)
BaseTypefunction_version (int, BaseType *[], DDS &, const string &)
int get_hash (const string &url)
FILE * get_temp_file (char *temp)
string get_temp_file (FILE *&stream) throw (InternalErr)
string get_user_supplied_docs (string name, string cgi)
 Look for the user supplied CGI- and dataset-specific HTML* documents.
string hexstring (unsigned char val)
string id2www (string in, const string &allowable)
string id2www_ce (string in, const string &allowable)
string id2xml (string in, const string &not_allowed)
bool is_hop_by_hop_header (const string &header)
bool is_keyword (string id, const string &keyword)
const char * libdap_name ()
const char * libdap_root ()
const char * libdap_version ()
rvalue_listmake_rvalue_list (rvalue *rv)
string munge_error_message (string msg)
string octstring (unsigned char val)
ostream & operator<< (ostream &os, const AISResources &ais_res)
ostream & operator<< (ostream &os, const Resource &r)
void parse_error (const char *msg, const int line_num, const char *context)
time_t parse_time (const char *str, bool expand)
string path_to_filename (string path)
string prune_spaces (const string &name)
void register_functions (ConstraintEvaluator &ce)
bool remove_mime_header (FILE *in)
 Read and discard the MIME header of the stream in.
string remove_quotes (const string &s)
template<class T1, class T2, class C>
bool rops (T1 a, T2 b, int op)
void save_str (string &dst, const char *src, const int)
void save_str (char *dst, const char *src, const int line_num)
 Save a string to a temporary variable during the parse.
void set_array_using_double (Array *dest, double *src, int src_len)
AttrType String_to_AttrType (const string &s)
string systime ()
FILE * text_to_temp (string text)
string unescattr (string s)
string unhexstring (string s)
bool unique_names (vector< BaseType * > l, const string &var_name, const string &type_name, string &msg)
bool unit_or_name_match (set< string > units, set< string > names, const string &var_units, const string &var_name)
string unoctstring (string s)
string www2id (const string &in, const string &escape, const string &except)
string xml2id (string in)
Double to string conversion functions
Conversions from double to a character representation which gets appended to a string. This function depends on the standard routine sprintf to convert a double to a textual representation which gets appended to the string 'str'.

Parameters:
num The double you wish to append to str.
str The string where the textual representation of num will be appended.
Returns:
void.


void append_double_to_string (const double &num, string &str)
string double_to_string (const double &num)
Integer to string conversion functions
Fast, safe conversions from long to a character representation which gets appended to a string. This method will take a long value 'val' and it will recursively divide it by 'base' in order to "extract" one by one the digits which compose it; these digits will be appended to the string str_val which will become the textual representation of 'val'. Please notice that the digits ``extracted'' from `val' will vary depending on the base chosen for the conversion; for example val=15 converted to base 10 will yield the digits (1,5), converted to base 16 will yield (F) and converted to base 2 will yield (1,1,1,1).

Parameters:
val The long value we which to convert to string.
base A value in the range [2,36] which is the base to use while transforming the long value 'val' to its textual representation. Typical bases are 2 (binary), 10 (decimal) and 16 (hexadecimal).
str_val This is the string that will hold the textual representation of 'val'. The string str_val should be pre-set to an empty string ("") otherwise the output of this function will just append the textual representation of val to whatever data is there; these feature may be useful if you wish to append a long value to a string s1 (just like operator+ does) without having to create a new string object s2 and then use string::operator+ between s1 and s2.
Returns:
void. This method returns nothing however be aware that it will throw and exception of type std::invalid_argument if the parameter base is not in the valid range.


void append_long_to_string (long val, int base, string &str_val)
string long_to_string (long val, int base)
CGI Utilities
A collection of useful functions for writing OPeNDAP servers.

The CGI utilities include a variety of functions useful to programmers developing OPeNDAP CGI filter programs. However, before jumping in and using these, look at the class DODSFilter. Always choose to use that class over these functions if you can.

See also:
DODSFilter


bool do_data_transfer (bool compression, FILE *data_stream, DDS &dds, const string &dataset, const string &constraint)
bool do_version (const string &script_ver, const string &dataset_ver)
 Send a version number.
void ErrMsgT (const string &Msgt)
 Logs an error message.
time_t last_modified_time (const string &name)
string name_path (const string &path)
 Returns the filename portion of a pathname.
string rfc822_date (const time_t t)
parse_error
Generate error messages for the various parsers.

parser_error() generates error messages for the various parsers used by libdap. There are two versions of the function, one which takes a const char *message and a const int line_num and writes the message and line number too stderr and a second which takes an additional parser_arg arg parameter and writes the error message into an Error object which is returned to the caller via the arg parameter.

Note:
{The second version of this function also accepts a third parameter (const char *context) which can be used to provide an additional line of information beyond what is in the string message.}
Returns:
void


void parse_error (const string &msg, const int line_num, const char *context)
void parse_error (parser_arg *arg, const char *msg, const int line_num, const char *context)
Security functions


bool pathname_ok (const string &path, bool strict)
 Does the string name a potentailly valid pathname? Test the given pathname to verfiy that it is a valid name. We define this as: Contains only printable characters; and Is less then 256 characters. If strict is true, test that the pathname consists of only letters, digits, and underscore, dash and dot characters instead of the more general case where a pathname can be composed of any printable characters.
bool size_ok (uint sz, uint nelem)
 sanitize the size of an array. Test for integer overflow when dynamically allocating an array.
MIME utility functions
These functions are used to create the MIME headers for a message from a server to a client. They are public but should not be called directly unless absolutely necessary. Use DODSFilter instead.

NB: These functions actually write both the response status line and the header.

See also:
DODSFilter


void set_mime_binary (ostream &strm, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)
void set_mime_binary (FILE *out, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)
void set_mime_error (ostream &strm, int code, const string &reason, const string &version)
void set_mime_error (FILE *out, int code, const string &reason, const string &version)
void set_mime_html (ostream &strm, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)
void set_mime_html (FILE *out, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)
void set_mime_not_modified (ostream &strm)
 Send a `Not Modified' response.
void set_mime_not_modified (FILE *out)
 Send a `Not Modified' response.
void set_mime_text (ostream &strm, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)
void set_mime_text (FILE *out, ObjectType type, const string &ver, EncodingType enc, const time_t last_modified)

Variables

int dods_keep_temps = 0
const int DODS_MAX_ARRAY = DODS_INT_MAX
const unsigned int max_str_len = DODS_USHRT_MAX - 1
const unsigned int max_url_len = 255
const string usage
int www_trace = 0


Detailed Description

The Byte constructor requires only the name of the variable to be created. The name may be omitted, which will create a nameless variable. This may be adequate for some applications.

Parameters:
n A string containing the name of the variable to be created.

Typedef Documentation

typedef vector<BaseType *> libdap::BaseTypeRow

The type BaseTypeRow is used to store single rows of values in an instance of Sequence. Values are stored in instances of BaseType.

Definition at line 68 of file Sequence.h.

typedef uint8_t libdap::dods_byte

Definition at line 41 of file dods-datatypes-static.h.

typedef float libdap::dods_float32

Definition at line 45 of file dods-datatypes-static.h.

typedef double libdap::dods_float64

Definition at line 43 of file dods-datatypes-static.h.

typedef int16_t libdap::dods_int16

Definition at line 37 of file dods-datatypes-static.h.

typedef int32_t libdap::dods_int32

Definition at line 33 of file dods-datatypes-static.h.

typedef uint16_t libdap::dods_uint16

Definition at line 39 of file dods-datatypes-static.h.

typedef uint32_t libdap::dods_uint32

Definition at line 35 of file dods-datatypes-static.h.

typedef int libdap::ErrorCode

The most common errors within DAP2 have special codes so that they can be spotted easily by the client software. Any error without a matching code gets the unknown_error code.

Definition at line 55 of file Error.h.

Definition at line 49 of file AISResources.h.

typedef ResourceVector::const_iterator libdap::ResourceVectorCIter

Definition at line 51 of file AISResources.h.

typedef ResourceVector::iterator libdap::ResourceVectorIter

Definition at line 50 of file AISResources.h.

typedef std::vector<rvalue *> libdap::rvalue_list

Definition at line 67 of file RValue.h.

typedef std::vector<rvalue *>::const_iterator libdap::rvalue_list_citer

Definition at line 68 of file RValue.h.

typedef std::vector<rvalue *>::iterator libdap::rvalue_list_iter

Definition at line 69 of file RValue.h.

This type holds all of the values of a Sequence.

Definition at line 71 of file Sequence.h.

typedef void libdap::Sigfunc(int)

Definition at line 37 of file SignalHandler.h.


Enumeration Type Documentation

AttrType identifies the data types which may appear in an attribute table object.

See also:
AttrTable
Enumerator:
Attr_unknown 
Attr_container 
Attr_byte 
Attr_int16 
Attr_uint16 
Attr_int32 
Attr_uint32 
Attr_float32 
Attr_float64 
Attr_string 
Attr_url 

Definition at line 76 of file AttrTable.h.

Disconnected Operation

The cache can be set to handle disconnected operation where it does not use the network to validate entries and does not attempt to load new documents. All requests that can not be fulfilled by the cache will be returned with a "504 Gateway Timeout" response. There are two operational disconnected modes:

No network activity at all: Here it uses its own persistent cache to answer the request, if possible.

Forward all disconnected requests to a proxy cache: Here it uses the HTTP/1.1 cache-control header to indicate that the proxy should operate in disconnected mode.

Enumerator:
DISCONNECT_NONE 
DISCONNECT_NORMAL 
DISCONNECT_EXTERNAL 

Definition at line 47 of file HTTPCacheDisconnectedMode.h.

libdap understands two types of encoding: x-plain and deflate, which correspond to plain uncompressed data and data compressed with zlib's LZW algorithm respectively.

enum EncodingType { unknown_enc, deflate, x_plain };

Enumerator:
unknown_enc 
deflate 
x_plain 

Definition at line 46 of file EncodingType.h.

When a version 2.x or greater DAP data server sends an object, it uses the Content-Description header of the response to indicate the type of object contained in the response. During the parse of the header a member of Connect is set to one of these values so that other mfuncs can tell the type of object without parsing the stream themselves.

     enum ObjectType {
       unknown_type,
       dods_das,
       dods_dds,
       dods_data,
       dods_error,
       web_error,
       dap4_ddx
     };
     
Enumerator:
unknown_type 
dods_das 
dods_dds 
dods_data 
dods_error 
web_error 
dap4_ddx 

Definition at line 53 of file ObjectType.h.

Part names the parts of multi-section constructor types. For example, the Grid class has an array and the array maps. Use the nil value for data types that don't have separate parts.

    enum Part {
    nil,
    array,
    maps
    };

See also:
Grid

BaseType

Enumerator:
nil 
array 
maps 

Definition at line 96 of file BaseType.h.

Enumerator:
dods_nop_op 
dods_greater_op 
dods_greater_equal_op 
dods_less_op 
dods_less_equal_op 
dods_equal_op 
dods_not_equal_op 

Definition at line 56 of file GSEClause.h.

Type identifies the data type stored in a particular type class. All the DODS Data Access Protocol (DAP) types inherit from the BaseType class.

See also:
BaseType
Enumerator:
dods_null_c 
dods_byte_c 
dods_int16_c 
dods_uint16_c 
dods_int32_c 
dods_uint32_c 
dods_float32_c 
dods_float64_c 
dods_str_c 
dods_url_c 
dods_array_c 
dods_structure_c 
dods_sequence_c 
dods_grid_c 

Definition at line 129 of file BaseType.h.


Function Documentation

void libdap::append_double_to_string ( const double &  num,
string &  str 
)

Definition at line 450 of file util.cc.

Referenced by double_to_string().

void libdap::append_long_to_string ( long  val,
int  base,
string &  str_val 
)

Definition at line 413 of file util.cc.

Referenced by libdap::InternalErr::InternalErr(), long_to_string(), and parse_error().

rvalue_list * libdap::append_rvalue_list ( rvalue_list *  rvals,
rvalue *  rv 
)

Definition at line 73 of file RValue.cc.

Referenced by make_rvalue_list().

string libdap::AttrType_to_String ( const AttrType  at  ) 

Convert an AttrType to it's string representation.

Parameters:
at The Attribute Type.
Returns:
The type's string representation

Definition at line 58 of file AttrTable.cc.

References Attr_byte, Attr_container, Attr_float32, Attr_float64, Attr_int16, Attr_int32, Attr_string, Attr_uint16, Attr_uint32, and Attr_url.

Referenced by libdap::AttrTable::dump(), and libdap::AttrTable::get_type().

BaseType ** libdap::build_btp_args ( rvalue_list *  args,
DDS &  dds,
const string &  dataset 
)

Build an argument list suitable for calling a btp_func, bool_func, and so on. Since this takes an rvalue_list and not an rvalue, it is a function rather than a class member.

This function performs a common task but does not fit within the RValue class well. It is used by Clause and ce_expr.y.

Parameters:
args A list of RValue objects
dds Use this DDS when evaluating functions
dataset Use this when evaluating functions.

Definition at line 93 of file RValue.cc.

References long_to_string(), malformed_expr, and size_ok().

Referenced by libdap::rvalue::bvalue(), and libdap::Clause::value().

Here is the call graph for this function:

string libdap::char2ASCII ( string  s,
const string  escape = "%[0-7][0-9a-fA-F]" 
)

int libdap::check_byte ( const char *  val  ) 

Check to see if val is a valid byte value. If not, generate an error message using parser_error(). There are two versions of check_byte(), one which calls parser_error() and prints an error message to stderr an one which calls parser_error() and generates and Error object.

Returns:
Returns: True if val is a byte value, False otherwise.

Definition at line 181 of file parser-util.cc.

References DBG, DODS_SCHAR_MIN, DODS_UCHAR_MAX, FALSE, and TRUE.

int libdap::check_float32 ( const char *  val  ) 

Like check_byte() but for 64-bit float values.

Definition at line 271 of file parser-util.cc.

References DBG, DODS_FLT_MAX, DODS_FLT_MIN, FALSE, and TRUE.

int libdap::check_float64 ( const char *  val  ) 

Definition at line 299 of file parser-util.cc.

References DBG, DODS_DBL_MAX, DODS_DBL_MIN, FALSE, and TRUE.

int libdap::check_int16 ( const char *  val  ) 

Like check_byte() but for 32-bit integers (check_uint() is for unsigned integers).

Definition at line 207 of file parser-util.cc.

References DODS_SHRT_MAX, DODS_SHRT_MIN, FALSE, and TRUE.

int libdap::check_int32 ( const char *  val  ) 

Definition at line 239 of file parser-util.cc.

References DODS_INT_MAX, DODS_INT_MIN, FALSE, and TRUE.