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

#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _IntCurve_IntConicConic_HeaderFile
#include <IntCurve_IntConicConic.hxx>
#endif
#ifndef _HLRBRep_TheIntConicCurveOfCInter_HeaderFile
#include <HLRBRep_TheIntConicCurveOfCInter.hxx>
#endif
#ifndef _HLRBRep_TheIntPCurvePCurveOfCInter_HeaderFile
#include <HLRBRep_TheIntPCurvePCurveOfCInter.hxx>
#endif
#ifndef _IntRes2d_Intersection_HeaderFile
#include <IntRes2d_Intersection.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
class Standard_ConstructionError;
class HLRBRep_CurveTool;
class HLRBRep_TheProjPCurOfCInter;
class HLRBRep_TheCurveLocatorOfTheProjPCurOfCInter;
class HLRBRep_TheLocateExtPCOfTheProjPCurOfCInter;
class HLRBRep_TheIntConicCurveOfCInter;
class HLRBRep_TheIntersectorOfTheIntConicCurveOfCInter;
class HLRBRep_IntConicCurveOfCInter;
class HLRBRep_TheIntPCurvePCurveOfCInter;
class HLRBRep_ThePolygon2dOfTheIntPCurvePCurveOfCInter;
class HLRBRep_ThePolygon2dToolOfTheIntPCurvePCurveOfCInter;
class HLRBRep_InterferencePoly2dOfTheIntPCurvePCurveOfCInter;
class HLRBRep_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfCInter;
class HLRBRep_ExactIntersectionPointOfTheIntPCurvePCurveOfCInter;
class IntRes2d_Domain;
class TColStd_Array1OfReal;


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


class HLRBRep_CInter  : public IntRes2d_Intersection {

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
 // 

HLRBRep_CInter();

HLRBRep_CInter(const Standard_Address& C,const Standard_Real TolConf,const Standard_Real Tol);

HLRBRep_CInter(const Standard_Address& C,const IntRes2d_Domain& D,const Standard_Real TolConf,const Standard_Real Tol);

HLRBRep_CInter(const Standard_Address& C1,const Standard_Address& C2,const Standard_Real TolConf,const Standard_Real Tol);

HLRBRep_CInter(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Address& C2,const Standard_Real TolConf,const Standard_Real Tol);

HLRBRep_CInter(const Standard_Address& C1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Real TolConf,const Standard_Real Tol);

HLRBRep_CInter(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Real TolConf,const Standard_Real Tol);


Standard_EXPORT   void Perform(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Real TolConf,const Standard_Real Tol) ;

  void Perform(const Standard_Address& C1,const Standard_Address& C2,const Standard_Real TolConf,const Standard_Real Tol) ;


Standard_EXPORT   void Perform(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Real TolConf,const Standard_Real Tol) ;


Standard_EXPORT   void Perform(const Standard_Address& C1,const Standard_Real TolConf,const Standard_Real Tol) ;

  void Perform(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Address& C2,const Standard_Real TolConf,const Standard_Real Tol) ;

  void Perform(const Standard_Address& C1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Real TolConf,const Standard_Real Tol) ;


Standard_EXPORT   IntRes2d_Domain ComputeDomain(const Standard_Address& C1,const Standard_Real TolDomain) const;





protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 


Standard_EXPORT   void InternalPerform(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Real TolConf,const Standard_Real Tol,const Standard_Boolean Composite) ;


Standard_EXPORT   void InternalCompositePerform(const Standard_Address& C1,const IntRes2d_Domain& D1,const Standard_Integer N1,const Standard_Integer NB1,const TColStd_Array1OfReal& Tab1,const Standard_Address& C2,const IntRes2d_Domain& D2,const Standard_Integer N2,const Standard_Integer NB2,const TColStd_Array1OfReal& Tab2,const Standard_Real TolConf,const Standard_Real Tol,const Standard_Boolean Composite) ;


 // Fields PRIVATE
 //
Standard_Real param1inf;
Standard_Real param1sup;
Standard_Real param2inf;
Standard_Real param2sup;
IntCurve_IntConicConic intconiconi;
HLRBRep_TheIntConicCurveOfCInter intconicurv;
HLRBRep_TheIntPCurvePCurveOfCInter intcurvcurv;


};

