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

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

#include <Handle_StepData_EDescr.hxx>
#include <MMgt_TShared.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_CString.hxx>
#include <Handle_StepData_Simple.hxx>
#include <Handle_Interface_Check.hxx>
class StepData_EDescr;
class Interface_InterfaceMismatch;
class StepData_Simple;
class StepData_Field;
class Interface_Check;
class Interface_EntityIterator;


//! General frame to describe entities with Description (Simple or
//! Complex)
class StepData_Described : public MMgt_TShared
{

public:

  
  //! Returns the Description used to define this entity
  Standard_EXPORT   Handle(StepData_EDescr) Description()  const;
  
  //! Tells if a described entity is complex
  Standard_EXPORT virtual   Standard_Boolean IsComplex()  const = 0;
  
  //! Tells if a step type is matched by <me>
  //! For a Simple Entity : own type or super type
  //! For a Complex Entity : one of the members
  Standard_EXPORT virtual   Standard_Boolean Matches (const Standard_CString steptype)  const = 0;
  
  //! Returns a Simple Entity which matches with a Type in <me> :
  //! For a Simple Entity : me if it matches, else a null handle
  //! For a Complex Entity : the member which matches, else null
  Standard_EXPORT virtual   Handle(StepData_Simple) As (const Standard_CString steptype)  const = 0;
  
  //! Tells if a Field brings a given name
  Standard_EXPORT virtual   Standard_Boolean HasField (const Standard_CString name)  const = 0;
  
  //! Returns a Field from its name; read-only
  Standard_EXPORT virtual  const  StepData_Field& Field (const Standard_CString name)  const = 0;
  
  //! Returns a Field from its name; read or write
  Standard_EXPORT virtual   StepData_Field& CField (const Standard_CString name)  = 0;
  
  //! Fills a Check by using its Description
  Standard_EXPORT virtual   void Check (Handle(Interface_Check)& ach)  const = 0;
  
  //! Fills an EntityIterator with entities shared by <me>
  Standard_EXPORT virtual   void Shared (Interface_EntityIterator& list)  const = 0;




  DEFINE_STANDARD_RTTI(StepData_Described)

protected:

  
  //! Initializes a Described Entity from a Description
  //! (i.e. puts it in a field ...)
  Standard_EXPORT StepData_Described(const Handle(StepData_EDescr)& descr);



private: 


  Handle(StepData_EDescr) thedescr;


};







#endif // _StepData_Described_HeaderFile
