+ static std::shared_ptr<ModelAPI_Session> get();
+
+ //! Loads the OCAF document from the file.
+ //! \param theFileName full name of the file to load
+ //! \returns true if file was loaded successfully
+ virtual bool load(const char* theFileName) = 0;
+
+ //! Saves the OCAF document to the file.
+ //! \param theFileName full name of the file to store
+ //! \param theResults the result full file names that were stored by "save"
+ //! \returns true if file was stored successfully
+ virtual bool save(const char* theFileName, std::list<std::string>& theResults) = 0;
+
+ //! Closes all documents
+ virtual void closeAll() = 0;
+
+ //! Starts a new operation (opens a tansaction)
+ virtual void startOperation() = 0;
+ //! Finishes the previously started operation (closes the transaction)
+ virtual void finishOperation() = 0;
+ //! Aborts the operation
+ virtual void abortOperation() = 0;
+ //! Returns true if operation has been started, but not yet finished or aborted
+ virtual bool isOperation() = 0;
+ //! Returns true if document was modified (since creation/opening)
+ virtual bool isModified() = 0;
+
+ //! Returns True if there are available Undos
+ virtual bool canUndo() = 0;
+ //! Undoes last operation
+ virtual void undo() = 0;
+ //! Returns True if there are available Redos
+ virtual bool canRedo() = 0;
+ //! Redoes last operation
+ virtual void redo() = 0;