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

#include <D4Group.h>

Inheritance diagram for libdap::D4Group:
Inheritance graph

Public Types

typedef vector< D4Group * >::const_iterator groupsCIter
typedef vector< D4Group * >::iterator groupsIter
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_group (const D4Group *g)
void add_group_nocopy (D4Group *g)
void add_var (BaseType *bt, Part part=nil) override
void add_var_nocopy (BaseType *bt, Part part=nil) override
unsigned int buf2val (void **) override
bool check_semantics (string &msg, bool all=false) override
void compute_checksum (Crc32 &checksum) override
 D4Group (const D4Group &rhs)
 D4Group (const string &name)
 D4Group (const string &name, const string &dataset)
virtual void del_var (const string &name)
 Remove an element from a Constructor.
virtual void del_var (Vars_iter i)
 Delete the BaseType* and erase the iterator .
bool deserialize (UnMarshaller &um, DDS *dds, bool reuse=false) override
void deserialize (D4StreamUnMarshaller &um, DMR &dmr) override
D4Dimensionsdims ()
 Get the dimensions defined for this Group.
void dump (ostream &strm) const override
 dumps information about this object
int element_count (bool leaves=false) override
D4EnumDefsenum_defs ()
 Get the enumerations defined for this Group.
D4Groupfind_child_grp (const string &grp_name)
D4Dimensionfind_dim (const string &path)
 Find the dimension using a path. Using the DAP4 name syntax, lookup a dimension. The dimension must be defined before it is used. The path argument may be either an absolute path or a relative path. Note that the name syntax does not provide for paths to contain an 'up one level' symbol.
D4EnumDeffind_enum_def (const string &path)
BaseTypefind_first_var_that_uses_dimension (D4Dimension *dim)
BaseTypefind_first_var_that_uses_enumeration (D4EnumDef *enum_def)
Arrayfind_map_source (const string &path)
 Given a path to an Array that is also a Map, get that Array.
BaseTypefind_var (const string &name)
std::string FQN () const override
BaseTypeget_var_index (int i)
Vars_iter get_vars_iter (int i)
const vector< D4Group * > & groups () const
groupsIter grp_begin ()
 Get an iterator to the start of the values.
groupsIter grp_end ()
 Get an iterator to the end of the values.
void insert_group_nocopy (D4Group *g, groupsIter i)
void intern_data (ConstraintEvaluator &eval, DDS &dds) override
void intern_data () override
bool is_dap4_projected (std::vector< std::string > &inventory) override
virtual bool is_linear ()
 Check to see whether this variable can be printed simply.
D4Groupoperator= (const D4Group &rhs)
void print_dap4 (XMLWriter &xml, bool constrained=false) override
void print_decl (FILE *out, string space=" ", bool print_semi=true, bool constraint_info=false, bool constrained=false) override
void print_decl (ostream &out, string space=" ", bool print_semi=true, bool constraint_info=false, bool constrained=false) override
void print_val (FILE *out, string space="", bool print_decl_p=true) override
void print_val (ostream &out, string space="", bool print_decl_p=true) override
void print_xml (FILE *out, string space=" ", bool constrained=false) override
void print_xml (ostream &out, string space=" ", bool constrained=false) override
void print_xml_writer (XMLWriter &xml, bool constrained=false) override
BaseTypeptr_duplicate () override
bool read () override
 Read the elements of Constructor marked for transmission.
long request_size (bool constrained)
uint64_t request_size_kb (bool constrained)
 Get the estimated size of a response in kilobytes.
bool serialize (ConstraintEvaluator &eval, DDS &dds, Marshaller &m, bool ce_eval=true) override
void serialize (D4StreamMarshaller &m, DMR &dmr, bool filter=false) override
 Serialize a Group.
void set_in_selection (bool state) override
 Set the in_selection property.
void set_read_p (bool state) override
void set_send_p (bool state) override
void set_var_index (BaseType *bt, int i)
 Set the ith element of d_vars to a variable object.
void transfer_attributes (AttrTable *at) override
std::vector< BaseType * > * transform_to_dap2 (AttrTable *parent_attr_table) override
 Transform the D4Group's variables to DAP2 variables.
