[GHC] #823: impossible happens with ghc 6.5 building gtk2hs on
win32
GHC
trac at galois.com
Wed Aug 2 11:29:36 EDT 2006
#823: impossible happens with ghc 6.5 building gtk2hs on win32
-----------------------------------+----------------------------------------
Reporter: dagit at codersbase.com | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.5
Severity: normal | Resolution:
Keywords: | Os: Windows
Difficulty: Unknown | Architecture: x86
-----------------------------------+----------------------------------------
Old description:
> Trying to build gtk2hs-0.9.10 on win32 using ghc 6.5 (the ghc that ships
> with visual haskell).
>
> output of ghc -v5:
> Glasgow Haskell Compiler, Version 6.5, for Haskell 98, compiled by GHC
> version 6.4
> Using package config file: c:\Program Files\Visual Haskell\package.conf
> name: rts
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules:
> hidden-modules:
> import-dirs:
> library-dirs: "c:/Program Files/Visual Haskell"
> "c:/Program Files/Visual Haskell/gcc-lib"
> hs-libraries: HSrts
> extra-libraries: m gmp wsock32
> include-dirs: "c:/Program Files/Visual Haskell/include"
> "c:/Program Files/Visual Haskell/include/mingw"
> includes: Stg.h
> depends:
> hugs-options:
> cc-options:
> ld-options: -u _GHCziBase_Izh_static_info -u
> _GHCziBase_Czh_static_info -u _GHCziFloat_Fzh_static_info -u
> _GHCziFloat_Dzh_static_info -u _GHCziPtr_Ptr_static_info -u
> _GHCziWord_Wzh_static_info -u _GHCziInt_I8zh_static_info -u
> _GHCziInt_I16zh_static_info -u _GHCziInt_I32zh_static_info -u
> _GHCziInt_I64zh_static_info -u _GHCziWord_W8zh_static_info -u
> _GHCziWord_W16zh_static_info -u _GHCziWord_W32zh_static_info
> -u
> _GHCziWord_W64zh_static_info -u
> _GHCziStable_StablePtr_static_info
> -u _GHCziBase_Izh_con_info -u _GHCziBase_Czh_con_info -u
> _GHCziFloat_Fzh_con_info -u _GHCziFloat_Dzh_con_info -u
> _GHCziPtr_Ptr_con_info -u _GHCziPtr_FunPtr_con_info -u
> _GHCziStable_StablePtr_con_info -u _GHCziBase_False_closure
> -u
> _GHCziBase_True_closure -u _GHCziPack_unpackCString_closure
> -u
> _GHCziIOBase_stackOverflow_closure -u
> _GHCziIOBase_heapOverflow_closure -u
> _GHCziIOBase_NonTermination_closure -u
> _GHCziIOBase_BlockedOnDeadMVar_closure -u
> _GHCziIOBase_BlockedIndefinitely_closure -u
> _GHCziIOBase_Deadlock_closure -u
> _GHCziWeak_runFinalizzerBatch_closure
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: haskell98
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Array Bits CError CForeign CPUTime CString CTypes
> Char Complex Directory ForeignPtr IO Int Ix List Locale
> MarshalAlloc MarshalArray MarshalError MarshalUtils
> Maybe Monad Ptr
> Random Ratio StablePtr Storable System Time Word
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HShaskell98
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/haskell98/haskell98.haddock
> haddock-html: $topdir/html/libraries/haskell98
> name: template-haskell
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Language.Haskell.TH.PprLib Language.Haskell.TH.Lib
> Language.Haskell.TH.Ppr Language.Haskell.TH.Syntax
> Language.Haskell.TH
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HStemplate-haskell
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/template-haskell/template-
> haskell.haddock
> haddock-html: $topdir/html/libraries/template-haskell
> name: Cabal
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Distribution.Compat.ReadP Distribution.Compiler
> Distribution.Extension Distribution.GetOpt
> Distribution.InstalledPackageInfo Distribution.License
> Distribution.Make Distribution.Package
> Distribution.PackageDescription Distribution.ParseUtils
> Distribution.PreProcess Distribution.Setup
> Distribution.Simple
> Distribution.Version Distribution.PreProcess.Unlit
> Distribution.Simple.Build Distribution.Simple.Configure
> Distribution.Simple.GHCPackageConfig
> Distribution.Simple.Install
> Distribution.Simple.LocalBuildInfo
> Distribution.Simple.Register
> Distribution.Simple.SrcDist Distribution.Simple.Utils
> Language.Haskell.Extension
> hidden-modules: Distribution.Compat.Exception
> Distribution.Compat.RawSystem
> Distribution.Compat.FilePath
> Distribution.Compat.Directory
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSCabal
> extra-libraries: shfolder
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/Cabal/Cabal.haddock
> haddock-html: $topdir/html/libraries/Cabal
> name: parsec
> version: 2.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Text.ParserCombinators.Parsec.Error
> Text.ParserCombinators.Parsec.Char
> Text.ParserCombinators.Parsec.Combinator
> Text.ParserCombinators.Parsec.Expr
> Text.ParserCombinators.Parsec.Language
> Text.ParserCombinators.Parsec.Perm
> Text.ParserCombinators.Parsec.Pos
> Text.ParserCombinators.Parsec.Prim
> Text.ParserCombinators.Parsec.Token
> Text.ParserCombinators.Parsec
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSparsec
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/parsec/parsec.haddock
> haddock-html: $topdir/html/libraries/parsec
> name: haskell-src
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Language.Haskell.Lexer Language.Haskell.Parser
> Language.Haskell.ParseMonad Language.Haskell.ParseUtils
> Language.Haskell.Pretty Language.Haskell.Syntax
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HShaskell-src
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/haskell-src/haskell-
> src.haddock
> haddock-html: $topdir/html/libraries/haskell-src
> name: network
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Network.BSD Network.CGI Network.Socket Network.URI
> Network
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSnetwork
> extra-libraries:
> include-dirs: "c:/Program Files/Visual Haskell/include"
> includes: HsNet.h
> depends: base-1.0 parsec-2.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/network/network.haddock
> haddock-html: $topdir/html/libraries/network
> name: QuickCheck
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Debug.QuickCheck.Batch Debug.QuickCheck.Poly
> Debug.QuickCheck.Utils Debug.QuickCheck
> Test.QuickCheck.Batch
> Test.QuickCheck.Poly Test.QuickCheck.Utils
> Test.QuickCheck
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSQuickCheck
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/QuickCheck/QuickCheck.haddock
> haddock-html: $topdir/html/libraries/QuickCheck
> name: HUnit
> version: 1.1
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Test.HUnit.Base Test.HUnit.Lang
> Test.HUnit.Terminal Test.HUnit.Text Test.HUnit
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSHUnit
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/HUnit/HUnit.haddock
> haddock-html: $topdir/html/libraries/HUnit
> name: mtl
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Control.Monad.Error Control.Monad.Cont
> Control.Monad.Identity Control.Monad.List
> Control.Monad.RWS
> Control.Monad.Reader Control.Monad.State
> Control.Monad.Trans
> Control.Monad.Writer
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSmtl
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/mtl/mtl.haddock
> haddock-html: $topdir/html/libraries/mtl
> name: fgl
> version: 5.2
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Data.Graph.Inductive.Internal.FiniteMap
> Data.Graph.Inductive.Internal.Heap
> Data.Graph.Inductive.Internal.Queue
> Data.Graph.Inductive.Internal.RootPath
> Data.Graph.Inductive.Internal.Thread
> Data.Graph.Inductive.Basic
> Data.Graph.Inductive.Example Data.Graph.Inductive.Graph
> Data.Graph.Inductive.Graphviz Data.Graph.Inductive.Monad
> Data.Graph.Inductive.NodeMap Data.Graph.Inductive.Query
> Data.Graph.Inductive.Tree
> Data.Graph.Inductive.Monad.IOArray
> Data.Graph.Inductive.Query.ArtPoint
> Data.Graph.Inductive.Query.BCC
> Data.Graph.Inductive.Query.BFS
> Data.Graph.Inductive.Query.DFS
> Data.Graph.Inductive.Query.Dominators
> Data.Graph.Inductive.Query.GVD
> Data.Graph.Inductive.Query.Indep
> Data.Graph.Inductive.Query.MST
> Data.Graph.Inductive.Query.MaxFlow
> Data.Graph.Inductive.Query.MaxFlow2
> Data.Graph.Inductive.Query.Monad
> Data.Graph.Inductive.Query.SP
> Data.Graph.Inductive.Query.TransClos
> Data.Graph.Inductive
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSfgl
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0 mtl-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/fgl/fgl.haddock
> haddock-html: $topdir/html/libraries/fgl
> name: Win32
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Graphics.Win32.GDI.Bitmap Graphics.Win32.GDI.Brush
> Graphics.Win32.GDI.Clip Graphics.Win32.GDI.Font
> Graphics.Win32.GDI.Graphics2D Graphics.Win32.GDI.HDC
> Graphics.Win32.GDI.Palette Graphics.Win32.GDI.Path
> Graphics.Win32.GDI.Pen Graphics.Win32.GDI.Region
> Graphics.Win32.GDI.Types Graphics.Win32.Control
> Graphics.Win32.Dialogue Graphics.Win32.GDI
> Graphics.Win32.Icon
> Graphics.Win32.Key Graphics.Win32.Menu
> Graphics.Win32.Message
> Graphics.Win32.Misc Graphics.Win32.Resource
> Graphics.Win32.Window
> Graphics.Win32 System.Win32.DLL System.Win32.File
> System.Win32.Info
> System.Win32.Mem System.Win32.NLS System.Win32.Process
> System.Win32.Registry System.Win32.Types System.Win32
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSWin32
> extra-libraries: HSWin32_cbits user32 gdi32 winmm kernel32 advapi32
> include-dirs: "c:/Program Files/Visual Haskell/include"
> includes: HsWin32.h HsGDI.h WndProc.h
> depends: base-1.0
> hugs-options:
> cc-options: -DUNICODE
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/Win32/Win32.haddock
> haddock-html: $topdir/html/libraries/Win32
> name: HGL
> version: 3.1
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Graphics.HGL.Core Graphics.HGL.Draw
> Graphics.HGL.Units Graphics.HGL.Key Graphics.HGL.Run
> Graphics.HGL.Draw.Brush Graphics.HGL.Draw.Font
> Graphics.HGL.Draw.Monad Graphics.HGL.Draw.Pen
> Graphics.HGL.Draw.Picture Graphics.HGL.Draw.Region
> Graphics.HGL.Draw.Text Graphics.HGL.Utils
> Graphics.HGL.Window
> Graphics.HGL Graphics.SOE
> hidden-modules: Graphics.HGL.Internals.Event
> Graphics.HGL.Internals.Events Graphics.HGL.Internals.Draw
> Graphics.HGL.Internals.Types Graphics.HGL.Internals.Flag
> Graphics.HGL.Internals.Utilities
> Graphics.HGL.Win32.Bitmap
> Graphics.HGL.Win32.Draw Graphics.HGL.Win32.Types
> Graphics.HGL.Win32.WND
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSHGL
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0 Win32-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/HGL/HGL.haddock
> haddock-html: $topdir/html/libraries/HGL
> name: OpenGL
> version: 2.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Graphics.Rendering.OpenGL.GL.Antialiasing
> Graphics.Rendering.OpenGL.GL.BasicTypes
> Graphics.Rendering.OpenGL.GL.BeginEnd
> Graphics.Rendering.OpenGL.GL.Bitmaps
> Graphics.Rendering.OpenGL.GL.BufferObjects
> Graphics.Rendering.OpenGL.GL.Clipping
> Graphics.Rendering.OpenGL.GL.Colors
> Graphics.Rendering.OpenGL.GL.ColorSum
> Graphics.Rendering.OpenGL.GL.CoordTrans
> Graphics.Rendering.OpenGL.GL.DisplayLists
> Graphics.Rendering.OpenGL.GL.Evaluators
> Graphics.Rendering.OpenGL.GL.Feedback
> Graphics.Rendering.OpenGL.GL.FlushFinish
> Graphics.Rendering.OpenGL.GL.Fog
> Graphics.Rendering.OpenGL.GL.Framebuffer
> Graphics.Rendering.OpenGL.GL.Hints
> Graphics.Rendering.OpenGL.GL
> Graphics.Rendering.OpenGL.GL.LineSegments
> Graphics.Rendering.OpenGL.GL.PerFragment
> Graphics.Rendering.OpenGL.GL.PixelRectangles.ColorTable
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Convolution
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Histogram
> Graphics.Rendering.OpenGL.GL.PixelRectangles
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Minmax
> Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelMap
> Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelStorage
> Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelTransfer
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Rasterization
> Graphics.Rendering.OpenGL.GL.Points
> Graphics.Rendering.OpenGL.GL.Polygons
> Graphics.Rendering.OpenGL.GL.RasterPos
> Graphics.Rendering.OpenGL.GL.ReadCopyPixels
> Graphics.Rendering.OpenGL.GL.Rectangles
> Graphics.Rendering.OpenGL.GL.SavingState
> Graphics.Rendering.OpenGL.GL.Selection
> Graphics.Rendering.OpenGL.GL.StateVar
> Graphics.Rendering.OpenGL.GL.StringQueries
> Graphics.Rendering.OpenGL.GL.Texturing.Application
> Graphics.Rendering.OpenGL.GL.Texturing.Environments
> Graphics.Rendering.OpenGL.GL.Texturing
> Graphics.Rendering.OpenGL.GL.Texturing.Objects
> Graphics.Rendering.OpenGL.GL.Texturing.Parameters
> Graphics.Rendering.OpenGL.GL.Texturing.Queries
> Graphics.Rendering.OpenGL.GL.Texturing.Specification
> Graphics.Rendering.OpenGL.GLU.Errors
> Graphics.Rendering.OpenGL.GLU
> Graphics.Rendering.OpenGL.GLU.Initialization
> Graphics.Rendering.OpenGL.GLU.Matrix
> Graphics.Rendering.OpenGL.GLU.Mipmapping
> Graphics.Rendering.OpenGL.GLU.NURBS
> Graphics.Rendering.OpenGL.GLU.Quadrics
> Graphics.Rendering.OpenGL.GLU.Tessellation
> Graphics.Rendering.OpenGL.GL.VertexArrays
> Graphics.Rendering.OpenGL.GL.VertexSpec
> Graphics.Rendering.OpenGL
> hidden-modules: Graphics.Rendering.OpenGL.GL.BlendingFactor
> Graphics.Rendering.OpenGL.GL.BufferMode
> Graphics.Rendering.OpenGL.GL.Capability
> Graphics.Rendering.OpenGL.GL.ComparisonFunction
> Graphics.Rendering.OpenGL.GL.DataType
> Graphics.Rendering.OpenGL.GL.EdgeFlag
> Graphics.Rendering.OpenGL.GL.Exception
> Graphics.Rendering.OpenGL.GL.Extensions
> Graphics.Rendering.OpenGL.GL.Face
> Graphics.Rendering.OpenGL.GL.GLboolean
> Graphics.Rendering.OpenGL.GL.IOState
> Graphics.Rendering.OpenGL.GL.PeekPoke
> Graphics.Rendering.OpenGL.GL.PixelData
> Graphics.Rendering.OpenGL.GL.PixelFormat
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Reset
> Graphics.Rendering.OpenGL.GL.PixelRectangles.Sink
> Graphics.Rendering.OpenGL.GL.PointParameter
> Graphics.Rendering.OpenGL.GL.PolygonMode
> Graphics.Rendering.OpenGL.GL.PrimitiveMode
> Graphics.Rendering.OpenGL.GL.QueryUtils
> Graphics.Rendering.OpenGL.GL.RenderMode
> Graphics.Rendering.OpenGL.GL.Texturing.PixelInternalFormat
> Graphics.Rendering.OpenGL.GL.Texturing.TexParameter
> Graphics.Rendering.OpenGL.GL.Texturing.TextureTarget
> Graphics.Rendering.OpenGL.GL.Texturing.TextureUnit
> Graphics.Rendering.OpenGL.GLU.ErrorsInternal
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSOpenGL
> extra-libraries: HSOpenGL_cbits
> include-dirs: "c:/Program Files/Visual Haskell/include"
> includes: HsOpenGL.h
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options: -lglu32 -lopengl32
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/OpenGL/OpenGL.haddock
> haddock-html: $topdir/html/libraries/OpenGL
> name: stm
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Control.Concurrent.STM Control.Concurrent.STM.TVar
> Control.Concurrent.STM.TChan
> Control.Concurrent.STM.TMVar
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSstm
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/stm/stm.haddock
> haddock-html: $topdir/html/libraries/stm
> name: base
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Control.Arrow Control.Concurrent
> Control.Concurrent.Chan Control.Concurrent.MVar
> Control.Concurrent.QSem Control.Concurrent.QSemN
> Control.Concurrent.SampleVar Control.Exception
> Control.Monad
> Control.Monad.Fix Control.Monad.ST Control.Monad.ST.Lazy
> Control.Monad.ST.Strict Control.Parallel
> Control.Parallel.Strategies Data.Array Data.Array.Base
> Data.Array.Diff Data.Array.IArray Data.Array.IO
> Data.Array.IO.Internals Data.Array.MArray Data.Array.ST
> Data.Array.Storable Data.Array.Unboxed Data.Bits
> Data.Bool
> Data.Char Data.Complex Data.Dynamic Data.Either Data.Eq
> Data.FiniteMap Data.FunctorM Data.Generics
> Data.Generics.Aliases
> Data.Generics.Basics Data.Generics.Instances
> Data.Generics.Schemes
> Data.Generics.Text Data.Generics.Twins Data.Graph
> Data.HashTable
> Data.IORef Data.Int Data.IntMap Data.IntSet Data.Ix
> Data.List
> Data.Maybe Data.Map Data.Monoid Data.Ord
> Data.PackedString
> Data.Queue Data.Ratio Data.STRef Data.STRef.Lazy
> Data.STRef.Strict
> Data.Sequence Data.Set Data.Tree Data.Tuple
> Data.Typeable
> Data.Unique Data.Version Data.Word Debug.Trace Foreign
> Foreign.C
> Foreign.C.Error Foreign.C.String Foreign.C.Types
> Foreign.Concurrent
> Foreign.ForeignPtr Foreign.Marshal Foreign.Marshal.Alloc
> Foreign.Marshal.Array Foreign.Marshal.Error
> Foreign.Marshal.Pool
> Foreign.Marshal.Utils Foreign.Ptr Foreign.StablePtr
> Foreign.Storable GHC.ConsoleHandler GHC.Dotnet GHC.Exts
> GHC.ForeignPtr GHC.Handle GHC.IO GHC.Int GHC.PArr
> GHC.PrimopWrappers GHC.Unicode GHC.Word Numeric Prelude
> System.Cmd
> System.Console.GetOpt System.CPUTime System.Directory
> System.Directory.Internals System.Environment
> System.Exit System.IO
> System.IO.Error System.IO.Unsafe System.Info
> System.Locale
> System.Mem System.Mem.StableName System.Mem.Weak
> System.Posix.Internals System.Posix.Signals
> System.Posix.Types
> System.Process System.Process.Internals System.Random
> System.Time
> Text.Html Text.Html.BlockTable
> Text.ParserCombinators.ReadP
> Text.ParserCombinators.ReadPrec Text.PrettyPrint
> Text.PrettyPrint.HughesPJ Text.Printf Text.Read
> Text.Read.Lex
> Text.Regex Text.Regex.Posix Text.Show
> Text.Show.Functions GHC.Arr
> GHC.Base GHC.Conc GHC.Enum GHC.Err GHC.Exception
> GHC.Float
> GHC.IOBase GHC.List GHC.Num GHC.Pack GHC.Prim GHC.Ptr
> GHC.Read
> GHC.Real GHC.ST GHC.STRef GHC.Show GHC.Stable
> GHC.Storable
> GHC.TopHandler GHC.Weak
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/imports"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSbase1 HSbase2 HSbase3
> extra-libraries: HSbase_cbits wsock32 msvcrt kernel32 user32
> shell32
> include-dirs: "c:/Program Files/Visual Haskell/include"
> includes: HsBase.h
> depends: rts-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/base/base.haddock
> haddock-html: $topdir/html/libraries/base
> name: ghc
> version: 6.5
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: False
> exposed-modules: AsmCodeGen Bag BasicTypes BinIface Binary BitSet
> Bitmap BuildTyCl ByteCodeAsm ByteCodeFFI ByteCodeGen
> ByteCodeInstr
> ByteCodeItbls ByteCodeLink CLabel CSE CgBindery
> CgCallConv CgCase
> CgClosure CgCon CgExpr CgForeignCall CgHeapery
> CgInfoTbls
> CgLetNoEscape CgMonad CgParallel CgPrimOp CgProf
> CgStackery
> CgTailCall CgTicky CgUtils Check Class ClosureInfo
> CmdLineParser
> Cmm CmmLex CmmLint CmmParse CmmUtils CodeGen CodeOutput
> Constants
> Convert CoreFVs CoreLint CorePrep CoreSubst CoreSyn
> CoreTidy
> CoreToStg CoreUnfold CoreUtils CostCentre CprAnalyse
> Ctype DataCon
> Demand Desugar Digraph DmdAnal DriverMkDepend
> DriverPhases
> DriverPipeline DsArrows DsBinds DsCCall DsExpr DsForeign
> DsGRHSs
> DsListComp DsMeta DsMonad DsUtils DynFlags ErrUtils
> ExternalCore
> FastMutInt FastString FastTypes FieldLabel Finder
> FiniteMap
> FlattenInfo FlattenMonad Flattening FloatIn FloatOut
> ForeignCall
> FunDeps GHC Generics GetImports HsBinds HsDecls HsExpr
> HsImpExp
> HsLit HsPat HsSyn HsTypes HsUtils HscMain HscStats
> HscTypes IOEnv
> Id IdInfo IfaceEnv IfaceSyn IfaceType IlxGen Inst
> InstEnv
> InteractiveUI Java JavaGen Kind Lexer LexCore
> LiberateCase Linker
> ListSetOps Literal LoadIface MachCodeGen MachInstrs
> MachOp MachRegs
> Match MatchCon MatchLit Maybes MkExternalCore MkId
> MkIface Module
> NCGMonad NDPCoreUtils Name NameEnv NameSet NewDemand
> ObjLink
> OccName OccurAnal OrdList Outputable PArrAnal
> PackageConfig
> Packages Panic Parser ParserCoreUtils ParsePkgConf
> PositionIndependentCode PprC PprCmm PprCore
> PprExternalCore PprMach
> PprTyThing PrelInfo PrelNames PrelRules Pretty
> PrettyTest PrimOp
> PrimPacked PrintJava RdrHsSyn RdrName RegAllocInfo
> RegisterAlloc
> RnBinds RnEnv RnExpr RnHsSyn RnNames RnSource RnTypes
> Rules SAT
> SATMonad SCCfinal SMRep SRT SaAbsInt SaLib SetLevels
> SimplCore
> SimplEnv SimplMonad SimplStg SimplUtils Simplify
> SpecConstr
> Specialise SrcLoc StaticFlags StgLint StgStats StgSyn
> StrictAnal
> StringBuffer SysTools TcArrows TcBinds TcClassDcl
> TcDefaults
> TcDeriv TcEnv TcExpr TcForeign TcGenDeriv TcHsSyn
> TcHsType TcIface
> TcInstDcls TcMType TcMatches TcPat TcRnDriver TcRnMonad
> TcRnTypes
> TcRules TcSimplify TcSplice TcTyClsDecls TcTyDecls
> TcType TcUnify
> TidyPgm TyCon Type TypeRep TysPrim TysWiredIn
> UnicodeUtil Unify
> UniqFM UniqSet UniqSupply Unique Util Var VarEnv VarSet
> WorkWrap
> WwLib
> hidden-modules:
> import-dirs: "c:/Program Files/Visual Haskell/hslibs-imports/ghc"
> library-dirs: "c:/Program Files/Visual Haskell"
> hs-libraries: HSghc
> extra-libraries:
> include-dirs:
> includes:
> depends: template-haskell-1.0 Cabal-1.0 base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces: $topdir/html/libraries/ghc/ghc.haddock
> haddock-html: $topdir/html/libraries/ghc
> name: com
> version: 1.0
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: False
> exposed-modules: Com ComPrim ComDll ComServ ComException Automation
> Threads HDirect WideString StdDispatch Pointer AutoPrim
> PointerPrim
> hidden-modules:
> import-dirs: C:/ghc/ghc-6.5/hslibs-imports/com
> library-dirs: C:/ghc/ghc-6.5
> hs-libraries: HScom
> extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: hdirect
> version: 0.21
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: False
> exposed-modules:
> hidden-modules:
> import-dirs:
> library-dirs:
> hs-libraries:
> extra-libraries:
> include-dirs:
> includes:
> depends:
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: com
> version: 0.21
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: False
> exposed-modules:
> hidden-modules:
> import-dirs:
> library-dirs:
> hs-libraries:
> extra-libraries:
> include-dirs:
> includes:
> depends:
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: comlib
> version: 0.1
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: False
> exposed-modules: Automation Com ComDll ComException ComPrim ComServ
> HDirect Pointer Threads TypeLib WideString StdDispatch
> hidden-modules: AutoPrim ClassFactory Connection ConnectionPoint
> EnumInterface ExeServer PointerPrim SafeArray StdTypes
> import-dirs: "C:\\Program Files\\Haskell\\comlib-0.1\\ghc-6.5"
> library-dirs: "C:\\Program Files\\Haskell\\comlib-0.1\\ghc-6.5"
> hs-libraries: HScomlib-0.1
> extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: comlib
> version: 0.2
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Automation Com ComDll ComException ComPrim ComServ
> HDirect Pointer Threads TypeLib WideString StdDispatch
> hidden-modules: AutoPrim ClassFactory Connection ConnectionPoint
> EnumInterface ExeServer PointerPrim SafeArray StdTypes
> import-dirs: "C:\\Program Files\\Haskell\\comlib-0.2\\ghc-6.5"
> library-dirs: "C:\\Program Files\\Haskell\\comlib-0.2\\ghc-6.5"
> hs-libraries: HScomlib-0.2
> extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: HaXml
> version: 1.13
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Text.ParserCombinators.HuttonMeijerWallace
> Text.XML.HaXml Text.XML.HaXml.Combinators
> Text.XML.HaXml.DtdToHaskell.Convert
> Text.XML.HaXml.DtdToHaskell.Instance
> Text.XML.HaXml.DtdToHaskell.TypeDef
> Text.XML.HaXml.Escape
> Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Html.Generate
> Text.XML.HaXml.Html.Parse Text.XML.HaXml.Html.Pretty
> Text.XML.HaXml.Lex Text.XML.HaXml.OneOfN
> Text.XML.HaXml.Parse
> Text.XML.HaXml.Pretty Text.XML.HaXml.Types
> Text.XML.HaXml.Validate
> Text.XML.HaXml.Verbatim Text.XML.HaXml.Wrappers
> Text.XML.HaXml.Xml2Haskell
> Text.XML.HaXml.Xtract.Combinators
> Text.XML.HaXml.Xtract.Lex Text.XML.HaXml.Xtract.Parse
> hidden-modules:
> import-dirs: "C:/Program Files/visual haskell//imports"
> library-dirs: "C:/Program Files/visual haskell/"
> hs-libraries: HSHaXml
> extra-libraries:
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: wxcore
> version: 0.9.4
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Graphics.UI.WXCore Graphics.UI.WXCore.WxcClasses
> Graphics.UI.WXCore.WxcClassInfo
> Graphics.UI.WXCore.WxcDefs
> Graphics.UI.WXCore.IntMap Graphics.UI.WXCore.Types
> Graphics.UI.WXCore.Defines Graphics.UI.WXCore.Draw
> Graphics.UI.WXCore.Events Graphics.UI.WXCore.Frame
> Graphics.UI.WXCore.Layout Graphics.UI.WXCore.Process
> Graphics.UI.WXCore.Print Graphics.UI.WXCore.Dialogs
> Graphics.UI.WXCore.Image Graphics.UI.WXCore.Controls
> Graphics.UI.WXCore.Db Graphics.UI.WXCore.OpenGL
> Graphics.UI.WXCore.WxcObject
> Graphics.UI.WXCore.WxcClassTypes
> Graphics.UI.WXCore.WxcTypes
> Graphics.UI.WXCore.WxcClassesAL
> Graphics.UI.WXCore.WxcClassesMZ
> hidden-modules:
> import-dirs: C:/Progra~1/Visual~1/imports
> library-dirs: C:/Progra~1/Visual~1
> hs-libraries: wxcore wxcore0 wxcore1 wxcore2
> extra-libraries: wxc-msw2.4.2-0.9.4
> include-dirs:
> includes:
> depends: base-1.0 haskell98-1.0
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> name: wx
> version: 0.9.4
> license: AllRightsReserved
> copyright:
> maintainer:
> stability:
> homepage:
> package-url:
> description:
> category:
> author:
> exposed: True
> exposed-modules: Graphics.UI.WX Graphics.UI.WX.Types
> Graphics.UI.WX.Attributes Graphics.UI.WX.Layout
> Graphics.UI.WX.Classes Graphics.UI.WX.Variable
> Graphics.UI.WX.Events Graphics.UI.WX.Window
> Graphics.UI.WX.Frame
> Graphics.UI.WX.Media Graphics.UI.WX.Menu
> Graphics.UI.WX.Timer
> Graphics.UI.WX.Draw Graphics.UI.WX.Controls
> Graphics.UI.WX.Dialogs
> hidden-modules:
> import-dirs: C:/Progra~1/Visual~1/imports
> library-dirs: C:/Progra~1/Visual~1
> hs-libraries: wx
> extra-libraries:
> include-dirs:
> includes:
> depends: wxcore-0.9.4
> hugs-options:
> cc-options:
> ld-options:
> framework-dirs:
> frameworks:
> haddock-interfaces:
> haddock-html:
> Hsc static flags: -static
> *** Deleting temp files:
> Deleting:
> <no location info>:
> ghc.exe: no input files
> Usage: For basic information, try the `--help' option.
>
> The exact error is:
> /c/Progra~1/Visual~1/bin/ghc +RTS -M120m -RTS -c
> tools/c2hs/gen/GBMonad.hs -o tools/c2hs/gen/GBMonad.o -O -DWIN32
> -itools/c2hs/base/admin:tools/c2hs/base/errors:tools/c2hs/base/general:tools/c2hs/base/graphs:tools/c2hs/base/state:tools/c2hs/base/syms:tools/c2hs/base/syntax:tools/c2hs/base/sysdep:tools/c2hs/c:tools/c2hs/chs:tools/c2hs/gen:tools/c2hs/state:tools/c2hs/toplevel
> tools/c2hs/gen/GBMonad.hs:83:0:
> Warning: Module `Data.FiniteMap' is deprecated:
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:83:23:
> Warning: Deprecated use of type constructor or class `FiniteMap'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:83:34:
> Warning: Deprecated use of `emptyFM'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:83:43:
> Warning: Deprecated use of `addToFM'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:83:52:
> Warning: Deprecated use of `lookupFM'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:83:62:
> Warning: Deprecated use of `plusFM'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:84:9:
> Warning: Deprecated use of `fmToList'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> tools/c2hs/gen/GBMonad.hs:84:19:
> Warning: Deprecated use of `listToFM'
> (imported from Data.FiniteMap):
> Please use Data.Map instead.
>
> <no location info>:
> ghc.exe: panic! (the `impossible' happened, GHC version 6.5):
> <<loop>>
>
> Please report it as a compiler bug to glasgow-haskell-bugs at haskell.org,
> or http://sourceforge.net/projects/ghc/.
>
>
> The contents of GBMonad.hs:
> -- C->Haskell Compiler: monad for the binding generator
> --
> -- Author : Manuel M T Chakravarty
> -- Derived: 18 February 2 (extracted from GenBind.hs)
> --
> -- Version $Revision: 1.1 $ from $Date: 2004/11/21 21:05:41 $
> --
> -- Copyright (c) [2002..2003] Manuel M T Chakravarty
> --
> -- This file is free software; you can redistribute it and/or modify
> -- it under the terms of the GNU General Public License as published by
> -- the Free Software Foundation; either version 2 of the License, or
> -- (at your option) any later version.
> --
> -- This file is distributed in the hope that it will be useful,
> -- but WITHOUT ANY WARRANTY; without even the implied warranty of
> -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> -- GNU General Public License for more details.
> --
> --- DESCRIPTION
> ---------------------------------------------------------------
> --
> -- This modules defines the monad and related utility routines for the
> code
> -- that implements the expansion of the binding hooks.
> --
> --- DOCU
> ----------------------------------------------------------------------
> --
> -- language: Haskell 98
> --
> -- Translation table handling for enumerators:
> -- -------------------------------------------
> --
> -- First a translation table lookup on the original identifier of the
> -- enumerator is done. If that doesn't match and the prefix can be
> removed
> -- from the identifier, a second lookup on the identifier without the
> prefix
> -- is performed. If this also doesn't match, the identifier without
> prefix
> -- (possible after underscoreToCase translation is returned). If there
> is a
> -- match, the translation (without any further stripping of prefix) is
> -- returned.
> --
> -- Pointer map
> -- -----------
> --
> -- Pointer hooks allow the use to customise the Haskell types to which C
> -- pointer types are mapped. The globally maintained map essentially
> maps C
> -- pointer types to Haskell pointer types. The representation of the
> Haskell
> -- types is defined by the `type' or `newtype' declaration emitted by
> the
> -- corresponding pointer hook. However, the map stores a flag that
> tells
> -- whether the C type is itself the pointer type in question or whether
> it is
> -- pointers to this C type that should be mapped as specified. The
> pointer
> -- map is dumped into and read from `.chi' files.
> --
> -- Haskell object map
> -- ------------------
> --
> -- Some features require information about Haskell objects defined by
> c2hs.
> -- Therefore, the Haskell object map maintains the necessary information
> -- about these Haskell objects. The Haskell object map is dumped into
> and
> -- read from `.chi' files.
> --
> --- TODO
> ----------------------------------------------------------------------
> --
> -- * Look up in translation tables is naive - this probably doesn't
> affect
> -- costs much, but at some point a little profiling might be
> beneficial.
> --
>
> module GBMonad (
> TransFun, transTabToTransFun,
>
> HsObject(..), GB, HsPtrRep, initialGBState, setContext, getLibrary,
> getPrefix, delayCode, getDelayedCode, ptrMapsTo, queryPtr, objIs,
> queryObj, queryClass, queryPointer, mergeMaps, dumpMaps
> ) where
>
> -- standard libraries
> import Char (toUpper, toLower, isSpace)
> import List (find)
> import Maybe (fromMaybe)
>
> -- Compiler Toolkit
> import Common (Position, Pos(posOf), nopos, builtinPos)
> import Errors (interr)
> import Idents (Ident, identToLexeme, onlyPosIdent)
> import Data.FiniteMap (FiniteMap, emptyFM, addToFM, lookupFM, plusFM,
> fmToList, listToFM)
>
> -- C -> Haskell
> import C (CT, readCT, transCT, raiseErrorCTExc)
>
> -- friends
> import CHS (CHSModule(..), CHSFrag(..), CHSHook(..), CHSTrans(..),
> CHSAccess(..), CHSAPath(..), CHSPtrType(..))
>
> -- translation tables
> -- ------------------
>
> -- takes an identifier to a lexeme including a potential mapping by a
> -- translation table
> --
> type TransFun = Ident -> String
>
> -- translation function for the `underscoreToCase' flag
> --
> underscoreToCase :: TransFun
> underscoreToCase ide = let lexeme = identToLexeme ide
> ps = filter (not . null) . parts $ lexeme
> in
> concat . map adjustCase $ ps
> where
> parts s = let (l, s') = break (== '_') s
> in
> l : case s' of
> [] -> []
> (_:s'') -> parts s''
>
> adjustCase (c:cs) = toUpper c : map toLower cs
>
> -- takes an identifier association table to a translation function
> --
> -- * if first argument is `True', identifiers that are not found in the
> -- translation table are subjected to `underscoreToCase'
> --
> -- * the details of handling the prefix are given in the DOCU section at
> the
> -- beginning of this file
> --
> transTabToTransFun :: String -> CHSTrans -> TransFun
> transTabToTransFun prefix (CHSTrans _2Case table) =
> \ide -> let
> lexeme = identToLexeme ide
> dft = if _2Case -- default uses maybe
> the...
> then underscoreToCase ide -- ..._2case
> transformed...
> else lexeme -- ...lexeme
> in
> case lookup ide table of -- lookup original
> ident
> Just ide' -> identToLexeme ide' -- original ident
> matches
> Nothing ->
> case eat prefix lexeme of
> Nothing -> dft -- no match & no
> prefix
> Just eatenLexeme ->
> let
> eatenIde = onlyPosIdent (posOf ide) eatenLexeme
> eatenDft = if _2Case
> then underscoreToCase eatenIde
> else eatenLexeme
> in
> case lookup eatenIde table of -- lookup without
> prefix
> Nothing -> eatenDft -- orig ide without
> prefix
> Just ide' -> identToLexeme ide' -- without prefix
> matched
> where
> -- try to eat prefix and return `Just partialLexeme' if successful
> --
> eat [] ('_':cs) = eat [] cs
> eat [] cs = Just cs
> eat (p:prefix) (c:cs) | toUpper p == toUpper c = eat prefix cs
> | otherwise = Nothing
> eat _ _ = Nothing
>
> -- the local monad
> -- ---------------
>
> -- map that for maps C pointer types to Haskell types for pointer that
> have
> -- been registered using a pointer hook
> --
> -- * the `Bool' indicates whether for a C type "ctype", we map "ctype"
> itself
> -- or "*ctype"
> --
> -- * the co-domain details how this pointer is represented in Haskell.
> -- See HsPtrRep.
> --
> type PointerMap = FiniteMap (Bool, Ident) HsPtrRep
>
> -- Define how pointers are represented in Haskell.
> --
> -- * The first element is true if the pointer points to a function.
> -- The second is the Haskell pointer type (plain
> -- Ptr, ForeignPtr or StablePtr). The third field is (Just wrap) if the
> -- pointer is wrapped in a newtype. Where "wrap"
> -- contains the name of the Haskell data type that was defined for this
> -- pointer. The forth element contains the type argument of the
> -- Ptr, ForeignPtr or StablePtr and is the same as "wrap"
> -- unless the user overrode it with the -> notation.
> type HsPtrRep = (Bool, CHSPtrType, Maybe String, String)
>
> -- map that maintains key information about some of the Haskell objects
> -- generated by c2hs
> --
> -- NB: using records here avoids to run into a bug with deriving `Read'
> in GHC
> -- 5.04.1
> --
> data HsObject = Pointer {
> ptrTypeHO :: CHSPtrType, -- kind of pointer
> isNewtypeHO :: Bool -- newtype?
> }
> | Class {
> superclassHO :: (Maybe Ident),-- superclass
> ptrHO :: Ident -- pointer
> }
> deriving (Show, Read)
> type HsObjectMap = FiniteMap Ident HsObject
>
> {- FIXME: What a mess...
> instance Show HsObject where
> show (Pointer ptrType isNewtype) =
> "Pointer " ++ show ptrType ++ show isNewtype
> show (Class osuper pointer ) =
> "Class " ++ show ptrType ++ show isNewtype
> -}
> -- super kludgy (depends on Show instance of Ident)
> instance Read Ident where
> readsPrec _ ('`':lexeme) = let (ideChars, rest) = span (/= '\'') lexeme
> in
> if null ideChars
> then []
> else [(onlyPosIdent nopos ideChars, tail
> rest)]
> readsPrec p (c:cs)
> | isSpace c = readsPrec
> p cs
> readsPrec _ _ = []
>
> -- the local state consists of
> --
> -- (1) the dynamic library specified by the context hook,
> -- (2) the prefix specified by the context hook,
> -- (3) the set of delayed code fragaments, ie, pieces of Haskell code
> that,
> -- finally, have to be appended at the CHS module together with the
> hook
> -- that created them (the latter allows avoid duplication of foreign
> -- export declarations), and
> -- (4) a map associating C pointer types with their Haskell
> representation
> --
> -- access to the attributes of the C structure tree is via the `CT' monad
> of
> -- which we use an instance here
> --
> data GBState = GBState {
> lib :: String, -- dynamic library
> prefix :: String, -- prefix
> frags :: [(CHSHook, CHSFrag)], -- delayed code (with
> hooks)
> ptrmap :: PointerMap, -- pointer
> representation
> objmap :: HsObjectMap -- generated Haskell
> objects
> }
>
> type GB a = CT GBState a
>
> initialGBState :: GBState
> initialGBState = GBState {
> lib = "",
> prefix = "",
> frags = [],
> ptrmap = emptyFM,
> objmap = emptyFM
> }
>
> -- set the dynamic library and library prefix
> --
> setContext :: (Maybe String) -> (Maybe String) -> GB ()
> setContext lib prefix =
> transCT $ \state -> (state {lib = fromMaybe "" lib,
> prefix = fromMaybe "" prefix},
> ())
>
> -- get the dynamic library
> --
> getLibrary :: GB String
> getLibrary = readCT lib
>
> -- get the prefix string
> --
> getPrefix :: GB String
> getPrefix = readCT prefix
>
> -- add code to the delayed fragments (the code is made to start at a new
> line)
> --
> -- * currently only code belonging to call hooks can be delayed
> --
> -- * if code for the same call hook (ie, same C function) is delayed
> -- repeatedly only the first entry is stored; it is checked that the
> hooks
> -- specify the same flags (ie, produce the same delayed code)
> --
> delayCode :: CHSHook -> String -> GB ()
> delayCode hook str =
> do
> frags <- readCT frags
> frags' <- delay hook frags
> transCT (\state -> (state {frags = frags'}, ()))
> where
> newEntry = (hook, (CHSVerb ("\n" ++ str) (posOf hook)))
> --
> delay hook@(CHSCall isFun isUns ide oalias _) frags =
> case find (\(hook', _) -> hook' == hook) frags of
> Just (CHSCall isFun' isUns' ide' _ _, _)
> | isFun == isFun'
> && isUns == isUns'
> && ide == ide' -> return frags
> | otherwise -> err (posOf ide) (posOf ide')
> Nothing -> return $ frags ++ [newEntry]
> delay _ _ =
> interr "GBMonad.delayCode: Illegal delay!"
> --
> err = incompatibleCallHooksErr
>
> -- get the complete list of delayed fragments
> --
> getDelayedCode :: GB [CHSFrag]
> getDelayedCode = readCT (map snd . frags)
>
> -- add an entry to the pointer map
> --
> ptrMapsTo :: (Bool, Ident) -> HsPtrRep -> GB ()
> (isStar, cName) `ptrMapsTo` hsRepr =
> transCT (\state -> (state {
> ptrmap = addToFM (ptrmap state) (isStar, cName)
> hsRepr
> }, ()))
>
> -- query the pointer map
> --
> queryPtr :: (Bool, Ident) -> GB (Maybe HsPtrRep)
> queryPtr pcName = do
> fm <- readCT ptrmap
> return $ lookupFM fm pcName
>
> -- add an entry to the Haskell object map
> --
> objIs :: Ident -> HsObject -> GB ()
> hsName `objIs` obj =
> transCT (\state -> (state {
> objmap = addToFM (objmap state) hsName obj
> }, ()))
>
> -- query the Haskell object map
> --
> queryObj :: Ident -> GB (Maybe HsObject)
> queryObj hsName = do
> fm <- readCT objmap
> return $ lookupFM fm hsName
>
> -- query the Haskell object map for a class
> --
> -- * raise an error if the class cannot be found
> --
> queryClass :: Ident -> GB HsObject
> queryClass hsName = do
> let pos = posOf hsName
> oobj <- queryObj hsName
> case oobj of
> Just obj@(Class _ _) -> return obj
> Just _ -> classExpectedErr hsName
> Nothing -> hsObjExpectedErr hsName
>
> -- query the Haskell object map for a pointer
> --
> -- * raise an error if the pointer cannot be found
> --
> queryPointer :: Ident -> GB HsObject
> queryPointer hsName = do
> let pos = posOf hsName
> oobj <- queryObj hsName
> case oobj of
> Just obj@(Pointer _ _) -> return obj
> Just _ -> pointerExpectedErr
> hsName
> Nothing -> hsObjExpectedErr
> hsName
>
> -- merge the pointer and Haskell object maps
> --
> -- * currently, the read map overrides any entires for shared keys in the
> map
> -- that is already in the monad; this is so that, if multiple import
> hooks
> -- add entries for shared keys, the textually latest prevails; any
> local
> -- entries are entered after all import hooks anyway
> --
> -- FIXME: This currently has several shortcomings:
> -- * It just dies in case of a corrupted .chi file
> -- * We should at least have the option to raise a warning if two
> -- entries collide in the `objmap'. But it would be better to
> -- implement qualified names.
> -- * Do we want position information associated with the read
> idents?
> --
> mergeMaps :: String -> GB ()
> mergeMaps str =
> transCT (\state -> (state {
> ptrmap = plusFM readPtrMap (ptrmap state),
> objmap = plusFM readObjMap (objmap state)
> }, ()))
> where
> (ptrAssoc, objAssoc) = read str
> readPtrMap = listToFM [((isStar, onlyPosIdent nopos ide),
> repr)
> | ((isStar, ide), repr) <- ptrAssoc]
> readObjMap = listToFM [(onlyPosIdent nopos ide, obj)
> | (ide, obj) <- objAssoc]
>
> -- convert the whole pointer and Haskell object maps into printable form
> --
> dumpMaps :: GB String
> dumpMaps = do
> ptrFM <- readCT ptrmap
> objFM <- readCT objmap
> let dumpable = ([((isStar, identToLexeme ide), repr)
> | ((isStar, ide), repr) <- fmToList ptrFM],
> [(identToLexeme ide, obj)
> | (ide, obj) <- fmToList objFM])
> return $ show dumpable
>
> -- error messages
> -- --------------
>
> incompatibleCallHooksErr :: Position -> Position -> GB a
> incompatibleCallHooksErr here there =
> raiseErrorCTExc here
> ["Incompatible call hooks!",
> "There is a another call hook for the same C function at " ++ show
> there,
> "The flags and C function name of the two hooks should be
> identical,",
> "but they are not."]
>
> classExpectedErr :: Ident -> GB a
> classExpectedErr ide =
> raiseErrorCTExc (posOf ide)
> ["Expected a class name!",
> "Expected `" ++ identToLexeme ide ++ "' to refer to a class
> introduced",
> "by a class hook."]
>
> pointerExpectedErr :: Ident -> GB a
> pointerExpectedErr ide =
> raiseErrorCTExc (posOf ide)
> ["Expected a pointer name!",
> "Expected `" ++ identToLexeme ide ++ "' to be a type name introduced
> by",
> "a pointer hook."]
>
> hsObjExpectedErr :: Ident -> GB a
> hsObjExpectedErr ide =
> raiseErrorCTExc (posOf ide)
> ["Unknown name!",
> "`" ++ identToLexeme ide ++ "' is unknown; it has *not* been defined
> by",
> "a previous hook."]
New description:
Trying to build gtk2hs-0.9.10 on win32 using ghc 6.5 (the ghc that ships
with visual haskell).
output of ghc -v5:
{{{
Glasgow Haskell Compiler, Version 6.5, for Haskell 98, compiled by GHC
version 6.4
Using package config file: c:\Program Files\Visual Haskell\package.conf
name: rts
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules:
hidden-modules:
import-dirs:
library-dirs: "c:/Program Files/Visual Haskell"
"c:/Program Files/Visual Haskell/gcc-lib"
hs-libraries: HSrts
extra-libraries: m gmp wsock32
include-dirs: "c:/Program Files/Visual Haskell/include"
"c:/Program Files/Visual Haskell/include/mingw"
includes: Stg.h
depends:
hugs-options:
cc-options:
ld-options: -u _GHCziBase_Izh_static_info -u
_GHCziBase_Czh_static_info -u _GHCziFloat_Fzh_static_info -u
_GHCziFloat_Dzh_static_info -u _GHCziPtr_Ptr_static_info -u
_GHCziWord_Wzh_static_info -u _GHCziInt_I8zh_static_info -u
_GHCziInt_I16zh_static_info -u _GHCziInt_I32zh_static_info -u
_GHCziInt_I64zh_static_info -u _GHCziWord_W8zh_static_info -u
_GHCziWord_W16zh_static_info -u _GHCziWord_W32zh_static_info
-u
_GHCziWord_W64zh_static_info -u
_GHCziStable_StablePtr_static_info
-u _GHCziBase_Izh_con_info -u _GHCziBase_Czh_con_info -u
_GHCziFloat_Fzh_con_info -u _GHCziFloat_Dzh_con_info -u
_GHCziPtr_Ptr_con_info -u _GHCziPtr_FunPtr_con_info -u
_GHCziStable_StablePtr_con_info -u _GHCziBase_False_closure -u
_GHCziBase_True_closure -u _GHCziPack_unpackCString_closure -u
_GHCziIOBase_stackOverflow_closure -u
_GHCziIOBase_heapOverflow_closure -u
_GHCziIOBase_NonTermination_closure -u
_GHCziIOBase_BlockedOnDeadMVar_closure -u
_GHCziIOBase_BlockedIndefinitely_closure -u
_GHCziIOBase_Deadlock_closure -u
_GHCziWeak_runFinalizzerBatch_closure
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: haskell98
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Array Bits CError CForeign CPUTime CString CTypes
Char Complex Directory ForeignPtr IO Int Ix List Locale
MarshalAlloc MarshalArray MarshalError MarshalUtils Maybe
Monad Ptr
Random Ratio StablePtr Storable System Time Word
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HShaskell98
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/haskell98/haskell98.haddock
haddock-html: $topdir/html/libraries/haskell98
name: template-haskell
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Language.Haskell.TH.PprLib Language.Haskell.TH.Lib
Language.Haskell.TH.Ppr Language.Haskell.TH.Syntax
Language.Haskell.TH
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HStemplate-haskell
extra-libraries:
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/template-haskell/template-
haskell.haddock
haddock-html: $topdir/html/libraries/template-haskell
name: Cabal
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Distribution.Compat.ReadP Distribution.Compiler
Distribution.Extension Distribution.GetOpt
Distribution.InstalledPackageInfo Distribution.License
Distribution.Make Distribution.Package
Distribution.PackageDescription Distribution.ParseUtils
Distribution.PreProcess Distribution.Setup
Distribution.Simple
Distribution.Version Distribution.PreProcess.Unlit
Distribution.Simple.Build Distribution.Simple.Configure
Distribution.Simple.GHCPackageConfig
Distribution.Simple.Install
Distribution.Simple.LocalBuildInfo
Distribution.Simple.Register
Distribution.Simple.SrcDist Distribution.Simple.Utils
Language.Haskell.Extension
hidden-modules: Distribution.Compat.Exception
Distribution.Compat.RawSystem Distribution.Compat.FilePath
Distribution.Compat.Directory
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSCabal
extra-libraries: shfolder
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/Cabal/Cabal.haddock
haddock-html: $topdir/html/libraries/Cabal
name: parsec
version: 2.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Text.ParserCombinators.Parsec.Error
Text.ParserCombinators.Parsec.Char
Text.ParserCombinators.Parsec.Combinator
Text.ParserCombinators.Parsec.Expr
Text.ParserCombinators.Parsec.Language
Text.ParserCombinators.Parsec.Perm
Text.ParserCombinators.Parsec.Pos
Text.ParserCombinators.Parsec.Prim
Text.ParserCombinators.Parsec.Token
Text.ParserCombinators.Parsec
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSparsec
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/parsec/parsec.haddock
haddock-html: $topdir/html/libraries/parsec
name: haskell-src
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Language.Haskell.Lexer Language.Haskell.Parser
Language.Haskell.ParseMonad Language.Haskell.ParseUtils
Language.Haskell.Pretty Language.Haskell.Syntax
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HShaskell-src
extra-libraries:
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/haskell-src/haskell-src.haddock
haddock-html: $topdir/html/libraries/haskell-src
name: network
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Network.BSD Network.CGI Network.Socket Network.URI
Network
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSnetwork
extra-libraries:
include-dirs: "c:/Program Files/Visual Haskell/include"
includes: HsNet.h
depends: base-1.0 parsec-2.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/network/network.haddock
haddock-html: $topdir/html/libraries/network
name: QuickCheck
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Debug.QuickCheck.Batch Debug.QuickCheck.Poly
Debug.QuickCheck.Utils Debug.QuickCheck
Test.QuickCheck.Batch
Test.QuickCheck.Poly Test.QuickCheck.Utils
Test.QuickCheck
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSQuickCheck
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/QuickCheck/QuickCheck.haddock
haddock-html: $topdir/html/libraries/QuickCheck
name: HUnit
version: 1.1
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Test.HUnit.Base Test.HUnit.Lang
Test.HUnit.Terminal Test.HUnit.Text Test.HUnit
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSHUnit
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/HUnit/HUnit.haddock
haddock-html: $topdir/html/libraries/HUnit
name: mtl
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Control.Monad.Error Control.Monad.Cont
Control.Monad.Identity Control.Monad.List
Control.Monad.RWS
Control.Monad.Reader Control.Monad.State
Control.Monad.Trans
Control.Monad.Writer
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSmtl
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/mtl/mtl.haddock
haddock-html: $topdir/html/libraries/mtl
name: fgl
version: 5.2
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Data.Graph.Inductive.Internal.FiniteMap
Data.Graph.Inductive.Internal.Heap
Data.Graph.Inductive.Internal.Queue
Data.Graph.Inductive.Internal.RootPath
Data.Graph.Inductive.Internal.Thread
Data.Graph.Inductive.Basic
Data.Graph.Inductive.Example Data.Graph.Inductive.Graph
Data.Graph.Inductive.Graphviz Data.Graph.Inductive.Monad
Data.Graph.Inductive.NodeMap Data.Graph.Inductive.Query
Data.Graph.Inductive.Tree
Data.Graph.Inductive.Monad.IOArray
Data.Graph.Inductive.Query.ArtPoint
Data.Graph.Inductive.Query.BCC
Data.Graph.Inductive.Query.BFS
Data.Graph.Inductive.Query.DFS
Data.Graph.Inductive.Query.Dominators
Data.Graph.Inductive.Query.GVD
Data.Graph.Inductive.Query.Indep
Data.Graph.Inductive.Query.MST
Data.Graph.Inductive.Query.MaxFlow
Data.Graph.Inductive.Query.MaxFlow2
Data.Graph.Inductive.Query.Monad
Data.Graph.Inductive.Query.SP
Data.Graph.Inductive.Query.TransClos Data.Graph.Inductive
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSfgl
extra-libraries:
include-dirs:
includes:
depends: base-1.0 mtl-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/fgl/fgl.haddock
haddock-html: $topdir/html/libraries/fgl
name: Win32
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Graphics.Win32.GDI.Bitmap Graphics.Win32.GDI.Brush
Graphics.Win32.GDI.Clip Graphics.Win32.GDI.Font
Graphics.Win32.GDI.Graphics2D Graphics.Win32.GDI.HDC
Graphics.Win32.GDI.Palette Graphics.Win32.GDI.Path
Graphics.Win32.GDI.Pen Graphics.Win32.GDI.Region
Graphics.Win32.GDI.Types Graphics.Win32.Control
Graphics.Win32.Dialogue Graphics.Win32.GDI
Graphics.Win32.Icon
Graphics.Win32.Key Graphics.Win32.Menu
Graphics.Win32.Message
Graphics.Win32.Misc Graphics.Win32.Resource
Graphics.Win32.Window
Graphics.Win32 System.Win32.DLL System.Win32.File
System.Win32.Info
System.Win32.Mem System.Win32.NLS System.Win32.Process
System.Win32.Registry System.Win32.Types System.Win32
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSWin32
extra-libraries: HSWin32_cbits user32 gdi32 winmm kernel32 advapi32
include-dirs: "c:/Program Files/Visual Haskell/include"
includes: HsWin32.h HsGDI.h WndProc.h
depends: base-1.0
hugs-options:
cc-options: -DUNICODE
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/Win32/Win32.haddock
haddock-html: $topdir/html/libraries/Win32
name: HGL
version: 3.1
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Graphics.HGL.Core Graphics.HGL.Draw
Graphics.HGL.Units Graphics.HGL.Key Graphics.HGL.Run
Graphics.HGL.Draw.Brush Graphics.HGL.Draw.Font
Graphics.HGL.Draw.Monad Graphics.HGL.Draw.Pen
Graphics.HGL.Draw.Picture Graphics.HGL.Draw.Region
Graphics.HGL.Draw.Text Graphics.HGL.Utils
Graphics.HGL.Window
Graphics.HGL Graphics.SOE
hidden-modules: Graphics.HGL.Internals.Event
Graphics.HGL.Internals.Events Graphics.HGL.Internals.Draw
Graphics.HGL.Internals.Types Graphics.HGL.Internals.Flag
Graphics.HGL.Internals.Utilities Graphics.HGL.Win32.Bitmap
Graphics.HGL.Win32.Draw Graphics.HGL.Win32.Types
Graphics.HGL.Win32.WND
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSHGL
extra-libraries:
include-dirs:
includes:
depends: base-1.0 Win32-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/HGL/HGL.haddock
haddock-html: $topdir/html/libraries/HGL
name: OpenGL
version: 2.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Graphics.Rendering.OpenGL.GL.Antialiasing
Graphics.Rendering.OpenGL.GL.BasicTypes
Graphics.Rendering.OpenGL.GL.BeginEnd
Graphics.Rendering.OpenGL.GL.Bitmaps
Graphics.Rendering.OpenGL.GL.BufferObjects
Graphics.Rendering.OpenGL.GL.Clipping
Graphics.Rendering.OpenGL.GL.Colors
Graphics.Rendering.OpenGL.GL.ColorSum
Graphics.Rendering.OpenGL.GL.CoordTrans
Graphics.Rendering.OpenGL.GL.DisplayLists
Graphics.Rendering.OpenGL.GL.Evaluators
Graphics.Rendering.OpenGL.GL.Feedback
Graphics.Rendering.OpenGL.GL.FlushFinish
Graphics.Rendering.OpenGL.GL.Fog
Graphics.Rendering.OpenGL.GL.Framebuffer
Graphics.Rendering.OpenGL.GL.Hints
Graphics.Rendering.OpenGL.GL
Graphics.Rendering.OpenGL.GL.LineSegments
Graphics.Rendering.OpenGL.GL.PerFragment
Graphics.Rendering.OpenGL.GL.PixelRectangles.ColorTable
Graphics.Rendering.OpenGL.GL.PixelRectangles.Convolution
Graphics.Rendering.OpenGL.GL.PixelRectangles.Histogram
Graphics.Rendering.OpenGL.GL.PixelRectangles
Graphics.Rendering.OpenGL.GL.PixelRectangles.Minmax
Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelMap
Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelStorage
Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelTransfer
Graphics.Rendering.OpenGL.GL.PixelRectangles.Rasterization
Graphics.Rendering.OpenGL.GL.Points
Graphics.Rendering.OpenGL.GL.Polygons
Graphics.Rendering.OpenGL.GL.RasterPos
Graphics.Rendering.OpenGL.GL.ReadCopyPixels
Graphics.Rendering.OpenGL.GL.Rectangles
Graphics.Rendering.OpenGL.GL.SavingState
Graphics.Rendering.OpenGL.GL.Selection
Graphics.Rendering.OpenGL.GL.StateVar
Graphics.Rendering.OpenGL.GL.StringQueries
Graphics.Rendering.OpenGL.GL.Texturing.Application
Graphics.Rendering.OpenGL.GL.Texturing.Environments
Graphics.Rendering.OpenGL.GL.Texturing
Graphics.Rendering.OpenGL.GL.Texturing.Objects
Graphics.Rendering.OpenGL.GL.Texturing.Parameters
Graphics.Rendering.OpenGL.GL.Texturing.Queries
Graphics.Rendering.OpenGL.GL.Texturing.Specification
Graphics.Rendering.OpenGL.GLU.Errors
Graphics.Rendering.OpenGL.GLU
Graphics.Rendering.OpenGL.GLU.Initialization
Graphics.Rendering.OpenGL.GLU.Matrix
Graphics.Rendering.OpenGL.GLU.Mipmapping
Graphics.Rendering.OpenGL.GLU.NURBS
Graphics.Rendering.OpenGL.GLU.Quadrics
Graphics.Rendering.OpenGL.GLU.Tessellation
Graphics.Rendering.OpenGL.GL.VertexArrays
Graphics.Rendering.OpenGL.GL.VertexSpec
Graphics.Rendering.OpenGL
hidden-modules: Graphics.Rendering.OpenGL.GL.BlendingFactor
Graphics.Rendering.OpenGL.GL.BufferMode
Graphics.Rendering.OpenGL.GL.Capability
Graphics.Rendering.OpenGL.GL.ComparisonFunction
Graphics.Rendering.OpenGL.GL.DataType
Graphics.Rendering.OpenGL.GL.EdgeFlag
Graphics.Rendering.OpenGL.GL.Exception
Graphics.Rendering.OpenGL.GL.Extensions
Graphics.Rendering.OpenGL.GL.Face
Graphics.Rendering.OpenGL.GL.GLboolean
Graphics.Rendering.OpenGL.GL.IOState
Graphics.Rendering.OpenGL.GL.PeekPoke
Graphics.Rendering.OpenGL.GL.PixelData
Graphics.Rendering.OpenGL.GL.PixelFormat
Graphics.Rendering.OpenGL.GL.PixelRectangles.Reset
Graphics.Rendering.OpenGL.GL.PixelRectangles.Sink
Graphics.Rendering.OpenGL.GL.PointParameter
Graphics.Rendering.OpenGL.GL.PolygonMode
Graphics.Rendering.OpenGL.GL.PrimitiveMode
Graphics.Rendering.OpenGL.GL.QueryUtils
Graphics.Rendering.OpenGL.GL.RenderMode
Graphics.Rendering.OpenGL.GL.Texturing.PixelInternalFormat
Graphics.Rendering.OpenGL.GL.Texturing.TexParameter
Graphics.Rendering.OpenGL.GL.Texturing.TextureTarget
Graphics.Rendering.OpenGL.GL.Texturing.TextureUnit
Graphics.Rendering.OpenGL.GLU.ErrorsInternal
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSOpenGL
extra-libraries: HSOpenGL_cbits
include-dirs: "c:/Program Files/Visual Haskell/include"
includes: HsOpenGL.h
depends: base-1.0
hugs-options:
cc-options:
ld-options: -lglu32 -lopengl32
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/OpenGL/OpenGL.haddock
haddock-html: $topdir/html/libraries/OpenGL
name: stm
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Control.Concurrent.STM Control.Concurrent.STM.TVar
Control.Concurrent.STM.TChan Control.Concurrent.STM.TMVar
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSstm
extra-libraries:
include-dirs:
includes:
depends: base-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/stm/stm.haddock
haddock-html: $topdir/html/libraries/stm
name: base
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Control.Arrow Control.Concurrent
Control.Concurrent.Chan Control.Concurrent.MVar
Control.Concurrent.QSem Control.Concurrent.QSemN
Control.Concurrent.SampleVar Control.Exception
Control.Monad
Control.Monad.Fix Control.Monad.ST Control.Monad.ST.Lazy
Control.Monad.ST.Strict Control.Parallel
Control.Parallel.Strategies Data.Array Data.Array.Base
Data.Array.Diff Data.Array.IArray Data.Array.IO
Data.Array.IO.Internals Data.Array.MArray Data.Array.ST
Data.Array.Storable Data.Array.Unboxed Data.Bits
Data.Bool
Data.Char Data.Complex Data.Dynamic Data.Either Data.Eq
Data.FiniteMap Data.FunctorM Data.Generics
Data.Generics.Aliases
Data.Generics.Basics Data.Generics.Instances
Data.Generics.Schemes
Data.Generics.Text Data.Generics.Twins Data.Graph
Data.HashTable
Data.IORef Data.Int Data.IntMap Data.IntSet Data.Ix
Data.List
Data.Maybe Data.Map Data.Monoid Data.Ord
Data.PackedString
Data.Queue Data.Ratio Data.STRef Data.STRef.Lazy
Data.STRef.Strict
Data.Sequence Data.Set Data.Tree Data.Tuple Data.Typeable
Data.Unique Data.Version Data.Word Debug.Trace Foreign
Foreign.C
Foreign.C.Error Foreign.C.String Foreign.C.Types
Foreign.Concurrent
Foreign.ForeignPtr Foreign.Marshal Foreign.Marshal.Alloc
Foreign.Marshal.Array Foreign.Marshal.Error
Foreign.Marshal.Pool
Foreign.Marshal.Utils Foreign.Ptr Foreign.StablePtr
Foreign.Storable GHC.ConsoleHandler GHC.Dotnet GHC.Exts
GHC.ForeignPtr GHC.Handle GHC.IO GHC.Int GHC.PArr
GHC.PrimopWrappers GHC.Unicode GHC.Word Numeric Prelude
System.Cmd
System.Console.GetOpt System.CPUTime System.Directory
System.Directory.Internals System.Environment System.Exit
System.IO
System.IO.Error System.IO.Unsafe System.Info
System.Locale
System.Mem System.Mem.StableName System.Mem.Weak
System.Posix.Internals System.Posix.Signals
System.Posix.Types
System.Process System.Process.Internals System.Random
System.Time
Text.Html Text.Html.BlockTable
Text.ParserCombinators.ReadP
Text.ParserCombinators.ReadPrec Text.PrettyPrint
Text.PrettyPrint.HughesPJ Text.Printf Text.Read
Text.Read.Lex
Text.Regex Text.Regex.Posix Text.Show Text.Show.Functions
GHC.Arr
GHC.Base GHC.Conc GHC.Enum GHC.Err GHC.Exception
GHC.Float
GHC.IOBase GHC.List GHC.Num GHC.Pack GHC.Prim GHC.Ptr
GHC.Read
GHC.Real GHC.ST GHC.STRef GHC.Show GHC.Stable
GHC.Storable
GHC.TopHandler GHC.Weak
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/imports"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSbase1 HSbase2 HSbase3
extra-libraries: HSbase_cbits wsock32 msvcrt kernel32 user32
shell32
include-dirs: "c:/Program Files/Visual Haskell/include"
includes: HsBase.h
depends: rts-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/base/base.haddock
haddock-html: $topdir/html/libraries/base
name: ghc
version: 6.5
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: False
exposed-modules: AsmCodeGen Bag BasicTypes BinIface Binary BitSet
Bitmap BuildTyCl ByteCodeAsm ByteCodeFFI ByteCodeGen
ByteCodeInstr
ByteCodeItbls ByteCodeLink CLabel CSE CgBindery
CgCallConv CgCase
CgClosure CgCon CgExpr CgForeignCall CgHeapery CgInfoTbls
CgLetNoEscape CgMonad CgParallel CgPrimOp CgProf
CgStackery
CgTailCall CgTicky CgUtils Check Class ClosureInfo
CmdLineParser
Cmm CmmLex CmmLint CmmParse CmmUtils CodeGen CodeOutput
Constants
Convert CoreFVs CoreLint CorePrep CoreSubst CoreSyn
CoreTidy
CoreToStg CoreUnfold CoreUtils CostCentre CprAnalyse
Ctype DataCon
Demand Desugar Digraph DmdAnal DriverMkDepend
DriverPhases
DriverPipeline DsArrows DsBinds DsCCall DsExpr DsForeign
DsGRHSs
DsListComp DsMeta DsMonad DsUtils DynFlags ErrUtils
ExternalCore
FastMutInt FastString FastTypes FieldLabel Finder
FiniteMap
FlattenInfo FlattenMonad Flattening FloatIn FloatOut
ForeignCall
FunDeps GHC Generics GetImports HsBinds HsDecls HsExpr
HsImpExp
HsLit HsPat HsSyn HsTypes HsUtils HscMain HscStats
HscTypes IOEnv
Id IdInfo IfaceEnv IfaceSyn IfaceType IlxGen Inst InstEnv
InteractiveUI Java JavaGen Kind Lexer LexCore
LiberateCase Linker
ListSetOps Literal LoadIface MachCodeGen MachInstrs
MachOp MachRegs
Match MatchCon MatchLit Maybes MkExternalCore MkId
MkIface Module
NCGMonad NDPCoreUtils Name NameEnv NameSet NewDemand
ObjLink
OccName OccurAnal OrdList Outputable PArrAnal
PackageConfig
Packages Panic Parser ParserCoreUtils ParsePkgConf
PositionIndependentCode PprC PprCmm PprCore
PprExternalCore PprMach
PprTyThing PrelInfo PrelNames PrelRules Pretty PrettyTest
PrimOp
PrimPacked PrintJava RdrHsSyn RdrName RegAllocInfo
RegisterAlloc
RnBinds RnEnv RnExpr RnHsSyn RnNames RnSource RnTypes
Rules SAT
SATMonad SCCfinal SMRep SRT SaAbsInt SaLib SetLevels
SimplCore
SimplEnv SimplMonad SimplStg SimplUtils Simplify
SpecConstr
Specialise SrcLoc StaticFlags StgLint StgStats StgSyn
StrictAnal
StringBuffer SysTools TcArrows TcBinds TcClassDcl
TcDefaults
TcDeriv TcEnv TcExpr TcForeign TcGenDeriv TcHsSyn
TcHsType TcIface
TcInstDcls TcMType TcMatches TcPat TcRnDriver TcRnMonad
TcRnTypes
TcRules TcSimplify TcSplice TcTyClsDecls TcTyDecls TcType
TcUnify
TidyPgm TyCon Type TypeRep TysPrim TysWiredIn UnicodeUtil
Unify
UniqFM UniqSet UniqSupply Unique Util Var VarEnv VarSet
WorkWrap
WwLib
hidden-modules:
import-dirs: "c:/Program Files/Visual Haskell/hslibs-imports/ghc"
library-dirs: "c:/Program Files/Visual Haskell"
hs-libraries: HSghc
extra-libraries:
include-dirs:
includes:
depends: template-haskell-1.0 Cabal-1.0 base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: $topdir/html/libraries/ghc/ghc.haddock
haddock-html: $topdir/html/libraries/ghc
name: com
version: 1.0
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: False
exposed-modules: Com ComPrim ComDll ComServ ComException Automation
Threads HDirect WideString StdDispatch Pointer AutoPrim
PointerPrim
hidden-modules:
import-dirs: C:/ghc/ghc-6.5/hslibs-imports/com
library-dirs: C:/ghc/ghc-6.5
hs-libraries: HScom
extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: hdirect
version: 0.21
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: False
exposed-modules:
hidden-modules:
import-dirs:
library-dirs:
hs-libraries:
extra-libraries:
include-dirs:
includes:
depends:
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: com
version: 0.21
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: False
exposed-modules:
hidden-modules:
import-dirs:
library-dirs:
hs-libraries:
extra-libraries:
include-dirs:
includes:
depends:
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: comlib
version: 0.1
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: False
exposed-modules: Automation Com ComDll ComException ComPrim ComServ
HDirect Pointer Threads TypeLib WideString StdDispatch
hidden-modules: AutoPrim ClassFactory Connection ConnectionPoint
EnumInterface ExeServer PointerPrim SafeArray StdTypes
import-dirs: "C:\\Program Files\\Haskell\\comlib-0.1\\ghc-6.5"
library-dirs: "C:\\Program Files\\Haskell\\comlib-0.1\\ghc-6.5"
hs-libraries: HScomlib-0.1
extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: comlib
version: 0.2
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Automation Com ComDll ComException ComPrim ComServ
HDirect Pointer Threads TypeLib WideString StdDispatch
hidden-modules: AutoPrim ClassFactory Connection ConnectionPoint
EnumInterface ExeServer PointerPrim SafeArray StdTypes
import-dirs: "C:\\Program Files\\Haskell\\comlib-0.2\\ghc-6.5"
library-dirs: "C:\\Program Files\\Haskell\\comlib-0.2\\ghc-6.5"
hs-libraries: HScomlib-0.2
extra-libraries: kernel32 user32 ole32 oleaut32 advapi32
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: HaXml
version: 1.13
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Text.ParserCombinators.HuttonMeijerWallace
Text.XML.HaXml Text.XML.HaXml.Combinators
Text.XML.HaXml.DtdToHaskell.Convert
Text.XML.HaXml.DtdToHaskell.Instance
Text.XML.HaXml.DtdToHaskell.TypeDef Text.XML.HaXml.Escape
Text.XML.HaXml.Haskell2Xml Text.XML.HaXml.Html.Generate
Text.XML.HaXml.Html.Parse Text.XML.HaXml.Html.Pretty
Text.XML.HaXml.Lex Text.XML.HaXml.OneOfN
Text.XML.HaXml.Parse
Text.XML.HaXml.Pretty Text.XML.HaXml.Types
Text.XML.HaXml.Validate
Text.XML.HaXml.Verbatim Text.XML.HaXml.Wrappers
Text.XML.HaXml.Xml2Haskell
Text.XML.HaXml.Xtract.Combinators
Text.XML.HaXml.Xtract.Lex Text.XML.HaXml.Xtract.Parse
hidden-modules:
import-dirs: "C:/Program Files/visual haskell//imports"
library-dirs: "C:/Program Files/visual haskell/"
hs-libraries: HSHaXml
extra-libraries:
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: wxcore
version: 0.9.4
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Graphics.UI.WXCore Graphics.UI.WXCore.WxcClasses
Graphics.UI.WXCore.WxcClassInfo
Graphics.UI.WXCore.WxcDefs
Graphics.UI.WXCore.IntMap Graphics.UI.WXCore.Types
Graphics.UI.WXCore.Defines Graphics.UI.WXCore.Draw
Graphics.UI.WXCore.Events Graphics.UI.WXCore.Frame
Graphics.UI.WXCore.Layout Graphics.UI.WXCore.Process
Graphics.UI.WXCore.Print Graphics.UI.WXCore.Dialogs
Graphics.UI.WXCore.Image Graphics.UI.WXCore.Controls
Graphics.UI.WXCore.Db Graphics.UI.WXCore.OpenGL
Graphics.UI.WXCore.WxcObject
Graphics.UI.WXCore.WxcClassTypes
Graphics.UI.WXCore.WxcTypes
Graphics.UI.WXCore.WxcClassesAL
Graphics.UI.WXCore.WxcClassesMZ
hidden-modules:
import-dirs: C:/Progra~1/Visual~1/imports
library-dirs: C:/Progra~1/Visual~1
hs-libraries: wxcore wxcore0 wxcore1 wxcore2
extra-libraries: wxc-msw2.4.2-0.9.4
include-dirs:
includes:
depends: base-1.0 haskell98-1.0
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
name: wx
version: 0.9.4
license: AllRightsReserved
copyright:
maintainer:
stability:
homepage:
package-url:
description:
category:
author:
exposed: True
exposed-modules: Graphics.UI.WX Graphics.UI.WX.Types
Graphics.UI.WX.Attributes Graphics.UI.WX.Layout
Graphics.UI.WX.Classes Graphics.UI.WX.Variable
Graphics.UI.WX.Events Graphics.UI.WX.Window
Graphics.UI.WX.Frame
Graphics.UI.WX.Media Graphics.UI.WX.Menu
Graphics.UI.WX.Timer
Graphics.UI.WX.Draw Graphics.UI.WX.Controls
Graphics.UI.WX.Dialogs
hidden-modules:
import-dirs: C:/Progra~1/Visual~1/imports
library-dirs: C:/Progra~1/Visual~1
hs-libraries: wx
extra-libraries:
include-dirs:
includes:
depends: wxcore-0.9.4
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces:
haddock-html:
Hsc static flags: -static
*** Deleting temp files:
Deleting:
<no location info>:
ghc.exe: no input files
Usage: For basic information, try the `--help' option.
}}}
The exact error is:
{{{
/c/Progra~1/Visual~1/bin/ghc +RTS -M120m -RTS -c tools/c2hs/gen/GBMonad.hs
-o tools/c2hs/gen/GBMonad.o -O -DWIN32
-itools/c2hs/base/admin:tools/c2hs/base/errors:tools/c2hs/base/general:tools/c2hs/base/graphs:tools/c2hs/base/state:tools/c2hs/base/syms:tools/c2hs/base/syntax:tools/c2hs/base/sysdep:tools/c2hs/c:tools/c2hs/chs:tools/c2hs/gen:tools/c2hs/state:tools/c2hs/toplevel
tools/c2hs/gen/GBMonad.hs:83:0:
Warning: Module `Data.FiniteMap' is deprecated:
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:83:23:
Warning: Deprecated use of type constructor or class `FiniteMap'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:83:34:
Warning: Deprecated use of `emptyFM'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:83:43:
Warning: Deprecated use of `addToFM'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:83:52:
Warning: Deprecated use of `lookupFM'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:83:62:
Warning: Deprecated use of `plusFM'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:84:9:
Warning: Deprecated use of `fmToList'
(imported from Data.FiniteMap):
Please use Data.Map instead.
tools/c2hs/gen/GBMonad.hs:84:19:
Warning: Deprecated use of `listToFM'
(imported from Data.FiniteMap):
Please use Data.Map instead.
<no location info>:
ghc.exe: panic! (the `impossible' happened, GHC version 6.5):
<<loop>>
Please report it as a compiler bug to glasgow-haskell-bugs at haskell.org,
or http://sourceforge.net/projects/ghc/.
}}}
The contents of GBMonad.hs:
{{{
-- C->Haskell Compiler: monad for the binding generator
--
-- Author : Manuel M T Chakravarty
-- Derived: 18 February 2 (extracted from GenBind.hs)
--
-- Version $Revision: 1.1 $ from $Date: 2004/11/21 21:05:41 $
--
-- Copyright (c) [2002..2003] Manuel M T Chakravarty
--
-- This file is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This file is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
--- DESCRIPTION
---------------------------------------------------------------
--
-- This modules defines the monad and related utility routines for the
code
-- that implements the expansion of the binding hooks.
--
--- DOCU
----------------------------------------------------------------------
--
-- language: Haskell 98
--
-- Translation table handling for enumerators:
-- -------------------------------------------
--
-- First a translation table lookup on the original identifier of the
-- enumerator is done. If that doesn't match and the prefix can be
removed
-- from the identifier, a second lookup on the identifier without the
prefix
-- is performed. If this also doesn't match, the identifier without
prefix
-- (possible after underscoreToCase translation is returned). If there
is a
-- match, the translation (without any further stripping of prefix) is
-- returned.
--
-- Pointer map
-- -----------
--
-- Pointer hooks allow the use to customise the Haskell types to which C
-- pointer types are mapped. The globally maintained map essentially
maps C
-- pointer types to Haskell pointer types. The representation of the
Haskell
-- types is defined by the `type' or `newtype' declaration emitted by the
-- corresponding pointer hook. However, the map stores a flag that tells
-- whether the C type is itself the pointer type in question or whether
it is
-- pointers to this C type that should be mapped as specified. The
pointer
-- map is dumped into and read from `.chi' files.
--
-- Haskell object map
-- ------------------
--
-- Some features require information about Haskell objects defined by
c2hs.
-- Therefore, the Haskell object map maintains the necessary information
-- about these Haskell objects. The Haskell object map is dumped into
and
-- read from `.chi' files.
--
--- TODO
----------------------------------------------------------------------
--
-- * Look up in translation tables is naive - this probably doesn't
affect
-- costs much, but at some point a little profiling might be
beneficial.
--
module GBMonad (
TransFun, transTabToTransFun,
HsObject(..), GB, HsPtrRep, initialGBState, setContext, getLibrary,
getPrefix, delayCode, getDelayedCode, ptrMapsTo, queryPtr, objIs,
queryObj, queryClass, queryPointer, mergeMaps, dumpMaps
) where
-- standard libraries
import Char (toUpper, toLower, isSpace)
import List (find)
import Maybe (fromMaybe)
-- Compiler Toolkit
import Common (Position, Pos(posOf), nopos, builtinPos)
import Errors (interr)
import Idents (Ident, identToLexeme, onlyPosIdent)
import Data.FiniteMap (FiniteMap, emptyFM, addToFM, lookupFM, plusFM,
fmToList, listToFM)
-- C -> Haskell
import C (CT, readCT, transCT, raiseErrorCTExc)
-- friends
import CHS (CHSModule(..), CHSFrag(..), CHSHook(..), CHSTrans(..),
CHSAccess(..), CHSAPath(..), CHSPtrType(..))
-- translation tables
-- ------------------
-- takes an identifier to a lexeme including a potential mapping by a
-- translation table
--
type TransFun = Ident -> String
-- translation function for the `underscoreToCase' flag
--
underscoreToCase :: TransFun
underscoreToCase ide = let lexeme = identToLexeme ide
ps = filter (not . null) . parts $ lexeme
in
concat . map adjustCase $ ps
where
parts s = let (l, s') = break (== '_') s
in
l : case s' of
[] -> []
(_:s'') -> parts s''
adjustCase (c:cs) = toUpper c : map toLower cs
-- takes an identifier association table to a translation function
--
-- * if first argument is `True', identifiers that are not found in the
-- translation table are subjected to `underscoreToCase'
--
-- * the details of handling the prefix are given in the DOCU section at
the
-- beginning of this file
--
transTabToTransFun :: String -> CHSTrans -> TransFun
transTabToTransFun prefix (CHSTrans _2Case table) =
\ide -> let
lexeme = identToLexeme ide
dft = if _2Case -- default uses maybe
the...
then underscoreToCase ide -- ..._2case
transformed...
else lexeme -- ...lexeme
in
case lookup ide table of -- lookup original
ident
Just ide' -> identToLexeme ide' -- original ident
matches
Nothing ->
case eat prefix lexeme of
Nothing -> dft -- no match & no
prefix
Just eatenLexeme ->
let
eatenIde = onlyPosIdent (posOf ide) eatenLexeme
eatenDft = if _2Case
then underscoreToCase eatenIde
else eatenLexeme
in
case lookup eatenIde table of -- lookup without
prefix
Nothing -> eatenDft -- orig ide without
prefix
Just ide' -> identToLexeme ide' -- without prefix
matched
where
-- try to eat prefix and return `Just partialLexeme' if successful
--
eat [] ('_':cs) = eat [] cs
eat [] cs = Just cs
eat (p:prefix) (c:cs) | toUpper p == toUpper c = eat prefix cs
| otherwise = Nothing
eat _ _ = Nothing
-- the local monad
-- ---------------
-- map that for maps C pointer types to Haskell types for pointer that
have
-- been registered using a pointer hook
--
-- * the `Bool' indicates whether for a C type "ctype", we map "ctype"
itself
-- or "*ctype"
--
-- * the co-domain details how this pointer is represented in Haskell.
-- See HsPtrRep.
--
type PointerMap = FiniteMap (Bool, Ident) HsPtrRep
-- Define how pointers are represented in Haskell.
--
-- * The first element is true if the pointer points to a function.
-- The second is the Haskell pointer type (plain
-- Ptr, ForeignPtr or StablePtr). The third field is (Just wrap) if the
-- pointer is wrapped in a newtype. Where "wrap"
-- contains the name of the Haskell data type that was defined for this
-- pointer. The forth element contains the type argument of the
-- Ptr, ForeignPtr or StablePtr and is the same as "wrap"
-- unless the user overrode it with the -> notation.
type HsPtrRep = (Bool, CHSPtrType, Maybe String, String)
-- map that maintains key information about some of the Haskell objects
-- generated by c2hs
--
-- NB: using records here avoids to run into a bug with deriving `Read' in
GHC
-- 5.04.1
--
data HsObject = Pointer {
ptrTypeHO :: CHSPtrType, -- kind of pointer
isNewtypeHO :: Bool -- newtype?
}
| Class {
superclassHO :: (Maybe Ident),-- superclass
ptrHO :: Ident -- pointer
}
deriving (Show, Read)
type HsObjectMap = FiniteMap Ident HsObject
{- FIXME: What a mess...
instance Show HsObject where
show (Pointer ptrType isNewtype) =
"Pointer " ++ show ptrType ++ show isNewtype
show (Class osuper pointer ) =
"Class " ++ show ptrType ++ show isNewtype
-}
-- super kludgy (depends on Show instance of Ident)
instance Read Ident where
readsPrec _ ('`':lexeme) = let (ideChars, rest) = span (/= '\'') lexeme
in
if null ideChars
then []
else [(onlyPosIdent nopos ideChars, tail
rest)]
readsPrec p (c:cs)
| isSpace c = readsPrec p
cs
readsPrec _ _ = []
-- the local state consists of
--
-- (1) the dynamic library specified by the context hook,
-- (2) the prefix specified by the context hook,
-- (3) the set of delayed code fragaments, ie, pieces of Haskell code
that,
-- finally, have to be appended at the CHS module together with the
hook
-- that created them (the latter allows avoid duplication of foreign
-- export declarations), and
-- (4) a map associating C pointer types with their Haskell representation
--
-- access to the attributes of the C structure tree is via the `CT' monad
of
-- which we use an instance here
--
data GBState = GBState {
lib :: String, -- dynamic library
prefix :: String, -- prefix
frags :: [(CHSHook, CHSFrag)], -- delayed code (with
hooks)
ptrmap :: PointerMap, -- pointer
representation
objmap :: HsObjectMap -- generated Haskell
objects
}
type GB a = CT GBState a
initialGBState :: GBState
initialGBState = GBState {
lib = "",
prefix = "",
frags = [],
ptrmap = emptyFM,
objmap = emptyFM
}
-- set the dynamic library and library prefix
--
setContext :: (Maybe String) -> (Maybe String) -> GB ()
setContext lib prefix =
transCT $ \state -> (state {lib = fromMaybe "" lib,
prefix = fromMaybe "" prefix},
())
-- get the dynamic library
--
getLibrary :: GB String
getLibrary = readCT lib
-- get the prefix string
--
getPrefix :: GB String
getPrefix = readCT prefix
-- add code to the delayed fragments (the code is made to start at a new
line)
--
-- * currently only code belonging to call hooks can be delayed
--
-- * if code for the same call hook (ie, same C function) is delayed
-- repeatedly only the first entry is stored; it is checked that the
hooks
-- specify the same flags (ie, produce the same delayed code)
--
delayCode :: CHSHook -> String -> GB ()
delayCode hook str =
do
frags <- readCT frags
frags' <- delay hook frags
transCT (\state -> (state {frags = frags'}, ()))
where
newEntry = (hook, (CHSVerb ("\n" ++ str) (posOf hook)))
--
delay hook@(CHSCall isFun isUns ide oalias _) frags =
case find (\(hook', _) -> hook' == hook) frags of
Just (CHSCall isFun' isUns' ide' _ _, _)
| isFun == isFun'
&& isUns == isUns'
&& ide == ide' -> return frags
| otherwise -> err (posOf ide) (posOf ide')
Nothing -> return $ frags ++ [newEntry]
delay _ _ =
interr "GBMonad.delayCode: Illegal delay!"
--
err = incompatibleCallHooksErr
-- get the complete list of delayed fragments
--
getDelayedCode :: GB [CHSFrag]
getDelayedCode = readCT (map snd . frags)
-- add an entry to the pointer map
--
ptrMapsTo :: (Bool, Ident) -> HsPtrRep -> GB ()
(isStar, cName) `ptrMapsTo` hsRepr =
transCT (\state -> (state {
ptrmap = addToFM (ptrmap state) (isStar, cName)
hsRepr
}, ()))
-- query the pointer map
--
queryPtr :: (Bool, Ident) -> GB (Maybe HsPtrRep)
queryPtr pcName = do
fm <- readCT ptrmap
return $ lookupFM fm pcName
-- add an entry to the Haskell object map
--
objIs :: Ident -> HsObject -> GB ()
hsName `objIs` obj =
transCT (\state -> (state {
objmap = addToFM (objmap state) hsName obj
}, ()))
-- query the Haskell object map
--
queryObj :: Ident -> GB (Maybe HsObject)
queryObj hsName = do
fm <- readCT objmap
return $ lookupFM fm hsName
-- query the Haskell object map for a class
--
-- * raise an error if the class cannot be found
--
queryClass :: Ident -> GB HsObject
queryClass hsName = do
let pos = posOf hsName
oobj <- queryObj hsName
case oobj of
Just obj@(Class _ _) -> return obj
Just _ -> classExpectedErr hsName
Nothing -> hsObjExpectedErr hsName
-- query the Haskell object map for a pointer
--
-- * raise an error if the pointer cannot be found
--
queryPointer :: Ident -> GB HsObject
queryPointer hsName = do
let pos = posOf hsName
oobj <- queryObj hsName
case oobj of
Just obj@(Pointer _ _) -> return obj
Just _ -> pointerExpectedErr
hsName
Nothing -> hsObjExpectedErr hsName
-- merge the pointer and Haskell object maps
--
-- * currently, the read map overrides any entires for shared keys in the
map
-- that is already in the monad; this is so that, if multiple import
hooks
-- add entries for shared keys, the textually latest prevails; any local
-- entries are entered after all import hooks anyway
--
-- FIXME: This currently has several shortcomings:
-- * It just dies in case of a corrupted .chi file
-- * We should at least have the option to raise a warning if two
-- entries collide in the `objmap'. But it would be better to
-- implement qualified names.
-- * Do we want position information associated with the read
idents?
--
mergeMaps :: String -> GB ()
mergeMaps str =
transCT (\state -> (state {
ptrmap = plusFM readPtrMap (ptrmap state),
objmap = plusFM readObjMap (objmap state)
}, ()))
where
(ptrAssoc, objAssoc) = read str
readPtrMap = listToFM [((isStar, onlyPosIdent nopos ide),
repr)
| ((isStar, ide), repr) <- ptrAssoc]
readObjMap = listToFM [(onlyPosIdent nopos ide, obj)
| (ide, obj) <- objAssoc]
-- convert the whole pointer and Haskell object maps into printable form
--
dumpMaps :: GB String
dumpMaps = do
ptrFM <- readCT ptrmap
objFM <- readCT objmap
let dumpable = ([((isStar, identToLexeme ide), repr)
| ((isStar, ide), repr) <- fmToList ptrFM],
[(identToLexeme ide, obj)
| (ide, obj) <- fmToList objFM])
return $ show dumpable
-- error messages
-- --------------
incompatibleCallHooksErr :: Position -> Position -> GB a
incompatibleCallHooksErr here there =
raiseErrorCTExc here
["Incompatible call hooks!",
"There is a another call hook for the same C function at " ++ show
there,
"The flags and C function name of the two hooks should be
identical,",
"but they are not."]
classExpectedErr :: Ident -> GB a
classExpectedErr ide =
raiseErrorCTExc (posOf ide)
["Expected a class name!",
"Expected `" ++ identToLexeme ide ++ "' to refer to a class
introduced",
"by a class hook."]
pointerExpectedErr :: Ident -> GB a
pointerExpectedErr ide =
raiseErrorCTExc (posOf ide)
["Expected a pointer name!",
"Expected `" ++ identToLexeme ide ++ "' to be a type name introduced
by",
"a pointer hook."]
hsObjExpectedErr :: Ident -> GB a
hsObjExpectedErr ide =
raiseErrorCTExc (posOf ide)
["Unknown name!",
"`" ++ identToLexeme ide ++ "' is unknown; it has *not* been defined
by",
"a previous hook."]
}}}
Comment (by simonmar):
fixed formatting
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/823>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list