// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _IFSelect_SessionDumper_HeaderFile
#define _IFSelect_SessionDumper_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_IFSelect_SessionDumper.hxx>

#include <Handle_IFSelect_SessionDumper.hxx>
#include <MMgt_TShared.hxx>
#include <Standard_Boolean.hxx>
#include <Handle_Standard_Transient.hxx>
class IFSelect_SessionFile;
class Standard_Transient;
class TCollection_AsciiString;


//! A SessionDumper is called by SessionFile. It takes into
//! account a set of classes (such as Selections, Dispatches ...).
//! SessionFile writes the Type (as defined by cdl) of each Item
//! and its general Parameters. It manages the names of the Items.
//!
//! A SessionDumper must be able to Write the Parameters which are
//! own of each Item it takes into account, given its Class, then
//! to Recognize the Type and Read its Own Parameters to create
//! an Item of this Type with these own Parameters.
//!
//! Then, there must be defined one sub-type of SessionDumper per
//! consistent set of classes (e.g. a package).
//!
//! By Own Parameters, understand Parameters given at Creation Time
//! if there are, or specific of a given class, apart from those
//! defined at superclass levels (e.g. Final Selection for a
//! Dispatch, Input Selection for a SelectExtract or SelectDeduct,
//! Direct Status for a SelectExtract, etc...).
//!
//! The Parameters are those stored in a WorkSession, they can be
//! of Types : IntParam, HAsciiString (for TextParam), Selection,
//! Dispatch.
//!
//! SessionDumpers are organized in a Library which is used by
//! SessionFile. They are put at Creation Time in this Library.
class IFSelect_SessionDumper : public MMgt_TShared
{

public:

  
  //! Returns the First item of the Library of Dumper. The Next ones
  //! are then obtained by Next on the returned items
  Standard_EXPORT static   Handle(IFSelect_SessionDumper) First() ;
  
  //! Returns the Next SesionDumper in the Library. Returns a Null
  //! Handle at the End.
  Standard_EXPORT   Handle(IFSelect_SessionDumper) Next()  const;
  
  //! Writes the Own Parameters of a given Item, if it forecast to
  //! manage its Type.
  //! Returns True if it has recognized the Type of the Item (in
  //! this case, it is assumed to have written the Own Parameters if
  //! there are some), False else : in that case, SessionFile will
  //! try another SessionDumper in the Library.
  //! WriteOwn can use these methods from SessionFile : SendVoid,
  //! SendItem, SendText, and if necessary, WorkSession.
  Standard_EXPORT virtual   Standard_Boolean WriteOwn (IFSelect_SessionFile& file, const Handle(Standard_Transient)& item)  const = 0;
  
  //! Recognizes a Type (given as <type>) then Creates an Item of
  //! this Type with the Own Parameter, as required.
  //! Returns True if it has recognized the Type (in this case, it
  //! is assumed to have created the Item, returned as <item>),
  //! False else : in that case, SessionFile will try another
  //! SessionDumper in the Library.
  //! ReadOwn can use these methods from SessionFile to access Own
  //! Parameters : NbOwnParams, IsVoid, IsText, TextValue, ItemValue
  Standard_EXPORT virtual   Standard_Boolean ReadOwn (IFSelect_SessionFile& file, const TCollection_AsciiString& type, Handle(Standard_Transient)& item)  const = 0;




  DEFINE_STANDARD_RTTI(IFSelect_SessionDumper)

protected:

  
  //! The Initialization puts a just created SessionDumper in the
  //! Library of SessionDumper. Then, it suffices to create once
  //! a SessionDumper to fill the Library with it
  Standard_EXPORT IFSelect_SessionDumper();



private: 


  Handle(IFSelect_SessionDumper) thenext;


};







#endif // _IFSelect_SessionDumper_HeaderFile