void transform_to_dap4 (D4Group *root, Constructor *dest) override
unsigned int val2buf (void *, bool) override
BaseTypevar (const string &n, btp_stack &s) override
BaseTypevar (const string &name, bool exact_match=true, btp_stack *s=nullptr) override
 btp_stack no longer needed; use back pointers (BaseType::get_parent())
Vars_iter var_begin ()
Vars_iter var_end ()
Vars_riter var_rbegin ()
Vars_riter var_rend ()
const vector< BaseType * > & variables () const
unsigned int width (bool constrained=false) const override
int64_t width_ll (bool constrained=false) const override
 Get the width of the Constructor's fields.

Static Public Member Functions

static AttrTablemake_dropped_vars_attr_table (vector< BaseType * > *dropped_vars)

Protected Member Functions

void m_duplicate (const D4Group &g)
BaseTypem_exact_match (const string &name, btp_stack *s=nullptr)
BaseTypem_leaf_match (const string &name, btp_stack *s=nullptr)

Protected Attributes

std::vector< BaseType * > d_vars

Detailed Description

A DAP4 Group object. A Group is-a Constructor, so it inherits a set of BaseType objects and an attribute table, along with methods to search for variables by name where dots (.) in a fully qualified name serve as separators.

Definition at line 44 of file D4Group.h.

Member Typedef Documentation

◆ groupsCIter

typedef vector<D4Group*>::const_iterator libdap::D4Group::groupsCIter

Definition at line 69 of file D4Group.h.

◆ groupsIter

typedef vector<D4Group*>::iterator libdap::D4Group::groupsIter

Definition at line 68 of file D4Group.h.

◆ Vars_citer

typedef std::vector<BaseType*>::const_iterator libdap::Constructor::Vars_citer
inherited

Definition at line 59 of file Constructor.h.

◆ Vars_iter

typedef std::vector<BaseType*>::iterator libdap::Constructor::Vars_iter
inherited

Definition at line 60 of file Constructor.h.

◆ Vars_riter

typedef std::vector<BaseType*>::reverse_iterator libdap::Constructor::Vars_riter
inherited

Definition at line 61 of file Constructor.h.

Constructor & Destructor Documentation

◆ D4Group() [1/3]

libdap::D4Group::D4Group ( const string & name)

The D4Group 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.

Note
This type is available in DAP4 only. See http://docs.opendap.org/index.php/DAP4:_Specification_Volume_1#Groups
Parameters
nA string containing the name of the variable.

Definition at line 104 of file D4Group.cc.

◆ D4Group() [2/3]

libdap::D4Group::D4Group ( const string & name,
const string & dataset )

The D4Group server-side constructor requires the name of the variable to be created and the dataset name from which this variable is being created. Used on server-side handlers.

Note
This type is available in DAP4 only. See http://docs.opendap.org/index.php/DAP4:_Specification_Volume_1#Groups
Parameters
nA string containing the name of the variable.
dA string containing the name of the dataset.

Definition at line 116 of file D4Group.cc.

◆ D4Group() [3/3]

libdap::D4Group::D4Group ( const D4Group & rhs)

The D4Group copy constructor.

Definition at line 120 of file D4Group.cc.

◆ ~D4Group()

libdap::D4Group::~D4Group ( )
virtual

Definition at line 125 of file D4Group.cc.

Member Function Documentation

◆ add_group()

void libdap::D4Group::add_group ( const D4Group * g)
inline

Definition at line 121 of file D4Group.h.

◆ add_group_nocopy()

void libdap::D4Group::add_group_nocopy ( D4Group * g)
inline

Definition at line 123 of file D4Group.h.

◆ add_var()

void libdap::Constructor::add_var ( BaseType * bt,
Part part = nil )
overrideinherited

Adds an element to a Constructor.

Parameters
btA pointer to the variable to add to this Constructor.
partNot used by this class, defaults to nil

Definition at line 322 of file Constructor.cc.

◆ add_var_nocopy()

void libdap::Constructor::add_var_nocopy ( BaseType * bt,
Part part = nil )
overrideinherited

Adds an element to a Constructor.

Parameters
btA pointer to thee variable to add to this Constructor.
partNot used by this class, defaults to nil

