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

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

#ifndef _BRepAlgo_DSAccess_HeaderFile
#include <BRepAlgo_DSAccess.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _TopTools_MapOfShape_HeaderFile
#include <TopTools_MapOfShape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
#ifndef _Handle_TopOpeBRepDS_HDataStructure_HeaderFile
#include <Handle_TopOpeBRepDS_HDataStructure.hxx>
#endif
#ifndef _Handle_TopOpeBRepBuild_HBuilder_HeaderFile
#include <Handle_TopOpeBRepBuild_HBuilder.hxx>
#endif
class TopoDS_Shape;
class TopOpeBRepDS_HDataStructure;
class TopTools_ListOfShape;
class TopOpeBRepBuild_HBuilder;
class BRepAlgo_DSAccess;



class BRepAlgo_BooleanOperations  {
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); 
  }

  
  Standard_EXPORT   BRepAlgo_BooleanOperations();
  //! S1 is a Shell with ALL faces supported by the SAME S2 is <br>
//!          an Edge INCLUDED in that surface with pcurve. <br>
//!          this avoids a time-consuming 3D operation, compared to Shapes. <br>
  Standard_EXPORT     void Shapes2d(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ;
  //! Defines the arguments. <br>
  Standard_EXPORT     void Shapes(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ;
  //! Sets different parameters for the curve approximations : <br>
//!          NbPntMax : Maximum number of points to be approximated at <br>
//!                     the same time in one curve. <br>
//!          Tol3D, Tol2D : Tolerances to be reached by the approximation. <br>
//!          RelativeTol : The given tolerances are relative. <br>
  Standard_EXPORT     void SetApproxParameters(const Standard_Integer NbPntMax,const Standard_Real Tol3D,const Standard_Real Tol2D,const Standard_Boolean RelativeTol) ;
  
  Standard_EXPORT     void Define(const TopoDS_Shape& S1,const TopoDS_Shape& S2,Handle(TopOpeBRepDS_HDataStructure)& HDS) ;
  //! returns the common part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Common() ;
  //! returns the fuse part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Fus() ;
  //! returns the cut part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Cut() ;
  //! returns the intersection of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Section() ;
  //! returns the result of the boolean operation. <br>
  Standard_EXPORT    const TopoDS_Shape& Shape() ;
  //! Returns the shape(s) resulting of the boolean operation <br>
//!          issued from the shape <S>. <br>
  Standard_EXPORT    const TopoDS_Shape& ShapeFrom(const TopoDS_Shape& S) ;
  //! Returns the list of the descendant shapes of the shape <S>. <br>
  Standard_EXPORT    const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ;
  //! Returns the fact that the shape <S> has been deleted or not <br>
//!          by the boolean operation. <br>
  Standard_EXPORT     Standard_Boolean IsDeleted(const TopoDS_Shape& S) ;
  
  Standard_EXPORT    const Handle_TopOpeBRepDS_HDataStructure& DataStructure() const;
  
  Standard_EXPORT     Handle_TopOpeBRepDS_HDataStructure& ChangeDataStructure() ;
  
  Standard_EXPORT    const Handle_TopOpeBRepBuild_HBuilder& Builder() const;
  
  Standard_EXPORT     Handle_TopOpeBRepBuild_HBuilder& ChangeBuilder() ;
  //! returns the member myDSA. It is useful to then access <br>
//!          the method GetSectionEdgeSet (wich is a member of DSAccess) <br>
  Standard_EXPORT     BRepAlgo_DSAccess& DataStructureAccess() ;





protected:





private:

  //! Performs the global boolean operation. <br>
  Standard_EXPORT     void Perform() ;
  //! Performs the global boolean operation and build the <br>
//!          result in regards of the given states. <br>
  Standard_EXPORT     void Perform(const TopAbs_State State1,const TopAbs_State State2) ;


BRepAlgo_DSAccess myDSA;
TopoDS_Shape myS1;
TopoDS_Shape myS2;
TopoDS_Shape myShape;
TopTools_MapOfShape myMapShape;
TopoDS_Shape myResult;
Standard_Integer myApproxNbPntMax;
Standard_Real myApproxTol3D;
Standard_Real myApproxTol2D;
Standard_Boolean myApproxRelativeTol;


};





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


#endif
