// Copyright (c) 2017 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _StdStorage_Data_HeaderFile #define _StdStorage_Data_HeaderFile #include #include #include class StdStorage_HeaderData; class StdStorage_TypeData; class StdStorage_RootData; //! A picture memorizing the stored in a //! container (for example, in a file). //! A StdStorage_Data object represents either: //! - persistent data to be written into a container, //! or //! - persistent data which are read from a container. //! A StdStorage_Data object is used in both the //! storage and retrieval operations: //! - Storage mechanism: create an empty //! StdStorage_Data object, then add successively //! persistent objects (roots) to be stored using //! the StdStorage_RootData's function AddRoot. When the set of //! data is complete, write it to a container using the //! function Write in your StdStorage algorithm. //! - Retrieval mechanism: a StdStorage_Data //! object is returned by the Read function from //! your StdStorage algorithm. Use the StdStorage_RootData's //! functions NumberOfRoots and Roots to find the roots which //! were stored in the read container. //! The roots of a StdStorage_Data object may share //! references on objects. The shared internal //! references of a StdStorage_Data object are //! maintained by the storage/retrieval mechanism. //! Note: References shared by objects which are //! contained in two distinct StdStorage_Data objects //! are not maintained by the storage/retrieval //! mechanism: external references are not //! supported by Storage_Schema algorithm class StdStorage_Data : public Standard_Transient { public: //! Creates an empty set of data. //! You explicitly create a StdStorage_Data object //! when preparing the set of objects to be stored //! together in a container (for example, in a file). //! Then use the function StdStorage_RootData's AddRoot //! to add persistent objects to the set of data. //! A StdStorage_Data object is also returned by the //! Read function of a StdStorage algorithm. Use the //! StdStorage_RootData's functions NumberOfRoots and //! Roots to find the roots which were stored in the //! read container. Standard_EXPORT StdStorage_Data(); //! Makes the container empty Standard_EXPORT void Clear(); //! Returns the header data section Handle(StdStorage_HeaderData) HeaderData() { return myHeaderData; } //! Returns the type data section Handle(StdStorage_TypeData) TypeData() { return myTypeData; } //! Returns the root data section Handle(StdStorage_RootData) RootData() { return myRootData; } private: Handle(StdStorage_HeaderData) myHeaderData; Handle(StdStorage_TypeData) myTypeData; Handle(StdStorage_RootData) myRootData; }; #endif // _StdStorage_Data_HeaderFile