{-# LANGUAGE CApiFFI #-}
module OpenCascade.BRepBuilderAPI.MakeEdge
( fromVertices 
, fromPnts
, fromCurve 
, fromCurveAndParameters
, fromCurveAndVertices
, fromCurveAndPnts 
, fromCurveVerticesAndParameters
, fromCurvePntsAndParameters 
) where

import OpenCascade.TopoDS.Internal.Destructors as TopoDS.Destructors
import qualified OpenCascade.TopoDS as TopoDS
import qualified OpenCascade.GP as GP
import qualified OpenCascade.Geom as Geom
import OpenCascade.Handle
import OpenCascade.Inheritance
import Foreign.C
import Foreign.Ptr
import Data.Acquire 


-- fromVertices

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromVertices" rawFromVertices :: Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> IO (Ptr TopoDS.Edge)

fromVertices :: Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> Acquire (Ptr TopoDS.Edge)
fromVertices :: Ptr Vertex -> Ptr Vertex -> Acquire (Ptr Edge)
fromVertices Ptr Vertex
start Ptr Vertex
end = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Vertex -> Ptr Vertex -> IO (Ptr Edge)
rawFromVertices Ptr Vertex
start Ptr Vertex
end) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromPnts

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromPnts" rawFromPnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> IO (Ptr TopoDS.Edge)

fromPnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> Acquire (Ptr TopoDS.Edge)
fromPnts :: Ptr Pnt -> Ptr Pnt -> Acquire (Ptr Edge)
fromPnts Ptr Pnt
start Ptr Pnt
end = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt -> Ptr Pnt -> IO (Ptr Edge)
rawFromPnts Ptr Pnt
start Ptr Pnt
end) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromCurve

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurve" rawFromCurve :: Ptr (Handle Geom.Curve) -> IO (Ptr TopoDS.Edge)

fromCurve :: Ptr (Handle Geom.Curve) -> Acquire (Ptr TopoDS.Edge)
fromCurve :: Ptr (Handle Curve) -> Acquire (Ptr Edge)
fromCurve Ptr (Handle Curve)
curve = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve) -> IO (Ptr Edge)
rawFromCurve Ptr (Handle Curve)
curve) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)

-- fromCurveAndParameters

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurveAndParameters" rawFromCurveAndParameters :: Ptr (Handle Geom.Curve) -> CDouble -> CDouble -> IO (Ptr TopoDS.Edge)

fromCurveAndParameters :: Ptr (Handle Geom.Curve) -> Double -> Double -> Acquire (Ptr TopoDS.Edge)
fromCurveAndParameters :: Ptr (Handle Curve) -> Double -> Double -> Acquire (Ptr Edge)
fromCurveAndParameters Ptr (Handle Curve)
curve Double
p1 Double
p2 = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve) -> CDouble -> CDouble -> IO (Ptr Edge)
rawFromCurveAndParameters Ptr (Handle Curve)
curve (Double -> CDouble
CDouble Double
p1) (Double -> CDouble
CDouble Double
p2)) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromCurveAndVertices

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurveAndVertices" rawFromCurveAndVertices :: Ptr (Handle Geom.Curve) -> Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> IO (Ptr TopoDS.Edge)

fromCurveAndVertices :: Ptr (Handle Geom.Curve) -> Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> Acquire (Ptr TopoDS.Edge)
fromCurveAndVertices :: Ptr (Handle Curve)
-> Ptr Vertex -> Ptr Vertex -> Acquire (Ptr Edge)
fromCurveAndVertices Ptr (Handle Curve)
curve Ptr Vertex
v1 Ptr Vertex
v2 = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve) -> Ptr Vertex -> Ptr Vertex -> IO (Ptr Edge)
rawFromCurveAndVertices Ptr (Handle Curve)
curve Ptr Vertex
v1 Ptr Vertex
v2) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromCurveAndPnts

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurveAndPnts" rawFromCurveAndPnts :: Ptr (Handle Geom.Curve) -> Ptr GP.Pnt -> Ptr GP.Pnt -> IO (Ptr TopoDS.Edge)

fromCurveAndPnts :: Ptr (Handle Geom.Curve) -> Ptr GP.Pnt -> Ptr GP.Pnt -> Acquire (Ptr TopoDS.Edge)
fromCurveAndPnts :: Ptr (Handle Curve) -> Ptr Pnt -> Ptr Pnt -> Acquire (Ptr Edge)
fromCurveAndPnts Ptr (Handle Curve)
curve Ptr Pnt
v1 Ptr Pnt
v2 = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve) -> Ptr Pnt -> Ptr Pnt -> IO (Ptr Edge)
rawFromCurveAndPnts Ptr (Handle Curve)
curve Ptr Pnt
v1 Ptr Pnt
v2) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromCurveVerticesAndParameters

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurveVerticesAndParameters" rawFromCurveVerticesAndParameters :: Ptr (Handle Geom.Curve) -> Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> CDouble -> CDouble -> IO (Ptr TopoDS.Edge)

fromCurveVerticesAndParameters :: Ptr (Handle Geom.Curve) -> Ptr TopoDS.Vertex -> Ptr TopoDS.Vertex -> Double -> Double -> Acquire (Ptr TopoDS.Edge)
fromCurveVerticesAndParameters :: Ptr (Handle Curve)
-> Ptr Vertex
-> Ptr Vertex
-> Double
-> Double
-> Acquire (Ptr Edge)
fromCurveVerticesAndParameters Ptr (Handle Curve)
curve Ptr Vertex
v1 Ptr Vertex
v2 Double
p1 Double
p2 = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve)
-> Ptr Vertex -> Ptr Vertex -> CDouble -> CDouble -> IO (Ptr Edge)
rawFromCurveVerticesAndParameters Ptr (Handle Curve)
curve Ptr Vertex
v1 Ptr Vertex
v2 (Double -> CDouble
CDouble Double
p1) (Double -> CDouble
CDouble Double
p2)) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)


-- fromCurvePntsAndParameters

foreign import capi unsafe "hs_BRepBuilderAPI_MakeEdge.h hs_BRepBuilderAPI_MakeEdge_fromCurvePntsAndParameters" rawFromCurvePntsAndParameters :: Ptr (Handle Geom.Curve) -> Ptr GP.Pnt -> Ptr GP.Pnt -> CDouble -> CDouble -> IO (Ptr TopoDS.Edge)

fromCurvePntsAndParameters :: Ptr (Handle Geom.Curve) -> Ptr GP.Pnt -> Ptr GP.Pnt -> Double -> Double -> Acquire (Ptr TopoDS.Edge)
fromCurvePntsAndParameters :: Ptr (Handle Curve)
-> Ptr Pnt -> Ptr Pnt -> Double -> Double -> Acquire (Ptr Edge)
fromCurvePntsAndParameters Ptr (Handle Curve)
curve Ptr Pnt
v1 Ptr Pnt
v2 Double
p1 Double
p2 = IO (Ptr Edge) -> (Ptr Edge -> IO ()) -> Acquire (Ptr Edge)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr (Handle Curve)
-> Ptr Pnt -> Ptr Pnt -> CDouble -> CDouble -> IO (Ptr Edge)
rawFromCurvePntsAndParameters Ptr (Handle Curve)
curve Ptr Pnt
v1 Ptr Pnt
v2 (Double -> CDouble
CDouble Double
p1) (Double -> CDouble
CDouble Double
p2)) (Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape (Ptr Shape -> IO ())
-> (Ptr Edge -> Ptr Shape) -> Ptr Edge -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr Edge -> Ptr Shape
forall a b. SubTypeOf a b => Ptr b -> Ptr a
upcast)