Definition at line 340 of file Constructor.cc.

◆ buf2val()

unsigned int libdap::Constructor::buf2val ( void ** )
inlineoverrideinherited

Definition at line 137 of file Constructor.h.

◆ check_semantics()

bool libdap::Constructor::check_semantics ( string & msg,
bool all = false )
overrideinherited

Definition at line 622 of file Constructor.cc.

◆ compute_checksum()

void libdap::Constructor::compute_checksum ( Crc32 & checksum)
overrideinherited

Definition at line 453 of file Constructor.cc.

◆ del_var() [1/2]

void libdap::Constructor::del_var ( const string & n)
virtualinherited

Remove an element from a Constructor.

Note
New version. There is a subtle change in that this version will remove all variables in this Constructor with name 'n' while the old version would just remove the first variable.
Parameters
nname of the variable to remove

Definition at line 359 of file Constructor.cc.

◆ del_var() [2/2]

void libdap::Constructor::del_var ( Vars_iter i)
virtualinherited

Delete the BaseType* and erase the iterator .

Note
It is OK to call this with an iterator that points to nullptr.
Parameters
iThe iterator that points to the BaseType.

Definition at line 370 of file Constructor.cc.

◆ deserialize() [1/2]

bool libdap::Constructor::deserialize ( UnMarshaller & um,
DDS * dds,
bool reuse = false )
overrideinherited

Definition at line 445 of file Constructor.cc.

◆ deserialize() [2/2]

void libdap::D4Group::deserialize ( D4StreamUnMarshaller & um,
DMR & dmr )
override

Definition at line 540 of file D4Group.cc.

◆ dims()

D4Dimensions * libdap::D4Group::dims ( )
inline

Get the dimensions defined for this Group.

Definition at line 84 of file D4Group.h.

◆ dump()

void libdap::Constructor::dump ( ostream & strm) const
overrideinherited

dumps information about this object

Displays the pointer value of this instance and information about this instance.

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

Definition at line 741 of file Constructor.cc.

◆ element_count()

int libdap::Constructor::element_count ( bool leaves = false)
overrideinherited

Definition at line 109 of file Constructor.cc.

◆ enum_defs()

D4EnumDefs * libdap::D4Group::enum_defs ( )
inline

Get the enumerations defined for this Group.

Definition at line 100 of file D4Group.h.

◆ find_child_grp()

D4Group * libdap::D4Group::find_child_grp ( const string & grp_name)

Definition at line 160 of file D4Group.cc.

◆ find_dim()

D4Dimension * libdap::D4Group::find_dim ( const string & path)

Find the dimension using a path. Using the DAP4 name syntax, lookup a dimension. The dimension must be defined before it is used. The path argument may be either an absolute path or a relative path. Note that the name syntax does not provide for paths to contain an 'up one level' symbol.

Parameters
pathThe path to the dimension
Returns
A pointer to the D4Dimension object.

Definition at line 233 of file D4Group.cc.

◆ find_enum_def()

D4EnumDef * libdap::D4Group::find_enum_def ( const string & path)

Definition at line 322 of file D4Group.cc.

◆ find_first_var_that_uses_dimension()

BaseType * libdap::D4Group::find_first_var_that_uses_dimension ( D4Dimension * dim)

Definition at line 166 of file D4Group.cc.

◆ find_first_var_that_uses_enumeration()

BaseType * libdap::D4Group::find_first_var_that_uses_enumeration ( D4EnumDef * enum_def)

Definition at line 196 of file D4Group.cc.

◆ find_map_source()

Array * libdap::D4Group::find_map_source ( const string & path)

Given a path to an Array that is also a Map, get that Array.

Parameters
pathThe path to the Map. May be a FQN or a path relative to this group.
Returns
A pointer to the Array or nullptr if the Map cannot be found.

Definition at line 263 of file D4Group.cc.

◆ find_var()

BaseType * libdap::D4Group::find_var ( const string & path)

Find a variable using its Fully Qualified Name (FQN). The leading '/' is optional.

Parameters
pathThe FQN to the variable
Returns
A BaseType* to the variable or null if it was not found
See also
BaseType::FQN()

