[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