#define TheCurve Standard_Address
#define TheCurve_hxx <Standard_Address.hxx>
#define TheCurveTool HLRBRep_CurveTool
#define TheCurveTool_hxx <HLRBRep_CurveTool.hxx>
#define IntCurve_TheProjPCur HLRBRep_TheProjPCurOfCInter
#define IntCurve_TheProjPCur_hxx <HLRBRep_TheProjPCurOfCInter.hxx>
#define IntCurve_TheCurveLocatorOfTheProjPCur HLRBRep_TheCurveLocatorOfTheProjPCurOfCInter
#define IntCurve_TheCurveLocatorOfTheProjPCur_hxx <HLRBRep_TheCurveLocatorOfTheProjPCurOfCInter.hxx>
#define IntCurve_TheLocateExtPCOfTheProjPCur HLRBRep_TheLocateExtPCOfTheProjPCurOfCInter
#define IntCurve_TheLocateExtPCOfTheProjPCur_hxx <HLRBRep_TheLocateExtPCOfTheProjPCurOfCInter.hxx>
#define IntCurve_TheCurveLocatorOfTheProjPCur HLRBRep_TheCurveLocatorOfTheProjPCurOfCInter
#define IntCurve_TheCurveLocatorOfTheProjPCur_hxx <HLRBRep_TheCurveLocatorOfTheProjPCurOfCInter.hxx>
#define IntCurve_TheLocateExtPCOfTheProjPCur HLRBRep_TheLocateExtPCOfTheProjPCurOfCInter
#define IntCurve_TheLocateExtPCOfTheProjPCur_hxx <HLRBRep_TheLocateExtPCOfTheProjPCurOfCInter.hxx>
#define IntCurve_TheIntConicCurve HLRBRep_TheIntConicCurveOfCInter
#define IntCurve_TheIntConicCurve_hxx <HLRBRep_TheIntConicCurveOfCInter.hxx>
#define IntCurve_TheIntersectorOfTheIntConicCurve HLRBRep_TheIntersectorOfTheIntConicCurveOfCInter
#define IntCurve_TheIntersectorOfTheIntConicCurve_hxx <HLRBRep_TheIntersectorOfTheIntConicCurveOfCInter.hxx>
#define IntCurve_TheIntersectorOfTheIntConicCurve HLRBRep_TheIntersectorOfTheIntConicCurveOfCInter
#define IntCurve_TheIntersectorOfTheIntConicCurve_hxx <HLRBRep_TheIntersectorOfTheIntConicCurveOfCInter.hxx>
#define IntCurve_IntConicCurve HLRBRep_IntConicCurveOfCInter
#define IntCurve_IntConicCurve_hxx <HLRBRep_IntConicCurveOfCInter.hxx>
#define IntCurve_TheIntPCurvePCurve HLRBRep_TheIntPCurvePCurveOfCInter
#define IntCurve_TheIntPCurvePCurve_hxx <HLRBRep_TheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ThePolygon2dOfTheIntPCurvePCurve HLRBRep_ThePolygon2dOfTheIntPCurvePCurveOfCInter
#define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx <HLRBRep_ThePolygon2dOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve HLRBRep_ThePolygon2dToolOfTheIntPCurvePCurveOfCInter
#define IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve_hxx <HLRBRep_ThePolygon2dToolOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_InterferencePoly2dOfTheIntPCurvePCurve HLRBRep_InterferencePoly2dOfTheIntPCurvePCurveOfCInter
#define IntCurve_InterferencePoly2dOfTheIntPCurvePCurve_hxx <HLRBRep_InterferencePoly2dOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve HLRBRep_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfCInter
#define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx <HLRBRep_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve HLRBRep_ExactIntersectionPointOfTheIntPCurvePCurveOfCInter
#define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx <HLRBRep_ExactIntersectionPointOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ThePolygon2dOfTheIntPCurvePCurve HLRBRep_ThePolygon2dOfTheIntPCurvePCurveOfCInter
#define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx <HLRBRep_ThePolygon2dOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve HLRBRep_ThePolygon2dToolOfTheIntPCurvePCurveOfCInter
#define IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve_hxx <HLRBRep_ThePolygon2dToolOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_InterferencePoly2dOfTheIntPCurvePCurve HLRBRep_InterferencePoly2dOfTheIntPCurvePCurveOfCInter
#define IntCurve_InterferencePoly2dOfTheIntPCurvePCurve_hxx <HLRBRep_InterferencePoly2dOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve HLRBRep_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfCInter
#define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx <HLRBRep_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve HLRBRep_ExactIntersectionPointOfTheIntPCurvePCurveOfCInter
#define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx <HLRBRep_ExactIntersectionPointOfTheIntPCurvePCurveOfCInter.hxx>
#define IntCurve_IntCurveCurveGen HLRBRep_CInter
#define IntCurve_IntCurveCurveGen_hxx <HLRBRep_CInter.hxx>

#include <IntCurve_IntCurveCurveGen.lxx>

#undef TheCurve
#undef TheCurve_hxx
#undef TheCurveTool
#undef TheCurveTool_hxx
#undef IntCurve_TheProjPCur
#undef IntCurve_TheProjPCur_hxx
#undef IntCurve_TheCurveLocatorOfTheProjPCur
#undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
#undef IntCurve_TheLocateExtPCOfTheProjPCur
#undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
#undef IntCurve_TheCurveLocatorOfTheProjPCur
#undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
#undef IntCurve_TheLocateExtPCOfTheProjPCur
#undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
#undef IntCurve_TheIntConicCurve
#undef IntCurve_TheIntConicCurve_hxx
#undef IntCurve_TheIntersectorOfTheIntConicCurve
#undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
#undef IntCurve_TheIntersectorOfTheIntConicCurve
#undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
#undef IntCurve_IntConicCurve
#undef IntCurve_IntConicCurve_hxx
#undef IntCurve_TheIntPCurvePCurve
#undef IntCurve_TheIntPCurvePCurve_hxx
#undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
#undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
#undef IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve
#undef IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve_hxx
#undef IntCurve_InterferencePoly2dOfTheIntPCurvePCurve
#undef IntCurve_InterferencePoly2dOfTheIntPCurvePCurve_hxx
#undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
#undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
#undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
#undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
#undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
#undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
#undef IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve
#undef IntCurve_ThePolygon2dToolOfTheIntPCurvePCurve_hxx
#undef IntCurve_InterferencePoly2dOfTheIntPCurvePCurve
#undef IntCurve_InterferencePoly2dOfTheIntPCurvePCurve_hxx
#undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
#undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
#undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
#undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
#undef IntCurve_IntCurveCurveGen
#undef IntCurve_IntCurveCurveGen_hxx


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


#endif
