29 #ifndef __AGG_UTIL__AGGREGATION_UTIL_H__
30 #define __AGG_UTIL__AGGREGATION_UTIL_H__
32 #include <AttrTable.h>
46 class AggMemberDataset;
82 virtual libdap::Array*
readAndGetArray(
const std::string& name,
const libdap::DDS& dds,
83 const libdap::Array*
const pConstraintTemplate,
const std::string& debugChannel)
const = 0;
106 virtual libdap::Array*
readAndGetArray(
const std::string& name,
const libdap::DDS& dds,
107 const libdap::Array*
const pConstraintTemplate,
const std::string& debugChannel)
const;
128 virtual libdap::Array*
readAndGetArray(
const std::string& name,
const libdap::DDS& dds,
129 const libdap::Array*
const pConstraintTemplate,
const std::string& debugChannel)
const;
149 virtual libdap::Array*
readAndGetArray(
const std::string& name,
const libdap::DDS& dds,
150 const libdap::Array*
const pConstraintTemplate,
const std::string& debugChannel)
const;
153 const string _gridName;
174 static int d_last_added_cv_position;
179 typedef std::vector<const libdap::DDS*> ConstDDSList;
195 static void unionAttrsInto(libdap::AttrTable* pOut,
const libdap::AttrTable& fromTable);
201 static bool findAttribute(
const libdap::AttrTable& inTable,
const string& name, libdap::AttrTable::Attr_iter& attr);
221 static void unionAllVariablesInto(libdap::DDS* pOutputUnion,
const libdap::DDS& fromDDS,
bool add_at_top =
false);
230 bool add_at_top =
false);
286 static void produceOuterDimensionJoinedArray(libdap::Array* pJoinedArray,
const std::string& joinedArrayName,
287 const std::string& newOuterDimName,
const std::vector<libdap::Array*>& fromVars,
bool copyData);
297 bool enforceMatchingDimNames);
300 static bool doTypesMatch(
const libdap::Array& lhs,
const libdap::Array& rhs);
305 static bool doShapesMatch(
const libdap::Array& lhs,
const libdap::Array& rhs,
bool checkDimNames);
316 const std::string& collectVarName,
const ConstDDSList& datasetsInOrder);
347 static void joinArrayData(libdap::Array* pAggArray,
const std::vector<libdap::Array*>& varArrays,
348 bool reserveStorage =
true,
bool clearDataAfterUse =
false);
352 static void printDimensions(std::ostream& os,
const libdap::Array& fromArray);
359 static void printConstraints(std::ostream& os,
const libdap::Array& fromArray);
388 static void transferArrayConstraints(libdap::Array* pToArray,
const libdap::Array& fromArray,
bool skipFirstFromDim,
389 bool skipFirstToDim,
bool printDebug =
false,
const std::string& debugChannel =
"agg_util");
405 static libdap::BaseType*
getVariableNoRecurse(
const libdap::Constructor& varContainer,
const std::string& name);
417 static const libdap::Array*
findMapByName(
const libdap::Grid& inGrid,
const std::string& findName);
439 const std::string& debugChannel);
460 unsigned int atIndex,
461 const libdap::Array& constrainedTemplateArray,
462 const string& varName,
465 const string& debugChannel
490 while (!vecToClear.empty()) {
491 T* pElt = vecToClear.back();
493 vecToClear.pop_back();
501 while (!vecToClear.empty()) {
502 T* pElt = vecToClear.back();
504 vecToClear.pop_back();
512 class std::vector<T*>::const_iterator it;
513 class std::vector<T*>::const_iterator endIt = fromVec.end();
514 for (it = fromVec.begin(); it != endIt; ++it) {
519 intoVec.push_back(pElt);