1 /*****************************************************************************/ 2 /* XDMF */ 3 /* eXtensible Data Model and Format */ 4 /* */ 5 /* Id : XdmfDSMItemFactory.hpp */ 6 /* */ 7 /* Author: */ 8 /* Kenneth Leiter */ 9 /* kenneth.leiter@arl.army.mil */ 10 /* US Army Research Laboratory */ 11 /* Aberdeen Proving Ground, MD */ 12 /* */ 13 /* Copyright @ 2011 US Army Research Laboratory */ 14 /* All Rights Reserved */ 15 /* See Copyright.txt for details */ 16 /* */ 17 /* This software is distributed WITHOUT ANY WARRANTY; without */ 18 /* even the implied warranty of MERCHANTABILITY or FITNESS */ 19 /* FOR A PARTICULAR PURPOSE. See the above copyright notice */ 20 /* for more information. */ 21 /* */ 22 /*****************************************************************************/ 23 24 #ifndef XDMFDSMITEMFACTORY_HPP_ 25 #define XDMFDSMITEMFACTORY_HPP_ 26 27 // C Compatible Includes 28 #include "Xdmf.hpp" 29 #include "XdmfCoreItemFactory.hpp" 30 #include "XdmfDSMBuffer.hpp" 31 32 #ifdef __cplusplus 33 34 // Forward Declarations 35 class XdmfItem; 36 37 // Includes 38 39 /** 40 * @brief Factory for constructing XdmfItems from their ItemTag and 41 * ItemProperties. 42 */ 43 class XDMFDSM_EXPORT XdmfDSMItemFactory : public XdmfCoreItemFactory { 44 45 public: 46 47 /** 48 * Create a new XdmfItemFactory. 49 * 50 * Example of use: 51 * 52 * C++ 53 * 54 * @dontinclude ExampleXdmfItemFactory.cpp 55 * @skipline //#initialization 56 * @until //#initialization 57 * 58 * Python 59 * 60 * @dontinclude XdmfExampleItemFactory.py 61 * @skipline #//initialization 62 * @until #//initialization 63 * 64 * @return Constructed XdmfItemFactory. 65 */ 66 static shared_ptr<XdmfDSMItemFactory> New(); 67 68 virtual ~XdmfDSMItemFactory(); 69 70 virtual shared_ptr<XdmfItem> 71 createItem(const std::string & itemTag, 72 const std::map<std::string, std::string> & itemProperties, 73 const std::vector<shared_ptr<XdmfItem> > & childItems) const; 74 75 virtual std::vector<shared_ptr<XdmfHeavyDataController> > 76 generateHeavyDataControllers(const std::map<std::string, std::string> & itemProperties, 77 const std::vector<unsigned int> & passedDimensions, 78 shared_ptr<const XdmfArrayType> passedArrayType, 79 const std::string & passedFormat) const; 80 81 82 virtual shared_ptr<XdmfHeavyDataWriter> 83 generateHeavyDataWriter(std::string typeName, std::string path) const; 84 85 XdmfDSMBuffer * 86 getDSMBuffer(); 87 88 virtual bool isArrayTag(char * tag) const; 89 90 void 91 setDSMBuffer(XdmfDSMBuffer * newBuffer); 92 93 virtual XdmfItem * 94 DuplicatePointer(shared_ptr<XdmfItem> original) const; 95 96 protected: 97 98 XdmfDSMItemFactory(); 99 100 private: 101 102 XdmfDSMItemFactory(const XdmfDSMItemFactory &); // Not implemented. 103 void operator=(const XdmfDSMItemFactory &); // Not implemented. 104 105 XdmfDSMBuffer * mDSMBuffer; 106 }; 107 108 #ifdef _WIN32 109 XDMF_TEMPLATE template class XDMF_EXPORT shared_ptr<XdmfDSMItemFactory>; 110 #endif 111 112 #endif 113 114 #endif /* XDMFDSMITEMFACTORY_HPP_ */ 115