mainBuild:
  name: occt.js
  bindings:
    - symbol: Message_ProgressRange
    - symbol: TColgp_Array1OfDir
    - symbol: TColgp_Array1OfPnt
    - symbol: TColgp_Array1OfPnt2d
    - symbol: TColgp_Array2OfPnt
    - symbol: TColStd_Array1OfBoolean
    - symbol: TColgp_Array1OfVec
    - symbol: TColStd_Array1OfInteger
    - symbol: TColStd_Array1OfReal
    - symbol: Poly_Array1OfTriangle
    - symbol: Standard_Transient
    - symbol: Precision

    - symbol: gp_XYZ
    - symbol: gp_XY
    - symbol: gp_Vec
    - symbol: gp_Pnt
    - symbol: gp_Dir
    - symbol: gp_Ax1
    - symbol: gp_Ax2
    - symbol: gp_Ax3
    - symbol: gp_Circ
    - symbol: gp_Elips
    - symbol: gp_Cylinder
    - symbol: gp_Trsf
    - symbol: gp_GTrsf

    - symbol: Geom2d_Line
    - symbol: Geom2d_Curve
    - symbol: Geom2d_BoundedCurve
    - symbol: Geom2d_TrimmedCurve
    - symbol: Geom2d_BezierCurve
    - symbol: Geom2d_BSplineCurve
    - symbol: Geom2d_Geometry
    - symbol: Geom2d_Ellipse
    - symbol: Geom2d_Circle
    - symbol: Geom2d_Conic
    - symbol: Handle_Geom2d_Geometry
    - symbol: Handle_Geom2d_Line
    - symbol: Handle_Geom2d_Curve
    - symbol: Handle_Geom2d_BoundedCurve
    - symbol: Handle_Geom2d_TrimmedCurve
    - symbol: Handle_Geom2d_Ellipse
    - symbol: Handle_Geom2d_Circle
    - symbol: Handle_Geom2d_BezierCurve
    - symbol: Handle_Geom2d_BSplineCurve
    - symbol: gp_Vec2d
    - symbol: gp_Pnt2d
    - symbol: gp_Dir2d
    - symbol: gp_Ax2d
    - symbol: gp_Circ2d
    - symbol: gp_Elips2d
    - symbol: GCE2d_Root
    - symbol: GCE2d_MakeSegment
    - symbol: GCE2d_MakeArcOfCircle
    - symbol: GCE2d_MakeArcOfEllipse
    - symbol: GCE2d_MakeCircle
    - symbol: GCE2d_MakeEllipse

    - symbol: GeomLib
    - symbol: gp_Trsf2d
    - symbol: gp_GTrsf2d

    - symbol: Bnd_Box2d
    - symbol: BndLib_Add2dCurve
    - symbol: Geom2dAPI_InterCurveCurve
    - symbol: Geom2dAPI_ProjectPointOnCurve
    - symbol: Geom2dAPI_PointsToBSpline

    - symbol: Bnd_Box
    - symbol: Bnd_OBB
    - symbol: BRepBndLib

    - symbol: GeomAbs_CurveType
    - symbol: GeomAbs_SurfaceType
    - symbol: GeomAbs_Shape
    - symbol: Geom_Geometry
    - symbol: Geom_Curve
    - symbol: Geom_Surface
    - symbol: Geom_ElementarySurface
    - symbol: Geom_ConicalSurface
    - symbol: Geom_CylindricalSurface
    - symbol: Geom_BoundedSurface
    - symbol: Geom_BSplineSurface
    - symbol: Geom_BoundedCurve
    - symbol: Geom_TrimmedCurve
    - symbol: Geom_BezierCurve
    - symbol: Geom_BSplineCurve
    - symbol: GeomAPI_Interpolate
    - symbol: GeomAPI_PointsToBSpline
    - symbol: GeomAPI_PointsToBSplineSurface
    - symbol: GeomAPI_ProjectPointOnSurf
    - symbol: Handle_Geom_TrimmedCurve
    - symbol: Handle_Geom_Curve
    - symbol: Handle_Geom_Surface
    - symbol: Handle_Geom_BezierCurve
    - symbol: Handle_Geom_BSplineCurve
    - symbol: Handle_Geom_BSplineSurface

    - symbol: TopoDS
    - symbol: TopoDS_Edge
    - symbol: TopoDS_Face
    - symbol: TopoDS_Wire
    - symbol: TopoDS_Shell
    - symbol: TopoDS_Vertex
    - symbol: TopoDS_Solid
    - symbol: TopoDS_Compound
    - symbol: TopoDS_CompSolid
    - symbol: TopoDS_Shape
    - symbol: TopoDS_Builder
    - symbol: TopAbs_ShapeEnum
    - symbol: TopTools_ListOfShape
    - symbol: TopAbs_Orientation
    - symbol: TopLoc_Location
    - symbol: TopExp_Explorer
    - symbol: TopTools_ListOfShape
    - symbol: NCollection_BaseList

    - symbol: Poly_Connect
    - symbol: StdPrs_ToolTriangulatedShape
    - symbol: Poly_Triangle
    - symbol: Poly_Triangulation
    - symbol: Handle_Poly_Triangulation
    - symbol: Poly_PolygonOnTriangulation
    - symbol: Handle_Poly_PolygonOnTriangulation

    - symbol: BRep_Tool
    - symbol: BRepLib
    - symbol: BRepTools
    - symbol: BRepGProp
    - symbol: BRepGProp_Face
    - symbol: GProp_GProps
    - symbol: GC_MakeArcOfCircle
    - symbol: GC_MakeArcOfEllipse
    - symbol: GC_Root
    - symbol: GCPnts_TangentialDeflection
    - symbol: BRepMesh_IncrementalMesh
    - symbol: BRepMesh_DiscretRoot

    - symbol: BRepAdaptor_Surface
    - symbol: BRepAdaptor_Curve
    - symbol: Adaptor3d_Curve
    - symbol: Adaptor3d_Surface
    - symbol: BRepAdaptor_CompCurve

    - symbol: Geom2dAdaptor_Curve
    - symbol: Adaptor2d_Curve2d

    - symbol: Geom2dConvert_BSplineCurveToBezierCurve
    - symbol: Geom2dConvert
    - symbol: Convert_ParameterisationType

    - symbol: StlAPI_Writer
    - symbol: STEPControl_Writer
    - symbol: STEPControl_StepModelType
    - symbol: IFSelect_ReturnStatus

    - symbol: Handle_Law_Function
    - symbol: Law_Function
    - symbol: Law_Linear
    - symbol: Law_Composite
    - symbol: Law_Interpol
    - symbol: Law_BSpFunc
    - symbol: Law_S

    - symbol: BRepAlgoAPI_Algo
    - symbol: BRepAlgoAPI_BuilderAlgo
    - symbol: BRepAlgoAPI_BooleanOperation
    - symbol: BRepAlgoAPI_Cut
    - symbol: BRepAlgoAPI_Fuse
    - symbol: BOPAlgo_GlueEnum
    - symbol: BOPAlgo_Options
    - symbol: BRepAlgoAPI_Section
    - symbol: BRepAlgoAPI_Common

    - symbol: BRepExtrema_DistShapeShape

    - symbol: BRepBuilderAPI_ModifyShape
    - symbol: BRepBuilderAPI_MakeShape
    - symbol: BRepBuilderAPI_Command
    - symbol: BRepBuilderAPI_Transform
    - symbol: BRepBuilderAPI_MakeEdge
    - symbol: BRepBuilderAPI_MakeWire
    - symbol: BRepBuilderAPI_MakeFace
    - symbol: BRepBuilderAPI_MakeVertex
    - symbol: BRepBuilderAPI_MakeSolid
    - symbol: BRepBuilderAPI_TransitionMode
    - symbol: BRepBuilderAPI_Sewing
    - symbol: BRepBuilderAPI_WireError
    - symbol: BRepPrimAPI_MakeOneAxis
    - symbol: BRepPrimAPI_MakeCylinder
    - symbol: BRepPrimAPI_MakeBox
    - symbol: BRepCheck_Analyzer
    - symbol: BRepPrimAPI_MakeSweep
    - symbol: BRepPrimAPI_MakePrism
    - symbol: BRepPrimAPI_MakeRevol
    - symbol: BRepPrimAPI_MakeSphere
    - symbol: BRepPrimAPI_MakeTorus
    - symbol: BRepPrimAPI_MakeRevolution
    - symbol: BRepOffsetAPI_ThruSections
    - symbol: BRepOffsetAPI_MakeThickSolid
    - symbol: BRepOffsetAPI_MakeOffset
    - symbol: BRepOffsetAPI_MakeOffsetShape
    - symbol: BRepOffsetAPI_MakePipe
    - symbol: BRepOffsetAPI_MakePipeShell
    - symbol: BRepOffsetAPI_MakeFilling
    - symbol: BRepOffset_Mode
    - symbol: BRepFilletAPI_LocalOperation
    - symbol: BRepFilletAPI_MakeFillet
    - symbol: BRepFilletAPI_MakeChamfer
    - symbol: BRepFeat_MakeDPrism
    - symbol: BRepFeat_Form
    - symbol: ChFi3d_FilletShape
    - symbol: ChFiDS_ChamfMode
    - symbol: GeomAbs_JoinType
    - symbol: BRepFill_TypeOfContact
    - symbol: Extrema_ExtAlgo

    - symbol: ShapeFix_Root
    - symbol: ShapeFix_Solid
    - symbol: ShapeFix_Face
    - symbol: ShapeFix_Wire

    - symbol: STEPControl_Reader
    - symbol: XSControl_Reader
    - symbol: StlAPI_Reader
    - symbol: ShapeUpgrade_UnifySameDomain

    - symbol: ShapeFix_EdgeConnect

    - symbol: StlAPI

    - symbol: BRep_Builder
    - symbol: TopoDS_Builder

    - symbol: gp_Quaternion
    - symbol: gp_Mat
    - symbol: BRepBuilderAPI_GTransform
    - symbol: gp_Pln
    - symbol: BRepFeat_Gluer
    - symbol: TopExp
    - symbol: BRepFeat_SplitShape
    - symbol: GeomAPI_ProjectPointOnCurve
    - symbol: GeomAdaptor_Curve
    - symbol: BRepIntCurveSurface_Inter
    - symbol: Handle_Geom_Circle
    - symbol: Geom_Circle
    - symbol: Geom_Conic
    - symbol: GeomAPI_IntCS
    - symbol: GeomAdaptor_Surface
    - symbol: Handle_Geom_Surface
    - symbol: GC_MakeCircle
    - symbol: BOPAlgo_Algo
    - symbol: BOPAlgo_BuilderShape
    - symbol: BOPAlgo_Builder
    - symbol: BOPAlgo_ToolsProvider
    - symbol: BOPAlgo_Splitter
    - symbol: GCPnts_AbscissaPoint
    - symbol: ChFi2d_AnaFilletAlgo
    - symbol: ChFi2d_ChamferAPI
    - symbol: BRepBuilderAPI_FindPlane
    - symbol: Handle_Geom_OffsetCurve
    - symbol: Geom_OffsetCurve
    - symbol: Handle_Standard_Type
    - symbol: Standard_Type
    - symbol: Handle_TColgp_HArray1OfPnt
    - symbol: GCPnts_UniformDeflection
    - symbol: GCPnts_UniformAbscissa
    - symbol: GeomFill_Trihedron
    - symbol: BRepBuilderAPI_Copy
    - symbol: HLRBRep_Algo
    - symbol: HLRAlgo_Projector
    - symbol: HLRBRep_HLRToShape
    - symbol: Handle_HLRBRep_Algo
    - symbol: HLRBRep_InternalAlgo
    - symbol: Handle_Standard_Transient
    - symbol: gp_Lin
    - symbol: HLRBRep_TypeOfResultingEdge
    - symbol: BRepAdaptor_Curve2d
    - symbol: BRepProj_Projection
    - symbol: gp_Ax22d
    - symbol: Geom2dConvert_ApproxCurve
    - symbol: Handle_Adaptor2d_Curve2d
    - symbol: Adaptor2d_Curve2d
    
    - symbol: Standard_Failure
    - symbol: OCJS
  emccFlags:
    - -sDISABLE_EXCEPTION_CATCHING=1
    - -sEXPORT_ES6=1
    - -sUSE_ES6_IMPORT_META=0   
    - -sEXPORTED_RUNTIME_METHODS=["FS"]
    - -O3
    - -sABORTING_MALLOC=1
    - -sINITIAL_MEMORY=1GB
    - -sMAXIMUM_MEMORY=4GB
    - -sALLOW_MEMORY_GROWTH=1
    - -sMEMORY_GROWTH_LINEAR_STEP=16MB
additionalCppCode: |
  typedef Handle(IMeshTools_Context) Handle_IMeshTools_Context;
  class OCJS {
  public:
    static Standard_Failure* getStandard_FailureData(intptr_t exceptionPtr) {
      return reinterpret_cast<Standard_Failure*>(exceptionPtr);
    }
  };
