packages feed

Hs2lib-0.5.5: WinDll/Utils/KnownTypes.hs

-----------------------------------------------------------------------------
-- |
-- Module      :  Windll
-- Copyright   :  (c) Tamar Christina 2009 - 2010
-- License     :  BSD3
-- 
-- Maintainer  :  tamar@zhox.com
-- Stability   :  experimental
-- Portability :  portable
--
-- This modules contains the list of known primitive types. This is one of the
-- the lists that needs expanding in order to add new native types.
--
-----------------------------------------------------------------------------
module WinDll.Utils.KnownTypes where

import WinDll.Structs.Types

-- | A list of the most frequently used types, It's much faster to do list lookup than query GHC, 
--   so we first look up in this list and then make a call to GHC
knownPrimitives :: TypeNames
knownPrimitives = [ "Int"  , "Integer", "Float"   , "Double"   , "String" , "Char"   ,"Word64"
                  , "Int8" , "Int16"  , "Int32"   , "Int64"    , "Word8"  , "Word16" ,"Word32"
                  , "Int#" , "Float#" , "Double#" , "CWString" , "Bool"   , "IO"     , "()"
                  , "CInt" 
                  ] ++ knownPointerTypes

-- | A list of known pointer types, if we find these we should not trace their dependencies.
--   because they matter not.
knownPointerTypes :: TypeNames
knownPointerTypes = ["StablePtr", "Ptr"]
                  
-- | The first lookup venue to GHC is looking up based on the type classes that we've already covered by the FFI class.
--   So if the type is an instance of the following classes it's safe to ignore them.
knownClasses :: TypeNames
knownClasses = ["Storable" , "IO" , "Num" , "FFIType" ]