// 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_Simple_HeaderFile
#define _StepData_Simple_HeaderFile

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

#include <StepData_FieldListN.hxx>
#include <StepData_Described.hxx>
#include <Handle_StepData_ESDescr.hxx>
#include <Standard_CString.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <Handle_Interface_Check.hxx>
class Interface_InterfaceMismatch;
class StepData_ESDescr;
class StepData_Field;
class StepData_FieldListN;
class Interface_Check;
class Interface_EntityIterator;


//! A Simple Entity is defined by a type (which can heve super
//! types) and a list of parameters
class StepData_Simple : public StepData_Described
{

public:

  
  //! Creates a Simple Entity
  Standard_EXPORT StepData_Simple(const Handle(StepData_ESDescr)& descr);
  
  //! Returns description, as for simple
  Standard_EXPORT   Handle(StepData_ESDescr) ESDescr()  const;
  
  //! Returns the recorded StepType (TypeName of its ESDescr)
  Standard_EXPORT   Standard_CString StepType()  const;
  
  //! Returns False
  Standard_EXPORT   Standard_Boolean IsComplex()  const;
  
  //! 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   Standard_Boolean Matches (const Standard_CString steptype)  const;
  
  //! 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   Handle(StepData_Simple) As (const Standard_CString steptype)  const;
  
  //! Tells if a Field brings a given name
  Standard_EXPORT   Standard_Boolean HasField (const Standard_CString name)  const;
  
  //! Returns a Field from its name; read-only
  Standard_EXPORT  const  StepData_Field& Field (const Standard_CString name)  const;
  
  //! Returns a Field from its name; read or write
  Standard_EXPORT   StepData_Field& CField (const Standard_CString name) ;
  
  //! Returns the count of fields
  Standard_EXPORT   Standard_Integer NbFields()  const;
  
  //! Returns a field from its rank, for read-only use
  Standard_EXPORT  const  StepData_Field& FieldNum (const Standard_Integer num)  const;
  
  //! Returns a field from its rank, in order to modify it
  Standard_EXPORT   StepData_Field& CFieldNum (const Standard_Integer num) ;
  
  //! Returns the entire field list, read-only
  Standard_EXPORT  const  StepData_FieldListN& Fields()  const;
  
  //! Returns the entire field list, read or write
  Standard_EXPORT   StepData_FieldListN& CFields() ;
  
  //! Fills a Check by using its Description
  Standard_EXPORT   void Check (Handle(Interface_Check)& ach)  const;
  
  //! Fills an EntityIterator with entities shared by <me>
  Standard_EXPORT   void Shared (Interface_EntityIterator& list)  const;




  DEFINE_STANDARD_RTTI(StepData_Simple)

protected:




private: 


  StepData_FieldListN thefields;


};







#endif // _StepData_Simple_HeaderFile