Definition at line 354 of file D4Group.cc.

◆ FQN()

string libdap::D4Group::FQN ( ) const
override

Get the Fully Qualified Name for this Group, including the Group. This uses the name representation described in the DAP4 specification.

Returns
The FQN in a string

Definition at line 155 of file D4Group.cc.

◆ get_var_index()

BaseType * libdap::Constructor::get_var_index ( int i)
inherited

Return the BaseType pointer for the ith variable.

Parameters
iThis index
Returns
The corresponding BaseType*.

Definition at line 290 of file Constructor.cc.

◆ get_vars_iter()

Constructor::Vars_iter libdap::Constructor::get_vars_iter ( int i)
inherited

Return the iterator for the ith variable.

Parameters
ithe index
Returns
The corresponding Vars_iter

Definition at line 285 of file Constructor.cc.

◆ groups()

const vector< D4Group * > & libdap::D4Group::groups ( ) const
inline

Definition at line 113 of file D4Group.h.

◆ grp_begin()

groupsIter libdap::D4Group::grp_begin ( )
inline

Get an iterator to the start of the values.

Definition at line 116 of file D4Group.h.

◆ grp_end()

groupsIter libdap::D4Group::grp_end ( )
inline

Get an iterator to the end of the values.

Definition at line 119 of file D4Group.h.

◆ insert_group_nocopy()

void libdap::D4Group::insert_group_nocopy ( D4Group * g,
groupsIter i )
inline

Definition at line 127 of file D4Group.h.

◆ intern_data() [1/2]

void libdap::Constructor::intern_data ( ConstraintEvaluator & eval,
DDS & dds )
overrideinherited

Definition at line 399 of file Constructor.cc.

◆ intern_data() [2/2]

void libdap::D4Group::intern_data ( )
override

Definition at line 452 of file D4Group.cc.

◆ is_dap4_projected()

bool libdap::D4Group::is_dap4_projected ( std::vector< std::string > & inventory)
override

When send_p() is true a description of the instance is added to the inventory and true is returned.

Parameters
inventoryis a value-result parameter
Returns
True when send_p() is true, false otherwise

Definition at line 822 of file D4Group.cc.

◆ is_linear()

bool libdap::Constructor::is_linear ( )
virtualinherited

Check to see whether this variable can be printed simply.

True if the instance can be flattened and printed as a single table of values. For Arrays and Grids this is always false. For Structures and Sequences the conditions are more complex. The implementation provided by this class always returns false. Other classes should override this implementation.

Returns
True if the instance can be printed as a single table of values, false otherwise.

Reimplemented in libdap::Structure.

Definition at line 649 of file Constructor.cc.

◆ m_duplicate()

void libdap::D4Group::m_duplicate ( const D4Group & g)
protected

Definition at line 57 of file D4Group.cc.

◆ m_exact_match()

BaseType * libdap::Constructor::m_exact_match ( const string & name,
btp_stack * s = nullptr )
protectedinherited

Definition at line 237 of file Constructor.cc.

◆ m_leaf_match()

BaseType * libdap::Constructor::m_leaf_match ( const string & name,
btp_stack * s = nullptr )
protectedinherited

Definition at line 214 of file Constructor.cc.

◆ make_dropped_vars_attr_table()

AttrTable * libdap::Constructor::make_dropped_vars_attr_table ( vector< BaseType * > * dropped_vars)
staticinherited

Definition at line 675 of file Constructor.cc.

◆ operator=()

D4Group & libdap::D4Group::operator= ( const D4Group & rhs)

Definition at line 141 of file D4Group.cc.

◆ print_dap4()

void libdap::D4Group::print_dap4 ( XMLWriter & xml,
bool constrained = false )
override

Definition at line 566 of file D4Group.cc.

◆ print_decl() [1/2]

void libdap::D4Group::print_decl ( FILE * out,
string space = "    ",
bool print_semi = true,
bool constraint_info = false,
bool constrained = false )
override

Definition at line 608 of file D4Group.cc.

◆ print_decl() [2/2]

void libdap::D4Group::print_decl ( ostream & out,
string space = "    ",
bool print_semi = true,
bool constraint_info = false,
bool constrained = false )
override

