Changeset 1331 for XIOS/dev/branch_openmp/src/object_template.hpp
- Timestamp:
- 11/16/17 16:20:41 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/src/object_template.hpp
r1328 r1331 12 12 namespace xios 13 13 { 14 15 16 17 18 19 14 /// ////////////////////// Déclarations ////////////////////// /// 15 template <class T> 16 class CObjectTemplate 17 : public CObject 18 , public virtual CAttributeMap 19 { 20 20 21 22 21 /// Friend /// 22 friend class CObjectFactory; 23 23 24 25 26 27 24 /// Typedef /// 25 typedef CAttributeMap SuperClassMap; 26 typedef CObject SuperClass; 27 typedef T DerivedType; 28 28 29 30 31 32 29 enum EEventId 30 { 31 EVENT_ID_SEND_ATTRIBUTE=100 32 } ; 33 33 34 34 public : 35 35 36 37 38 36 /// Autres /// 37 virtual StdString toString(void) const; 38 virtual void fromString(const StdString & str); 39 39 40 // 41 // 42 43 40 // virtual void toBinary (StdOStream & os) const; 41 // virtual void fromBinary(StdIStream & is); 42 virtual string getName(void) const ; 43 virtual void parse(xml::CXMLNode & node); 44 44 45 46 45 /// Accesseurs /// 46 ENodeType getType(void) const; 47 47 48 49 48 /// Test /// 49 virtual bool hasChild(void) const; 50 50 51 52 51 /// Traitements /// 52 virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0); 53 53 54 55 56 57 58 59 60 61 54 /// Traitement statique /// 55 static void ClearAllAttributes(void); 56 std::map<int, size_t> getMinimumBufferSizeForAttributes(); 57 void sendAttributToServer(const string& id); 58 void sendAttributToServer(CAttribute& attr) ; 59 void sendAllAttributesToServer(); 60 static void recvAttributFromClient(CEventServer& event) ; 61 static bool dispatchEvent(CEventServer& event) ; 62 62 63 64 63 bool isEqual(const string& id, const vector<StdString>& excludedAttrs); 64 bool isEqual(T* obj, const vector<StdString>& excludedAttrs); 65 65 66 67 68 66 /// Accesseur statique /// 67 static std::vector<boost::shared_ptr<DerivedType> > & 68 GetAllVectobject(const StdString & contextId); 69 69 70 71 70 /// Destructeur /// 71 virtual ~CObjectTemplate(void); 72 72 73 74 75 76 77 78 79 80 73 static bool has(const string& id) ; 74 static bool has(const string& contextId, const string& id) ; 75 static T* get(const string& id) ; 76 static T* get(const T* ptr) ; 77 static T* get(const string& contextId, const string& id) ; 78 T* get(void) ; 79 shared_ptr<T> getShared(void) ; 80 static shared_ptr<T> getShared(const T* ptr) ; 81 81 82 83 84 82 static T* create(const string& id=string("")) ; 83 static const vector<T*> getAll() ; 84 static const vector<T*> getAll(const string& contextId) ; 85 85 86 87 88 86 void generateCInterface(ostream& oss) ; 87 void generateFortran2003Interface(ostream& oss) ; 88 void generateFortranInterface(ostream& oss) ; 89 89 90 90 protected : 91 91 92 93 94 95 96 97 92 /// Constructeurs /// 93 CObjectTemplate(void); 94 explicit CObjectTemplate(const StdString & id); 95 CObjectTemplate(const CObjectTemplate<T> & object, 96 bool withAttrList = true, bool withId = true); 97 CObjectTemplate(const CObjectTemplate<T> * const object); // Not implemented. 98 98 99 99 private : 100 100 101 /// Propriétés statiques /// 102 static xios_map<StdString, 103 xios_map<StdString, 104 boost::shared_ptr<DerivedType> > > *AllMapObj_ptr; 105 static xios_map<StdString, 106 std::vector<boost::shared_ptr<DerivedType> > > *AllVectObj_ptr; 101 /// Propriétés statiques /// 102 static xios_map<StdString, 103 xios_map<StdString, 104 boost::shared_ptr<DerivedType> > > *AllMapObj_ptr; 105 #pragma omp threadprivate(AllMapObj_ptr) 106 static xios_map<StdString, 107 std::vector<boost::shared_ptr<DerivedType> > > *AllVectObj_ptr; 108 #pragma omp threadprivate(AllVectObj_ptr) 107 109 108 static xios_map< StdString, long int > *GenId_ptr ; 110 static xios_map< StdString, long int > *GenId_ptr ; 111 #pragma omp threadprivate(GenId_ptr) 109 112 110 113 }; // class CObjectTemplate 111 114 } // namespace xios 112 115
Note: See TracChangeset
for help on using the changeset viewer.