-- Automatically generated by HaskellDirect (ihc.exe), snapshot 150305 -- Created: 15:08 GMT Standard Time, Thursday 24 March, 2005 -- Command line: OCIdl.idl -s module OCIdlProxy ( LPSPECIFYPROPERTYPAGES , CAUUID(..) , writeCAUUID , readCAUUID , sizeofCAUUID , TagCAUUID , LPCAUUID0 , ISpecifyPropertyPages , ISpecifyPropertyPages_ , iidISpecifyPropertyPages , mkISpecifyPropertyPages_vtbl , IObjectWithSite , IObjectWithSite_ , iidIObjectWithSite , mkIObjectWithSite_vtbl ) where import Prelude (fromEnum, toEnum) import qualified Prelude import qualified Com (IUnknown, IID, mkIID, GUID, marshallGUID, sizeofGUID, readGUID, returnHR, coAlloc, unmarshallIID, writeIUnknown, unmarshallIUnknown) import qualified ComPrim(primCopyGUID) import qualified ComServ (ComVTable, createComVTable, getObjState) import qualified Data.Int (Int32) import qualified Data.Word (Word32) import qualified Foreign.Ptr (Ptr, castPtr) import qualified Foreign.ForeignPtr (castForeignPtr) import qualified HDirect (marshalllist, writeWord32, writePtr, addNCastPtr, readWord32, readPtr, unmarshallWord32, unmarshalllist, allocBytes, marshallref) import Control.Monad(foldM) -- -------------------------------------------------- -- -- interface ISpecifyPropertyPages -- -- -------------------------------------------------- data ISpecifyPropertyPages_ a = ISpecifyPropertyPages__ type ISpecifyPropertyPages a = Com.IUnknown (ISpecifyPropertyPages_ a) iidISpecifyPropertyPages :: Com.IID (ISpecifyPropertyPages ()) iidISpecifyPropertyPages = Com.mkIID "{B196B28B-BAB4-101A-B69C-00AA00341D07}" mkISpecifyPropertyPages_vtbl :: (objState -> Prelude.IO CAUUID) -> Prelude.IO (ComServ.ComVTable (ISpecifyPropertyPages ()) objState) mkISpecifyPropertyPages_vtbl getPages = do meth_arg0 <- export_getPages (prim_getPages getPages) ComServ.createComVTable [meth_arg0] foreign import stdcall "wrapper" export_getPages :: (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr CAUUID -> Prelude.IO Data.Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) type LPSPECIFYPROPERTYPAGES = ISpecifyPropertyPages () data CAUUID = TagCAUUID {pElems :: [Com.GUID]} writeCAUUID :: Foreign.Ptr.Ptr CAUUID -> CAUUID -> Prelude.IO () writeCAUUID ptr (TagCAUUID pElems) = let cElems = (Prelude.fromIntegral (Prelude.length pElems) :: Data.Word.Word32) marshallElems :: [Com.GUID] -> Prelude.IO (Foreign.Ptr.Ptr b) marshallElems ls = do arr <- Com.coAlloc (len Prelude.* Com.sizeofGUID) foldM writeElt (Foreign.Ptr.castPtr arr) ls Prelude.return (Foreign.Ptr.castPtr arr) where len = Prelude.fromIntegral (Prelude.length ls) writeElt addr v = do pv <- Com.marshallGUID v ComPrim.primCopyGUID (Foreign.ForeignPtr.castForeignPtr pv) (Foreign.Ptr.castPtr addr) Prelude.return (HDirect.addNCastPtr addr Com.sizeofGUID) in do pElems <- marshallElems pElems let pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 HDirect.writeWord32 pf1 cElems let pf2 = HDirect.addNCastPtr pf1 4 HDirect.writePtr pf2 pElems readCAUUID :: Prelude.Bool -> Foreign.Ptr.Ptr CAUUID -> Prelude.IO CAUUID readCAUUID finaliseMe__ ptr = let pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 in do cElems <- HDirect.readWord32 pf1 let pf2 = HDirect.addNCastPtr pf1 4 pElems <- HDirect.readPtr pf2 cElems <- HDirect.unmarshallWord32 cElems pElems <- HDirect.unmarshalllist Com.sizeofGUID 0 ((Prelude.fromIntegral cElems :: Data.Word.Word32)) (Com.readGUID finaliseMe__) pElems Prelude.return (TagCAUUID pElems) sizeofCAUUID :: Data.Word.Word32 sizeofCAUUID = 8 type TagCAUUID = CAUUID type LPCAUUID0 = TagCAUUID prim_getPages :: (objState -> Prelude.IO CAUUID) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Foreign.Ptr.Ptr CAUUID -> Prelude.IO Data.Int.Int32 prim_getPages getPages_meth iptr out_pPages = Com.returnHR (ComServ.getObjState iptr Prelude.>>= \ obj -> getPages_meth obj Prelude.>>= \ res__pPages -> writeCAUUID out_pPages res__pPages) -- -------------------------------------------------- -- -- interface IObjectWithSite -- -- -------------------------------------------------- data IObjectWithSite_ a = IObjectWithSite__ type IObjectWithSite a = Com.IUnknown (IObjectWithSite_ a) iidIObjectWithSite :: Com.IID (IObjectWithSite ()) iidIObjectWithSite = Com.mkIID "{FC4801A3-2BA9-11CF-A229-00AA003D7352}" mkIObjectWithSite_vtbl :: (Com.IUnknown () -> objState -> Prelude.IO ()) -> (Com.IID (Com.IUnknown a) -> objState -> Prelude.IO (Com.IUnknown a)) -> Prelude.IO (ComServ.ComVTable (IObjectWithSite ()) objState) mkIObjectWithSite_vtbl setSite getSite = do meth_arg0 <- export_setSite (prim_setSite setSite) meth_arg1 <- export_getSite (prim_getSite getSite) ComServ.createComVTable [ meth_arg0 , meth_arg1 ] foreign import stdcall "wrapper" export_setSite :: (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr b -> Prelude.IO Data.Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) foreign import stdcall "wrapper" export_getSite :: (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr (Com.IID b) -> Foreign.Ptr.Ptr (Foreign.Ptr.Ptr b) -> Prelude.IO Data.Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) prim_setSite :: (Com.IUnknown () -> objState -> Prelude.IO ()) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Prelude.IO Data.Int.Int32 prim_setSite setSite_meth iptr pUnkSite = Com.returnHR (Com.unmarshallIUnknown Prelude.True pUnkSite Prelude.>>= \ pUnkSite -> ComServ.getObjState iptr Prelude.>>= \ obj -> setSite_meth pUnkSite obj) prim_getSite :: (Com.IID (Com.IUnknown a) -> objState -> Prelude.IO (Com.IUnknown a)) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Foreign.Ptr.Ptr (Com.IID (Com.IUnknown a)) -> Foreign.Ptr.Ptr (Foreign.Ptr.Ptr (Com.IUnknown a)) -> Prelude.IO Data.Int.Int32 prim_getSite getSite_meth iptr riid out_ppvSite = Com.returnHR (Com.unmarshallIID Prelude.False riid Prelude.>>= \ riid -> ComServ.getObjState iptr Prelude.>>= \ obj -> getSite_meth riid obj Prelude.>>= \ res__ppvSite -> Com.writeIUnknown Prelude.False out_ppvSite res__ppvSite)