Definition at line 614 of file D4Group.cc.

◆ print_val() [1/2]

void libdap::D4Group::print_val ( FILE * out,
string space = "",
bool print_decl_p = true )
override

Definition at line 640 of file D4Group.cc.

◆ print_val() [2/2]

void libdap::D4Group::print_val ( ostream & out,
string space = "",
bool print_decl_p = true )
override

Definition at line 646 of file D4Group.cc.

◆ print_xml() [1/2]

void libdap::Constructor::print_xml ( FILE * out,
string space = "    ",
bool constrained = false )
overrideinherited
Deprecated

Definition at line 559 of file Constructor.cc.

◆ print_xml() [2/2]

void libdap::Constructor::print_xml ( ostream & out,
string space = "    ",
bool constrained = false )
overrideinherited
Deprecated

Definition at line 568 of file Constructor.cc.

◆ print_xml_writer()

void libdap::Constructor::print_xml_writer ( XMLWriter & xml,
bool constrained = false )
overrideinherited

Definition at line 574 of file Constructor.cc.

◆ ptr_duplicate()

BaseType * libdap::D4Group::ptr_duplicate ( )
override

Definition at line 139 of file D4Group.cc.

◆ read()

bool libdap::Constructor::read ( )
overrideinherited

Read the elements of Constructor marked for transmission.

Iterate over the top level members of the Constructor and read all of them that have the 'send_p' property set to true. Assume the read() methods correctly set the 'read_p' property. Once done, set 'read_p' for the Constructor itself (but not for the members, that is left up to their individual read() methods).

Returns
returns false; the return value is a relic.

Definition at line 386 of file Constructor.cc.

◆ request_size()

long libdap::D4Group::request_size ( bool constrained)

Compute the size of all of the variables in this group and its children, in kilobytes

Parameters
constrainedShould the current constraint be taken into account?
Returns
The size in kilobytes
Deprecated
Use request_size_kb() instead.

Definition at line 399 of file D4Group.cc.

◆ request_size_kb()

uint64_t libdap::D4Group::request_size_kb ( bool constrained)

Get the estimated size of a response in kilobytes.

This method looks at the variables in the DMR and computes the number of kilobytes 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 DMR be used or should the current constraint be taken into account?
Returns
The size in kilobytes

Definition at line 415 of file D4Group.cc.

◆ serialize() [1/2]

bool libdap::Constructor::serialize ( ConstraintEvaluator & eval,
DDS & dds,
Marshaller & m,
bool ce_eval = true )
overrideinherited

Definition at line 416 of file Constructor.cc.

◆ serialize() [2/2]

void libdap::D4Group::serialize ( D4StreamMarshaller & m,
DMR & dmr,
bool filter = false )
override

Serialize a Group.

Parameters
mThe DAP4 Stream Marshaller. This object serializes the data values and writes checksums (using CRC32) for the top level variables in every Group for which one or more variables are sent. The DAP4 Marshaller object can be made so that only the checksums are written.
dmrUnused
evalUnused
filterUnused
Exceptions
Erroris thrown if the value needs to be read and that operation fails.

Definition at line 502 of file D4Group.cc.

◆ set_in_selection()

void libdap::Constructor::set_in_selection ( bool state)
overrideinherited

Set the in_selection property.

Set the in_selection property for this variable and all of its children.

Parameters
stateSet the property value to state.

Definition at line 656 of file Constructor.cc.

◆ set_read_p()

void libdap::D4Group::set_read_p ( bool state)
override

Definition at line 436 of file D4Group.cc.

◆ set_send_p()

void libdap::D4Group::set_send_p ( bool state)
override

Definition at line 444 of file D4Group.cc.

◆ set_var_index()

void libdap::Constructor::set_var_index ( BaseType * bt,
int i )
inherited

Set the ith element of d_vars to a variable object.

Note
This method only sets the ith element to a BaseType object. The user should be responsible to release or allocate the resource properly. Use this method cautionally.
Parameters
btA pointer to the variable that is assigned to the ith element.
iThe index of the variable to be set.

Definition at line 301 of file Constructor.cc.

◆ transfer_attributes()

