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

#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>

#include <Handle_StepBasic_Approval.hxx>
#include <Handle_StepBasic_DateAndTime.hxx>
#include <Handle_StepBasic_PersonAndOrganization.hxx>
#include <Handle_StepBasic_SecurityClassificationLevel.hxx>
#include <Handle_StepBasic_PersonAndOrganizationRole.hxx>
#include <Handle_StepBasic_DateTimeRole.hxx>
#include <Handle_StepBasic_ApprovalRole.hxx>
#include <Handle_StepAP203_CcDesignPersonAndOrganizationAssignment.hxx>
#include <Handle_StepAP203_CcDesignSecurityClassification.hxx>
#include <Handle_StepAP203_CcDesignDateAndTimeAssignment.hxx>
#include <Handle_StepAP203_CcDesignApproval.hxx>
#include <Handle_StepBasic_ApprovalPersonOrganization.hxx>
#include <Handle_StepBasic_ApprovalDateTime.hxx>
#include <Handle_StepBasic_ProductCategoryRelationship.hxx>
#include <Handle_StepShape_ShapeDefinitionRepresentation.hxx>
#include <Handle_StepRepr_NextAssemblyUsageOccurrence.hxx>
class StepBasic_Approval;
class StepBasic_DateAndTime;
class StepBasic_PersonAndOrganization;
class StepBasic_SecurityClassificationLevel;
class StepBasic_PersonAndOrganizationRole;
class StepBasic_DateTimeRole;
class StepBasic_ApprovalRole;
class StepAP203_CcDesignPersonAndOrganizationAssignment;
class StepAP203_CcDesignSecurityClassification;
class StepAP203_CcDesignDateAndTimeAssignment;
class StepAP203_CcDesignApproval;
class StepBasic_ApprovalPersonOrganization;
class StepBasic_ApprovalDateTime;
class StepBasic_ProductCategoryRelationship;
class StepShape_ShapeDefinitionRepresentation;
class STEPConstruct_Part;
class StepRepr_NextAssemblyUsageOccurrence;


//! Maintains context specific for AP203 (required data and
//! management information such as persons, dates, approvals etc.)
//! It contains static entities (which can be shared), default
//! values for person and organisation, and also provides
//! tool for creating management entities around specific part (SDR).
class STEPConstruct_AP203Context 
{
public:

  DEFINE_STANDARD_ALLOC

  
  //! Creates tool and fills constant fields
  Standard_EXPORT STEPConstruct_AP203Context();
  
  //! Returns default approval entity which
  //! is used when no other data are available
  Standard_EXPORT   Handle(StepBasic_Approval) DefaultApproval() ;
  
  //! Sets default approval
  Standard_EXPORT   void SetDefaultApproval (const Handle(StepBasic_Approval)& app) ;
  
  //! Returns default date_and_time entity which
  //! is used when no other data are available
  Standard_EXPORT   Handle(StepBasic_DateAndTime) DefaultDateAndTime() ;
  
  //! Sets default date_and_time entity
  Standard_EXPORT   void SetDefaultDateAndTime (const Handle(StepBasic_DateAndTime)& dt) ;
  
  //! Returns default person_and_organization entity which
  //! is used when no other data are available
  Standard_EXPORT   Handle(StepBasic_PersonAndOrganization) DefaultPersonAndOrganization() ;
  
  //! Sets default person_and_organization entity
  Standard_EXPORT   void SetDefaultPersonAndOrganization (const Handle(StepBasic_PersonAndOrganization)& po) ;
  
  //! Returns default security_classification_level entity which
  //! is used when no other data are available
  Standard_EXPORT   Handle(StepBasic_SecurityClassificationLevel) DefaultSecurityClassificationLevel() ;
  
  //! Sets default security_classification_level
  Standard_EXPORT   void SetDefaultSecurityClassificationLevel (const Handle(StepBasic_SecurityClassificationLevel)& sc) ;
  
  Standard_EXPORT   Handle(StepBasic_PersonAndOrganizationRole) RoleCreator()  const;
  
  Standard_EXPORT   Handle(StepBasic_PersonAndOrganizationRole) RoleDesignOwner()  const;
  
  Standard_EXPORT   Handle(StepBasic_PersonAndOrganizationRole) RoleDesignSupplier()  const;
  
  Standard_EXPORT   Handle(StepBasic_PersonAndOrganizationRole) RoleClassificationOfficer()  const;
  
  Standard_EXPORT   Handle(StepBasic_DateTimeRole) RoleCreationDate()  const;
  
  Standard_EXPORT   Handle(StepBasic_DateTimeRole) RoleClassificationDate()  const;
  
  //! Return predefined PersonAndOrganizationRole and DateTimeRole
  //! entities named 'creator', 'design owner', 'design supplier',
  //! 'classification officer', 'creation date', 'classification date',
  //! 'approver'
  Standard_EXPORT   Handle(StepBasic_ApprovalRole) RoleApprover()  const;
  
