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

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

#include <Handle_IGESData_Protocol.hxx>
#include <Handle_IGESData_FileProtocol.hxx>
#include <IGESData_Protocol.hxx>
#include <Standard_Integer.hxx>
#include <Handle_Interface_Protocol.hxx>
class IGESData_Protocol;
class Interface_Protocol;


//! This class allows to define complex protocols, in order to
//! treat various sub-sets (or the complete set) of the IGES Norm,
//! such as Solid + Draw (which are normally independant), etc...
//! While it inherits Protocol from IGESData, it admits
//! UndefinedEntity too
class IGESData_FileProtocol : public IGESData_Protocol
{

public:

  
  //! Returns an empty FileProtocol
  Standard_EXPORT IGESData_FileProtocol();
  
  //! Adds a resource
  Standard_EXPORT   void Add (const Handle(IGESData_Protocol)& protocol) ;
  
  //! Gives the count of Resources : the count of Added Protocols
  Standard_EXPORT virtual   Standard_Integer NbResources()  const;
  
  //! Returns a Resource, given a rank (rank of call to Add)
  Standard_EXPORT virtual   Handle(Interface_Protocol) Resource (const Standard_Integer num)  const;




  DEFINE_STANDARD_RTTI(IGESData_FileProtocol)

protected:




private: 


  Handle(IGESData_Protocol) theresource;
  Handle(IGESData_FileProtocol) thenext;


};







#endif // _IGESData_FileProtocol_HeaderFile
