1 module speech.windows.ObjIdl;
2 
3 import core.sys.windows.windows;
4 import core.sys.windows.com;
5 
6 /****************************************************************************
7 *  Structured Storage Interfaces
8 ****************************************************************************/
9 interface ISequentialStream : IUnknown
10 {
11 		/+ TODO
12 		HRESULT Read(
13 					 [annotation("__out_bcount_part(cb, *pcbRead)")]
14 					 void *pv,
15 					 [in] ULONG cb,
16 					 [annotation("__out_opt")] ULONG *pcbRead);
17 
18 		HRESULT RemoteRead(
19 						   [out, size_is(cb), length_is(*pcbRead)]
20 						   byte *pv,
21 						   [in] ULONG cb,
22 						   [out] ULONG *pcbRead);
23 
24 		HRESULT Write(
25 					  [annotation("__in_bcount(cb)")] void const *pv,
26 					  [in] ULONG cb,
27 					  [annotation("__out_opt")] ULONG *pcbWritten);
28 
29 		HRESULT RemoteWrite(
30 							[in, size_is(cb)] byte const *pv,
31 							[in] ULONG cb,
32 							[out] ULONG *pcbWritten);
33 		+/
34 }
35 
36 interface IStream : ISequentialStream
37 {
38     alias IStream LPSTREAM;
39 
40 	/+ TODO: ULARGE_INTEGER not found for GDC?
41     /* Storage stat buffer */
42 	struct STATSTG
43 	{
44 		LPOLESTR pwcsName;
45 		DWORD type;
46 		ULARGE_INTEGER cbSize;
47 		FILETIME mtime;
48 		FILETIME ctime;
49 		FILETIME atime;
50 		DWORD grfMode;
51 		DWORD grfLocksSupported;
52 		CLSID clsid;
53 		DWORD grfStateBits;
54 		DWORD reserved;
55 	}
56 	+/
57 
58 	/* Storage element types */
59 	enum
60 	{
61 		STGTY_STORAGE   = 1,
62 		STGTY_STREAM    = 2,
63 		STGTY_LOCKBYTES = 3,
64 		STGTY_PROPERTY  = 4
65 	}
66 	alias typeof(STGTY_STORAGE) STGTY;
67 
68 	enum
69 	{
70 		STREAM_SEEK_SET = 0,
71 		STREAM_SEEK_CUR = 1,
72 		STREAM_SEEK_END = 2
73 	}
74 	alias typeof(STREAM_SEEK_SET) STREAM_SEEK;
75 
76 	enum
77 	{
78 		LOCK_WRITE      = 1,
79 		LOCK_EXCLUSIVE  = 2,
80 		LOCK_ONLYONCE   = 4
81 	}
82 	alias typeof(LOCK_WRITE) LOCKTYPE;
83 
84 	/+ TODO
85 	HRESULT Seek(
86 						[in] LARGE_INTEGER dlibMove,
87 						[in] DWORD dwOrigin,
88 						[annotation("__out_opt")] ULARGE_INTEGER *plibNewPosition);
89 
90 	[call_as(Seek)]
91 		HRESULT RemoteSeek(
92 							[in] LARGE_INTEGER dlibMove,
93 							[in] DWORD dwOrigin,
94 							[out] ULARGE_INTEGER *plibNewPosition);
95 
96 	HRESULT SetSize(
97 					[in] ULARGE_INTEGER libNewSize);
98 
99 	[local]
100 		HRESULT CopyTo(
101 						[in, unique] IStream *pstm,
102 						[in] ULARGE_INTEGER cb,
103 						[annotation("__out_opt")] ULARGE_INTEGER *pcbRead,
104 						[annotation("__out_opt")] ULARGE_INTEGER *pcbWritten);
105 
106 	[call_as(CopyTo)]
107 		HRESULT RemoteCopyTo(
108 								[in, unique] IStream *pstm,
109 								[in] ULARGE_INTEGER cb,
110 								[out] ULARGE_INTEGER *pcbRead,
111 								[out] ULARGE_INTEGER *pcbWritten);
112 
113 	HRESULT Commit(
114 					[in] DWORD grfCommitFlags);
115 
116 	HRESULT Revert();
117 
118 	HRESULT LockRegion(
119 						[in] ULARGE_INTEGER libOffset,
120 						[in] ULARGE_INTEGER cb,
121 						[in] DWORD dwLockType);
122 
123 	HRESULT UnlockRegion(
124 							[in] ULARGE_INTEGER libOffset,
125 							[in] ULARGE_INTEGER cb,
126 							[in] DWORD dwLockType);
127 
128 	HRESULT Stat(
129 					[out] STATSTG *pstatstg,
130 					[in] DWORD grfStatFlag);
131 
132 	HRESULT Clone(
133 					[out] IStream **ppstm);
134 	+/
135 }