// File generated by CPPExt (Value)
//
//                     Copyright (C) 1991 - 2000 by  
//                      Matra Datavision SA.  All rights reserved.
//  
//                     Copyright (C) 2001 - 2004 by
//                     Open CASCADE SA.  All rights reserved.
// 
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//  
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.

#ifndef _STEPConstruct_AP203Context_HeaderFile
#define _STEPConstruct_AP203Context_HeaderFile

#ifndef _Handle_StepBasic_Approval_HeaderFile
#include <Handle_StepBasic_Approval.hxx>
#endif
#ifndef _Handle_StepBasic_DateAndTime_HeaderFile
#include <Handle_StepBasic_DateAndTime.hxx>
#endif
#ifndef _Handle_StepBasic_PersonAndOrganization_HeaderFile
#include <Handle_StepBasic_PersonAndOrganization.hxx>
#endif
#ifndef _Handle_StepBasic_SecurityClassificationLevel_HeaderFile
#include <Handle_StepBasic_SecurityClassificationLevel.hxx>
#endif
#ifndef _Handle_StepBasic_PersonAndOrganizationRole_HeaderFile
#include <Handle_StepBasic_PersonAndOrganizationRole.hxx>
#endif
#ifndef _Handle_StepBasic_DateTimeRole_HeaderFile
#include <Handle_StepBasic_DateTimeRole.hxx>
#endif
#ifndef _Handle_StepBasic_ApprovalRole_HeaderFile
#include <Handle_StepBasic_ApprovalRole.hxx>
#endif
#ifndef _Handle_StepAP203_CcDesignPersonAndOrganizationAssignment_HeaderFile
#include <Handle_StepAP203_CcDesignPersonAndOrganizationAssignment.hxx>
#endif
#ifndef _Handle_StepAP203_CcDesignSecurityClassification_HeaderFile
#include <Handle_StepAP203_CcDesignSecurityClassification.hxx>
#endif
#ifndef _Handle_StepAP203_CcDesignDateAndTimeAssignment_HeaderFile
#include <Handle_StepAP203_CcDesignDateAndTimeAssignment.hxx>
#endif
#ifndef _Handle_StepAP203_CcDesignApproval_HeaderFile
#include <Handle_StepAP203_CcDesignApproval.hxx>
#endif
#ifndef _Handle_StepBasic_ApprovalPersonOrganization_HeaderFile
#include <Handle_StepBasic_ApprovalPersonOrganization.hxx>
#endif
#ifndef _Handle_StepBasic_ApprovalDateTime_HeaderFile
#include <Handle_StepBasic_ApprovalDateTime.hxx>
#endif
#ifndef _Handle_StepBasic_ProductCategoryRelationship_HeaderFile
#include <Handle_StepBasic_ProductCategoryRelationship.hxx>
#endif
#ifndef _Handle_StepShape_ShapeDefinitionRepresentation_HeaderFile
#include <Handle_StepShape_ShapeDefinitionRepresentation.hxx>
#endif
#ifndef _Handle_StepRepr_NextAssemblyUsageOccurrence_HeaderFile
#include <Handle_StepRepr_NextAssemblyUsageOccurrence.hxx>
#endif
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;


#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

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

public:

    void* operator new(size_t,void* anAddress) 
      {
        return anAddress;
      }
    void* operator new(size_t size) 
      { 
        return Standard::Allocate(size); 
      }
    void  operator delete(void *anAddress) 
      { 
        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
      }
 // Methods PUBLIC
 // 

//! Creates tool and fills constant fields <br>
Standard_EXPORT STEPConstruct_AP203Context();

//! Returns default approval entity which <br>
//!          is used when no other data are available <br>
Standard_EXPORT   Handle_StepBasic_Approval DefaultApproval() ;

//! Sets default approval <br>
Standard_EXPORT   void SetDefaultApproval(const Handle(StepBasic_Approval)& app) ;

//! Returns default date_and_time entity which <br>
//!          is used when no other data are available <br>
Standard_EXPORT   Handle_StepBasic_DateAndTime DefaultDateAndTime() ;

//! Sets default date_and_time entity <br>
Standard_EXPORT   void SetDefaultDateAndTime(const Handle(StepBasic_DateAndTime)& dt) ;

//! Returns default person_and_organization entity which <br>
//!          is used when no other data are available <br>
Standard_EXPORT   Handle_StepBasic_PersonAndOrganization DefaultPersonAndOrganization() ;

//! Sets default person_and_organization entity <br>
Standard_EXPORT   void SetDefaultPersonAndOrganization(const Handle(StepBasic_PersonAndOrganization)& po) ;

//! Returns default security_classification_level entity which <br>
//!          is used when no other data are available <br>
Standard_EXPORT   Handle_StepBasic_SecurityClassificationLevel DefaultSecurityClassificationLevel() ;

//! Sets default security_classification_level <br>
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 <br>
//!          entities named 'creator', 'design owner', 'design supplier', <br>
//!          'classification officer', 'creation date', 'classification date', <br>
//!          'approver' <br>
Standard_EXPORT   Handle_StepBasic_ApprovalRole RoleApprover() const;

//! Takes SDR (part) which brings all standard data around part <br>
//!          (common for AP203 and AP214) and creates all the additional <br>
//!          entities required for AP203 <br>
Standard_EXPORT   void Init(const Handle(StepShape_ShapeDefinitionRepresentation)& sdr) ;

//! Takes tool which describes standard data around part <br>
//!          (common for AP203 and AP214) and creates all the additional <br>
//!          entities required for AP203 <br>
Standard_EXPORT   void Init(const STEPConstruct_Part& SDRTool) ;

//! Takes NAUO which describes assembly link to component <br>
//!          and creates the security_classification entity associated to <br>
//!          it as required by the AP203 <br>
//! <br>
//!          Instantiated (or existing previously) entities concerned <br>
//!          can be obtained by calls to methods <br>
//!          GetClassificationOfficer(), GetSecurity(), <br>
//!          GetClassificationDate(), GetApproval(), <br>
//!          GetApprover(), GetApprovalDateTime() <br>//! Takes tool which describes standard data around part <br>
//!          (common for AP203 and AP214) and takes from model (or creates <br>
//!          if missing) all the additional entities required by AP203 <br>
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 <br>
Standard_EXPORT   Handle_StepBasic_ProductCategoryRelationship GetProductCategoryRelationship() const;

//! Clears all fields describing entities specific to each part <br>
Standard_EXPORT   void Clear() ;

//! Initializes constant fields (shared entities) <br>
Standard_EXPORT   void InitRoles() ;

//! Initializes all missing data which are required for assembly <br>
Standard_EXPORT   void InitAssembly(const Handle(StepRepr_NextAssemblyUsageOccurrence)& nauo) ;

//! Initializes ClassificationOfficer and ClassificationDate <br>
//!          entities according to Security entity <br>
Standard_EXPORT   void InitSecurityRequisites() ;

//! Initializes Approver and ApprovalDateTime <br>
//!          entities according to Approval entity <br>
Standard_EXPORT   void InitApprovalRequisites() ;





protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 

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


 // Fields PRIVATE
 //
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;


};





// other Inline functions and methods (like "C++: function call" methods)
//


#endif
