// 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 _Transfer_FinderProcess_HeaderFile
#define _Transfer_FinderProcess_HeaderFile

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

#include <Handle_Interface_InterfaceModel.hxx>
#include <Transfer_ProcessForFinder.hxx>
#include <Standard_Integer.hxx>
#include <Standard_CString.hxx>
#include <Handle_Transfer_TransientMapper.hxx>
#include <Handle_Standard_Transient.hxx>
#include <Handle_Transfer_Finder.hxx>
#include <Handle_Message_Messenger.hxx>
class Interface_InterfaceModel;
class Transfer_TransientMapper;
class Standard_Transient;
class Transfer_Finder;
class Message_Messenger;


//! Adds specific features to the generic definition :
//! PrintTrace is adapted
class Transfer_FinderProcess : public Transfer_ProcessForFinder
{

public:

  
  //! Sets FinderProcess at initial state, with an initial size
  Standard_EXPORT Transfer_FinderProcess(const Standard_Integer nb = 10000);
  
  //! Sets an InterfaceModel, which can be used during transfer
  //! for instance if a context must be managed, it is in the Model
  Standard_EXPORT   void SetModel (const Handle(Interface_InterfaceModel)& model) ;
  
  //! Returns the Model which can be used for context
  Standard_EXPORT   Handle(Interface_InterfaceModel) Model()  const;
  
  //! In the list of mapped items (between 1 and NbMapped),
  //! searches for the first mapped item which follows <num0>
  //! (not included) and which has an attribute named <name>
  //! The considered Attributes are those brought by Finders,i.e.
  //! by Input data.
  //! While NextItemWithAttribute works on Result data (Binders)
  //!
  //! Hence, allows such an iteration
  //!
  //! for (num = FP->NextMappedWithAttribute(name,0);
  //! num > 0;
  //! num = FP->NextMappedWithAttribute(name,num) {
  //! .. process mapped item <num>
  //! }
  Standard_EXPORT   Standard_Integer NextMappedWithAttribute (const Standard_CString name, const Standard_Integer num0)  const;
  
  //! Returns a TransientMapper for a given Transient Object
  //! Either <obj> is already mapped, then its Mapper is returned
  //! Or it is not, then a new one is created then returned, BUT
  //! it is not mapped here (use Bind or FindElseBind to do this)
  Standard_EXPORT   Handle(Transfer_TransientMapper) TransientMapper (const Handle(Standard_Transient)& obj)  const;
  
  //! Specific printing to trace a Finder (by its method ValueType)
  Standard_EXPORT virtual   void PrintTrace (const Handle(Transfer_Finder)& start, const Handle(Message_Messenger)& S)  const;
  
  //! Prints statistics on a given output, according mode
  Standard_EXPORT   void PrintStats (const Standard_Integer mode, const Handle(Message_Messenger)& S)  const;




  DEFINE_STANDARD_RTTI(Transfer_FinderProcess)

protected:




private: 


  Handle(Interface_InterfaceModel) themodel;


};







#endif // _Transfer_FinderProcess_HeaderFile
