hcom-0.0.0.4: Haskell COM support library
Copyright(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainersof@forkIO.com
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

System.Win32.Com.Server

Description

Support code for writing Haskell COM components (yay!)

The library code for Haskell COM components (aka. servers), support the wrapping up of a bunch of Haskell function values into the binary representation that the COM spec mandates.

The library has two classes of users:

  • HaskellDirect generated stubs for interfaces representing Haskell COM components.
  • on-the-fly generation of COM interface pointers by a Haskell application.

i.e., in short, we care about having a simple, programmer-useable, API :-)

Documentation

createComInstance :: String -> objState -> IO () -> [ComInterface objState] -> IID (IUnknown iid) -> IO (IUnknown iid) Source #

createInstance :: objState -> VTable (IUnknown iid) objState -> IO (IUnknown iid) Source #

createVTable :: [Ptr ()] -> IO (VTable iid objState) Source #

createComVTable :: [Ptr ()] -> IO (ComVTable iid objState) Source #

cloneIPointer :: IUnknown iid_old -> VTable (IUnknown iid_new) objState -> IO (IUnknown iid_new) Source #

cloneIPointer_prim :: Ptr (IUnknown a) -> VTable (IUnknown iid_new) objState -> IO (IUnknown iid_new) Source #

createDualInterface :: StablePtr objState -> ComVTable (IUnknown iid) objState -> Either LIBID String -> IID (IUnknown iid) -> IO (IUnknown iid) Source #

type VTable iid objState = VTBL Source #

type ComVTable iid objState = VTable iid (objState, IUnkState) Source #

type PrimIP iid = Ptr (Ptr ()) Source #

data ComInterface objState Source #

mkIface :: IID iid -> VTable iid objState -> ComInterface objState Source #

mkDispIface :: Maybe LIBID -> IID iid -> VTable iid objState -> ComInterface objState Source #

mkDualIface :: Maybe LIBID -> IID iid -> VTable iid objState -> ComInterface objState Source #

export_getTypeInfo :: (Ptr (IDispatch ()) -> Word32 -> LCID -> Ptr () -> IO HRESULT) -> IO (Ptr (Ptr (IDispatch ()) -> Word32 -> LCID -> Ptr () -> IO HRESULT)) Source #

export_invoke :: (Ptr (IDispatch ()) -> DISPID -> Ptr (IID a) -> LCID -> Word32 -> Ptr DISPPARAMS -> Ptr VARIANT -> Ptr EXCEPINFO -> Ptr Word32 -> IO HRESULT) -> IO (Ptr (Ptr (IDispatch ()) -> DISPID -> Ptr (IID a) -> LCID -> Word32 -> Ptr DISPPARAMS -> Ptr VARIANT -> Ptr EXCEPINFO -> Ptr Word32 -> IO HRESULT)) Source #