/** \file class describing a molecular zone \author Tom Paul \version $Id$ \date 04 Sep 2004 */ #ifndef _atm_MolecularZone_h_ #define _atm_MolecularZone_h_ static const char CVSId_atm_MolecularZone[] = "$Id$"; #include #include #include namespace atm { class MolecularDB; /** \brief class describing a molecular zone. Contains hooks to iterators over molecular data in the zone \author Tom Paul \version $Id$ \date 04 Sep 2004 \ingroup atm */ class MolecularZone : public VZone { private: typedef std::vector InternalLayerVector; typedef InternalLayerVector::const_iterator InternalLayerIterator; mutable InternalLayerVector* fLayerVector; public: /// Layer iterator returns a pointer to the molecular data slice for this zone typedef boost::indirect_iterator LayerIterator; /// Beginning of the collection of molecular data slices LayerIterator LayersBegin() const; /// End of the collection of molecular data slices LayerIterator LayersEnd() const; private: MolecularZone(const std::string& zoneId, const std::string& molecularId, const std::string& zoneName, const double northing, const double easting); //DV we have pointer data-members: prevent unintended copying MolecularZone(const MolecularZone&); MolecularZone& operator=(const MolecularZone&); virtual ~MolecularZone(); void CacheLayers(InternalLayerVector*& layerVector, const std::string& zoneIdString) const; std::string fMolecularIdString; std::string fMolecularZoneIdString; friend class MolecularDB; }; } // atm #endif // _atm_MolecularZone_h_ // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. -k" // End: