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

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

#include <BOPCol_BaseAllocator.hxx>
#include <IntTools_Curve.hxx>
#include <BOPDS_ListOfPaveBlock.hxx>
#include <BOPCol_ListOfInteger.hxx>
#include <Bnd_Box.hxx>
#include <Handle_BOPDS_PaveBlock.hxx>
#include <Standard_Boolean.hxx>
#include <BOPDS_PaveBlock.hxx>
class IntTools_Curve;
class Bnd_Box;
class BOPDS_PaveBlock;



//! The class BOPDS_Curve is to store
//! the information about intersection curve
class BOPDS_Curve 
{
public:

  DEFINE_STANDARD_ALLOC

  

  //! Empty contructor
    BOPDS_Curve();
virtual ~BOPDS_Curve();
  

  //! Contructor
  //! <theAllocator> - the allocator to manage the memory
    BOPDS_Curve(const BOPCol_BaseAllocator& theAllocator);
  

  //! Modifier
  //! Sets the curve <theC>
      void SetCurve (const IntTools_Curve& theC) ;
  

  //! Selector
  //! Returns the curve
     const  IntTools_Curve& Curve()  const;
  

  //! Modifier
  //! Sets the bounding box <theBox> of the curve
      void SetBox (const Bnd_Box& theBox) ;
  

  //! Selector
  //! Returns the bounding box of the curve
     const  Bnd_Box& Box()  const;
  

  //! Selector/Modifier
  //! Returns the bounding box of the curve
      Bnd_Box& ChangeBox() ;
  
  Standard_EXPORT   void SetPaveBlocks (const BOPDS_ListOfPaveBlock& theLPB) ;
  

  //! Selector
  //! Returns the list of pave blocks
  //! of the curve
     const  BOPDS_ListOfPaveBlock& PaveBlocks()  const;
  

  //! Selector/Modifier
  //! Returns the list of pave blocks
  //! of the curve
      BOPDS_ListOfPaveBlock& ChangePaveBlocks() ;
  

  //! Creates  initial pave block
  //! of the curve
      void InitPaveBlock1() ;
  

  //! Selector/Modifier
  //! Returns  initial pave block
  //! of the curve
      Handle(BOPDS_PaveBlock)& ChangePaveBlock1() ;
  

  //! Selector
  //! Returns list of indices of technologic vertices
  //! of the curve
     const  BOPCol_ListOfInteger& TechnoVertices()  const;
  

  //! Selector/Modifier
  //! Returns list of indices of technologic vertices
  //! of the curve
      BOPCol_ListOfInteger& ChangeTechnoVertices() ;
  

  //! Query
  //! Returns true if at least one pave block of the curve
  //! has edge
      Standard_Boolean HasEdge()  const;




protected:



  BOPCol_BaseAllocator myAllocator;
  IntTools_Curve myCurve;
  BOPDS_ListOfPaveBlock myPaveBlocks;
  BOPCol_ListOfInteger myTechnoVertices;
  Bnd_Box myBox;


private:





};


#include <BOPDS_Curve.lxx>





#endif // _BOPDS_Curve_HeaderFile