void libdap::Constructor::transfer_attributes ( AttrTable * at)
overrideinherited

Definition at line 664 of file Constructor.cc.

◆ transform_to_dap2()

vector< BaseType * > * libdap::D4Group::transform_to_dap2 ( AttrTable * parent_attr_table)
override

Transform the D4Group's variables to DAP2 variables.

For all of the variables in a D4Group, build a vector of DAP2 variables that can be directly added to DDS object. Extract the DAP4 variables' attributes and transfer them the the AttrTable object passed as the first argument.

For all variables in the D4Group that are members of child groups (i.e, not the root group), the name of the group (or names of the groups) will be prepended to the name of the variable. Group names are separated using a '/' character.

The Group attributes are transferred to the parent_attr_table.

Todo
Fix the comment.
Parameters
parent_attr_tableThe AttrTable pointer parent_attr_table is used by Groups, which disappear from the DAP2 representation. Their children are returned in the the BaseType vector their attributes are added to parent_attr_table;
Returns
A pointer to a vector of BaseType pointers (right?). In this D4Group case the vector will contain DAP2 versions of all of the member variables of the D4Group instance. (ex: UInt64) the will return a NULL pointer and so this must be tested!

Definition at line 723 of file D4Group.cc.

◆ transform_to_dap4()

void libdap::Constructor::transform_to_dap4 ( D4Group * root,
Constructor * dest )
overrideinherited

Definition at line 82 of file Constructor.cc.

◆ val2buf()

unsigned int libdap::Constructor::val2buf ( void * ,
bool  )
inlineoverrideinherited

Definition at line 134 of file Constructor.h.

◆ var() [1/2]

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

btp_stack no longer needed; use back pointers (BaseType::get_parent())

Deprecated
Deprecated
See comment in BaseType

Definition at line 201 of file Constructor.cc.

◆ var() [2/2]

BaseType * libdap::Constructor::var ( const string & name,
bool exact_match = true,
btp_stack * s = nullptr )
overrideinherited

btp_stack no longer needed; use back pointers (BaseType::get_parent())

Definition at line 191 of file Constructor.cc.

◆ var_begin()

Constructor::Vars_iter libdap::Constructor::var_begin ( )
inherited

Returns an iterator referencing the first structure element.

Definition at line 269 of file Constructor.cc.

◆ var_end()

Constructor::Vars_iter libdap::Constructor::var_end ( )
inherited

Returns an iterator referencing the end of the list of structure elements. Does not reference the last structure element.

Definition at line 273 of file Constructor.cc.

◆ var_rbegin()

Constructor::Vars_riter libdap::Constructor::var_rbegin ( )
inherited

Return a reverse iterator that references the last element.

Definition at line 276 of file Constructor.cc.

◆ var_rend()

Constructor::Vars_riter libdap::Constructor::var_rend ( )
inherited

Return a reverse iterator that references a point 'before' the first element.

Definition at line 280 of file Constructor.cc.

◆ variables()

const vector< BaseType * > & libdap::Constructor::variables ( ) const
inlineinherited

Get a const reference to the vector of BaseType pointers.

Note
Use this in range-based for loops to iterate over the variables.
Returns
A const reference to the vector of BaseType pointers.

Definition at line 110 of file Constructor.h.

◆ width()

unsigned int libdap::Constructor::width ( bool constrained = false) const
overrideinherited

This version of width simply returns the same thing as width() for simple types and Arrays. For Structure it returns the total size if constrained is false, or the size of the elements in the current projection if true.

Parameters
constrainedIf true, return the size after applying a constraint.
Returns
The number of bytes used by the variable.
Deprecated
Use width_ll()

Definition at line 156 of file Constructor.cc.

◆ width_ll()

int64_t libdap::Constructor::width_ll ( bool constrained = false) const
overrideinherited

Get the width of the Constructor's fields.

Parameters
constrainedIf true, return the constrained size
Returns
The number of bytes needed to store the values of this instance

Definition at line 176 of file Constructor.cc.

Member Data Documentation

◆ d_vars

std::vector<BaseType *> libdap::Constructor::d_vars
protectedinherited

Definition at line 47 of file Constructor.h.


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