subscriptionListFile.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 #ifndef subscriptionListFile_H_
00010 #define subscriptionListFile_H_
00011 
00012 #include "lgrSim.h"
00013 #include "virtualConstructor.h"
00014 #include <vector>
00015 #include <map>
00016 #include <vl/region.h>
00017 #include <mtl/envValue.h>
00018 
00019 class DtString;
00020 
00021 namespace MAKLogger
00022 {
00026    class DT_DLL_LGRSIM DtSubscriptionListFile
00027    {
00028    public:
00029       class DimensionDesc;
00030       class ExtentDesc;
00031       class AttributeDesc;
00032       class RegionDesc;
00033       typedef std::set<RegionDesc> RegionDescSet;
00034 
00035    public:
00037       DT_VIRTUAL_CTR(DtSubscriptionListFile,())
00038 
00039       
00040       virtual ~DtSubscriptionListFile();
00041 
00044       virtual bool defaultObjectClassExists() const;
00045 
00048       virtual bool defaultInteractionClassExists() const;
00049 
00052       virtual std::set<DtString> objectClasses() const;
00053 
00056       virtual void setObjectClassList(const std::vector<DtString>& list);
00057 
00060       virtual std::set<DtString> interactionClasses() const;
00061 
00064       virtual void setInteractionClassList(const std::vector<DtString>& list);
00065 
00068       virtual void setRegionDescSet(const DtString& name, const DtSubscriptionListFile::RegionDescSet& desc);
00069 
00073       virtual bool getRegionDescSet(const DtString& descName, DtSubscriptionListFile::RegionDescSet& regionDesc) const;
00074 
00077       virtual bool regionDescSetExists(const DtString& descName) const;
00078 
00084       virtual bool addObject(const DtString& name, const DtString& regionSetName);
00085 
00088       virtual void removeObject(const DtString& name);
00089 
00094       virtual bool addInteractionClass(const DtString& className, const DtString& regionSetName);
00095 
00098       virtual void removeInteractionClass(const DtString& className);
00099 
00102       virtual const DtString* regionDescSetNameForObjectClass(const DtString& className) const;
00103 
00106       virtual const DtString* regionDescSetNameForInteractionClass(const DtString& className) const;
00107 
00110       virtual const DtSubscriptionListFile::RegionDescSet* regionDescSetForObjectClass(const DtString& className,
00111          bool ignoreDefaults=false) const;
00112 
00115       virtual const DtSubscriptionListFile::RegionDescSet* regionDescSetForInteractionClass(const DtString& className, bool ignoreDefaults=false) const;
00116 
00121       virtual unsigned int getRegionSetForObject(DtExerciseConn* exconn,
00122          const DtString& name, DtDDMRegionSet& regionSet, bool cacheRegions=true) const;
00123 
00128       virtual unsigned int getRegionSetForInteractionClass(DtExerciseConn* exconn,
00129          const DtString& className, DtDDMRegionSet& regionSet, bool cacheRegions=true ) const;
00130 
00132       virtual void clearRegions();
00133 
00137       virtual bool readFromFile(const DtString& filename);
00138 
00142       virtual bool writeToFile(const DtString& filename) const;
00143 
00146       virtual const DtString& defaultRegionSetNameObjectClassKey() const;
00147 
00150       virtual const DtString& defaultRegionSetNameInteractionClassKey() const;
00151 
00157       virtual DtSubscriptionListFile diffSubscriptionList(const DtSubscriptionListFile& newsublist,
00158                                                              std::set<DtString>& modifiedObjectClasses,
00159                                                              std::set<DtString>& modifiedInteractionClasses);
00160 
00161    protected:
00162 
00165       virtual const DtString* regionDescSetNameForClassName(
00166          const std::map<DtString, DtString>& classNameToDescNameMap, const DtString& defaultName,
00167          const DtString& className) const;
00168 
00171       virtual const DtSubscriptionListFile::RegionDescSet* regionDescSetForClassName(
00172          const std::map<DtString, DtString>& classNameToDescNameMap, const DtString& defaultName,
00173          const DtString& className, bool ignoreDefaults=false) const;
00174 
00178       virtual DtDDMRegionSP createRegion(DtExerciseConn* exconn,
00179          const DtSubscriptionListFile::RegionDesc& regionDescriptor) const;
00180 
00185       virtual unsigned int getRegionSet(DtExerciseConn* exconn,
00186          const DtSubscriptionListFile::RegionDescSet& regionDescSet, DtDDMRegionSet& regionSet,
00187          bool cacheRegions=true) const;
00188 
00192       virtual bool readRegion(DtEnvironment& env, DtEnvValueSP region, RegionDesc& regionDescriptor);
00193 
00197       virtual bool readAttribute(DtEnvironment& env, DtEnvValueSP attribute, AttributeDesc& attrributeDescriptor);
00198 
00202       virtual bool readExtent(DtEnvironment& env, DtEnvValueSP extent, ExtentDesc& extentDescriptor);
00203 
00207       virtual bool readDimension(DtEnvironment& env, DtEnvValueSP dimension, DimensionDesc& dimimensionDescriptor);
00208 
00212       virtual bool readBound(DtEnvironment& env, DtEnvValueSP dimension, const DtString& boundName, unsigned long& value);
00213 
00218       virtual bool readRegionSet(DtEnvironment& env, const std::map<DtString,
00219          RegionDesc>& regionmap, DtEnvValueSP regionset,
00220          DtString& regionsetname, RegionDescSet& regdescset);
00221 
00227       virtual bool readClassRegion(DtEnvironment& env, DtEnvValueSP classRegion, DtString& regionSetName, DtString* className=0);
00228 
00230       virtual void collectRegions(std::map<RegionDesc, DtString>& regionsToWrite) const;
00231 
00233       virtual void addRegionsToEnv(std::map<RegionDesc, DtString>& regionsToWrite, DtEnvironment& env) const;
00234 
00236       void addRegionSetsToEnv(std::map<RegionDesc, DtString>& regionsToWrite, DtEnvironment& env) const;
00237 
00239       void addObjectClassesToEnv(DtEnvironment& env) const;
00240 
00242       virtual  void addInteractionClassesToEnv(DtEnvironment& env) const;
00243 
00244 
00245    public:
00246       class DT_DLL_LGRSIM DimensionDesc {
00247       public:
00248          DtString name;
00249          unsigned long lower;
00250          unsigned long upper;
00251 
00252          DimensionDesc() : lower(), upper()
00253          {
00254 
00255          }
00256          ~DimensionDesc();
00257 
00260          bool operator<(const DimensionDesc other) const;
00261 
00262          bool operator==(const DimensionDesc other) const;
00263          bool operator!=(const DimensionDesc other) const;
00264 
00265          int serialize(char* buffer, int maxsize) const;
00266          int deserialize(const char* buffer);
00267       };
00268 
00269       class DT_DLL_LGRSIM ExtentDesc {
00270       public:
00271          std::set<DimensionDesc> dimensions;
00272 
00273          ~ExtentDesc();
00274 
00277          bool operator<(const ExtentDesc other) const;
00278 
00279          bool operator==(const ExtentDesc other) const;
00280          bool operator!=(const ExtentDesc other) const;
00281 
00282          int serialize(char* buffer, int maxsize) const;
00283          int deserialize(const char* buffer);
00284       };
00285 
00286       class DT_DLL_LGRSIM AttributeDesc {
00287       public:
00288          DtString className;
00289          DtString attrName;
00290 
00293          bool operator<(const AttributeDesc other) const;
00294 
00295          bool operator==(const AttributeDesc other) const;
00296          bool operator!=(const AttributeDesc other) const;
00297 
00298          int serialize(char* buffer, int maxsize) const;
00299          int deserialize(const char* buffer);
00300       };
00301       typedef std::set<AttributeDesc> AttributeDescSet;
00302 
00303       class DT_DLL_LGRSIM RegionDesc {
00304       public:
00305          DtString space;
00306          std::set<ExtentDesc> extents;
00307          std::map<DtString, AttributeDescSet> attributes;
00308 
00309          DtString name;
00310          unsigned long regionToken;
00311 
00312          RegionDesc() : regionToken() {}
00313          ~RegionDesc();
00314 
00318          bool operator<(const RegionDesc other) const;
00319 
00320          bool operator==(const RegionDesc other) const;
00321 
00322          int serialize(char* buffer, int maxsize) const;
00323          int deserialize(const char* buffer);
00324       };
00325 
00326    protected:
00328       std::map<DtString, RegionDescSet> myRegionDescSetMap;
00329 
00331       mutable std::map<DtString, DtDDMRegionSP> myRegions;
00332 
00334       std::map<DtString, DtString> myObjectToRegionSetMap;
00335 
00337       std::map<DtString, DtString> myInteractionClassToRegionSetMap;
00338       
00340       DtString myDefaultRegionSetNameObjectClassKey;
00341 
00343       DtString myDefaultRegionSetNameInteractionClassKey;
00344       
00345    };
00346 }
00347 
00348 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)