]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/com/com.factor
windows: Move IStream to windows.com to fix bootstrap.
[factor.git] / basis / windows / com / com.factor
1 USING: alien alien.c-types alien.destructors windows.com.syntax
2 windows.ole32 windows.types continuations kernel alien.syntax
3 libc destructors accessors alien.data classes.struct windows.kernel32 ;
4 IN: windows.com
5
6 LIBRARY: ole32
7
8 COM-INTERFACE: IUnknown f {00000000-0000-0000-C000-000000000046}
9     HRESULT QueryInterface ( REFGUID iid, void** ppvObject )
10     ULONG AddRef ( )
11     ULONG Release ( ) ;
12
13 C-TYPE: IAdviseSink
14 C-TYPE: IEnumSTATDATA
15 C-TYPE: IStorage
16
17 COM-INTERFACE: IEnumFORMATETC IUnknown {00000103-0000-0000-C000-000000000046}
18     HRESULT Clone ( IEnumFORMATETC **ppenum )
19     HRESULT Next ( ULONG celt, FORMATETC *rgelt, ULONG* pceltFetched )
20     HRESULT Reset ( )
21     HRESULT Skip ( ULONG celt ) ;
22
23 COM-INTERFACE: IDataObject IUnknown {0000010E-0000-0000-C000-000000000046}
24     HRESULT GetData ( FORMATETC* pFormatetc, STGMEDIUM* pmedium )
25     HRESULT GetDataHere ( FORMATETC* pFormatetc, STGMEDIUM* pmedium )
26     HRESULT QueryGetData ( FORMATETC* pFormatetc )
27     HRESULT GetCanonicalFormatEtc ( FORMATETC* pFormatetcIn, FORMATETC* pFormatetcOut )
28     HRESULT SetData ( FORMATETC* pFormatetc, STGMEDIUM* pmedium, BOOL fRelease )
29     HRESULT EnumFormatEtc ( DWORD dwDirection, IEnumFORMATETC** ppenumFormatetc )
30     HRESULT DAdvise ( FORMATETC* pFormatetc, DWORD advf, IAdviseSink* pAdvSink, DWORD* pdwConnection )
31     HRESULT DUnadvise ( DWORD pdwConnection )
32     HRESULT EnumDAdvise ( IEnumSTATDATA** ppenumAdvise ) ;
33
34 COM-INTERFACE: IDropSource IUnknown {00000121-0000-0000-C000-000000000046}
35     HRESULT GiveFeedback ( DWORD dwEffect )
36     HRESULT QueryContinueDrag ( BOOL  fEscapePressed, DWORD grfKeyState ) ;
37
38 COM-INTERFACE: IDropTarget IUnknown {00000122-0000-0000-C000-000000000046}
39     HRESULT DragEnter ( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
40     HRESULT DragOver ( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
41     HRESULT DragLeave ( )
42     HRESULT Drop ( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) ;
43
44 TYPEDEF: LPWSTR LPCOLESTR
45 TYPEDEF: LPWSTR OLESTR
46 TYPEDEF: OLESTR** SNB
47 TYPEDEF: wchar_t* OLECHAR
48 C-TYPE: IEnumSTATSTG
49
50 STRUCT: STATSTG
51     { pwcsName LPOLESTR }
52     { type DWORD }
53     { cbSize ULARGE_INTEGER }
54     { mtime FILETIME }
55     { ctime FILETIME }
56     { atime FILETIME }
57     { grfMode DWORD }
58     { grfLocksSupported DWORD }
59     { clsid CLSID }
60     { grfStateBits DWORD }
61     { reserved DWORD } ;
62
63 C-TYPE: IStream
64 COM-INTERFACE: IStorage IUnknown {0000000B-0000-0000-C000-000000000046}
65     HRESULT Commit ( DWORD grfCommitFlags )
66     HRESULT CopyTo ( DWORD ciidExclude, IID *rgiidExclude, SNB snbExclude, IStorage *pstgDest )
67     HRESULT CreateStorage ( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStorage **ppstg )
68     HRESULT CreateStream ( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream **ppstm )
69     HRESULT DestroyElement ( OLECHAR *pwcsName )
70     HRESULT EnumElements ( DWORD reserved1, void *reserved2, DWORD reserved3, IEnumSTATSTG **ppenum )
71     HRESULT MoveElementTo ( OLECHAR *pwcsName, IStorage *pstgDest, OLECHAR *pwcsNewName, DWORD grfFlags )
72     HRESULT OpenStorage ( OLECHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstg )
73     HRESULT OpenStream ( OLECHAR *pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream **ppstm )
74     HRESULT RenameElement ( OLECHAR *pwcsOldName, OLECHAR *pwcsNewName )
75     HRESULT Revert ( )
76     HRESULT SetClass ( REFCLSID clsid )
77     HRESULT SetElementTimes ( OLECHAR  *pwcsName, FILETIME *pctime, FILETIME *patime, FILETIME *pmtime )
78     HRESULT SetStateBits ( DWORD grfStateBits, DWORD grfMask )
79     HRESULT Stat ( STATSTG *pstatstg, DWORD grfStatFlag ) ;
80
81 TYPEDEF: IDataObject* LPDATAOBJECT
82 TYPEDEF: IDropSource* LPDROPSOURCE
83
84 FUNCTION: HRESULT DoDragDrop (
85     LPDATAOBJECT pDataObj,
86     LPDROPSOURCE pDropSource,
87     DWORD        dwOKEffects,
88     LPDWORD     pdwEffect
89 )
90
91 COM-INTERFACE: ISequentialStream IUnknown {0C733A30-2A1C-11CE-ADE5-00AA0044773D}
92     HRESULT Read ( void* pv, ULONG cb, ULONG* pcbRead )
93     HRESULT Write ( void* pv, ULONG cb, ULONG* pcbWritten ) ;
94
95
96 CONSTANT: STGM_READ 0
97 CONSTANT: STGM_WRITE 1
98 CONSTANT: STGM_READWRITE 2
99
100 CONSTANT: STG_E_INVALIDFUNCTION 0x80030001
101
102 CONSTANT: STGTY_STORAGE   1
103 CONSTANT: STGTY_STREAM    2
104 CONSTANT: STGTY_LOCKBYTES 3
105 CONSTANT: STGTY_PROPERTY  4
106
107 CONSTANT: STREAM_SEEK_SET 0
108 CONSTANT: STREAM_SEEK_CUR 1
109 CONSTANT: STREAM_SEEK_END 2
110
111 CONSTANT: LOCK_WRITE     1
112 CONSTANT: LOCK_EXCLUSIVE 2
113 CONSTANT: LOCK_ONLYONCE  4
114
115 CONSTANT: GUID_NULL GUID: {00000000-0000-0000-0000-000000000000}
116
117 COM-INTERFACE: IStream ISequentialStream {0000000C-0000-0000-C000-000000000046}
118     HRESULT Seek ( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition )
119     HRESULT SetSize ( ULARGE_INTEGER* libNewSize )
120     HRESULT CopyTo ( IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten )
121     HRESULT Commit ( DWORD grfCommitFlags )
122     HRESULT Revert ( )
123     HRESULT LockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType )
124     HRESULT UnlockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType )
125     HRESULT Stat ( STATSTG* pstatstg, DWORD grfStatFlag )
126     HRESULT Clone ( IStream** ppstm ) ;
127
128 FUNCTION: HRESULT RegisterDragDrop ( HWND hWnd, IDropTarget* pDropTarget )
129 FUNCTION: HRESULT RevokeDragDrop ( HWND hWnd )
130 FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium )
131
132 : com-query-interface ( interface iid -- interface' )
133     { void* }
134     [ IUnknown::QueryInterface check-ole32-error ]
135     with-out-parameters ;
136
137 : com-add-ref ( interface -- interface )
138      [ IUnknown::AddRef drop ] keep ; inline
139
140 ERROR: null-com-release ;
141 : com-release ( interface -- )
142     [ IUnknown::Release drop ] [ null-com-release ] if* ; inline
143
144 : with-com-interface ( interface quot -- )
145     over [ com-release ] curry finally ; inline
146
147 DESTRUCTOR: com-release