  //! Takes SDR (part) which brings all standard data around part
  //! (common for AP203 and AP214) and creates all the additional
  //! entities required for AP203
  Standard_EXPORT   void Init (const Handle(StepShape_ShapeDefinitionRepresentation)& sdr) ;
  
  //! Takes tool which describes standard data around part
  //! (common for AP203 and AP214) and creates all the additional
  //! entities required for AP203
  //!
  //! The created entities can be obtained by calls to methods
  //! GetCreator(), GetDesignOwner(), GetDesignSupplier(),
  //! GetClassificationOfficer(), GetSecurity(), GetCreationDate(),
  //! GetClassificationDate(), GetApproval(),
  //! GetApprover(), GetApprovalDateTime(),
  //! GetProductCategoryRelationship()
  Standard_EXPORT   void Init (const STEPConstruct_Part& SDRTool) ;
  
  //! Takes NAUO which describes assembly link to component
  //! and creates the security_classification entity associated to
  //! it as required by the AP203
  //!
  //! Instantiated (or existing previously) entities concerned
  //! can be obtained by calls to methods
  //! GetClassificationOfficer(), GetSecurity(),
  //! GetClassificationDate(), GetApproval(),
  //! GetApprover(), GetApprovalDateTime()
  //! Takes tool which describes standard data around part
  //! (common for AP203 and AP214) and takes from model (or creates
  //! if missing) all the additional entities required by AP203
  Standard_EXPORT   void Init (const Handle(StepRepr_NextAssemblyUsageOccurrence)& nauo) ;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) GetCreator()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) GetDesignOwner()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) GetDesignSupplier()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) GetClassificationOfficer()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignSecurityClassification) GetSecurity()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignDateAndTimeAssignment) GetCreationDate()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignDateAndTimeAssignment) GetClassificationDate()  const;
  
  Standard_EXPORT   Handle(StepAP203_CcDesignApproval) GetApproval()  const;
  
  Standard_EXPORT   Handle(StepBasic_ApprovalPersonOrganization) GetApprover()  const;
  
  Standard_EXPORT   Handle(StepBasic_ApprovalDateTime) GetApprovalDateTime()  const;
  
  //! Return entities (roots) instantiated for the part by method Init
  Standard_EXPORT   Handle(StepBasic_ProductCategoryRelationship) GetProductCategoryRelationship()  const;
  
  //! Clears all fields describing entities specific to each part
  Standard_EXPORT   void Clear() ;
  
  //! Initializes constant fields (shared entities)
  Standard_EXPORT   void InitRoles() ;
  
  //! Initializes all missing data which are required for assembly
  Standard_EXPORT   void InitAssembly (const Handle(StepRepr_NextAssemblyUsageOccurrence)& nauo) ;
  
  //! Initializes ClassificationOfficer and ClassificationDate
  //! entities according to Security entity
  Standard_EXPORT   void InitSecurityRequisites() ;
  
  //! Initializes Approver and ApprovalDateTime
  //! entities according to Approval entity
  Standard_EXPORT   void InitApprovalRequisites() ;




protected:





private:

  
  //! Initializes all missing data which are required for part
  Standard_EXPORT   void InitPart (const STEPConstruct_Part& SDRTool) ;


  Handle(StepBasic_Approval) defApproval;
  Handle(StepBasic_DateAndTime) defDateAndTime;
  Handle(StepBasic_PersonAndOrganization) defPersonAndOrganization;
  Handle(StepBasic_SecurityClassificationLevel) defSecurityClassificationLevel;
  Handle(StepBasic_PersonAndOrganizationRole) roleCreator;
  Handle(StepBasic_PersonAndOrganizationRole) roleDesignOwner;
  Handle(StepBasic_PersonAndOrganizationRole) roleDesignSupplier;
  Handle(StepBasic_PersonAndOrganizationRole) roleClassificationOfficer;
  Handle(StepBasic_DateTimeRole) roleCreationDate;
  Handle(StepBasic_DateTimeRole) roleClassificationDate;
  Handle(StepBasic_ApprovalRole) roleApprover;
  Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) myCreator;
  Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) myDesignOwner;
  Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) myDesignSupplier;
  Handle(StepAP203_CcDesignPersonAndOrganizationAssignment) myClassificationOfficer;
  Handle(StepAP203_CcDesignSecurityClassification) mySecurity;
  Handle(StepAP203_CcDesignDateAndTimeAssignment) myCreationDate;
  Handle(StepAP203_CcDesignDateAndTimeAssignment) myClassificationDate;
  Handle(StepAP203_CcDesignApproval) myApproval;
  Handle(StepBasic_ApprovalPersonOrganization) myApprover;
  Handle(StepBasic_ApprovalDateTime) myApprovalDateTime;
  Handle(StepBasic_ProductCategoryRelationship) myProductCategoryRelationship;


};







#endif // _STEPConstruct_AP203Context_HeaderFile
