2 * Copyright 2006 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 /* FIXME: import "filter.idl"; */
23 * widl doesn't like the declaration of PFNFILLTEXTBUFFER, so work around it...
24 * Not sure that function pointers are even legal in idl.
26 cpp_quote
("struct tagTEXT_SOURCE;")
27 cpp_quote
("typedef HRESULT (WINAPI *PFNFILLTEXTBUFFER)(struct tagTEXT_SOURCE *pTextSource);")
29 typedef void* PFNFILLTEXTBUFFER
;
32 typedef struct tagTEXT_SOURCE
34 PFNFILLTEXTBUFFER pfnFillTextBuffer
;
35 const WCHAR
*awcBuffer
;
40 typedef enum tagWORDREP_BREAK_TYPE
42 WORDREP_BREAK_EOW
= 0,
43 WORDREP_BREAK_EOS
= 1,
44 WORDREP_BREAK_EOP
= 2,
49 /*****************************************************************************
53 uuid(cc907054
-c058
-101a
-b554
-08002b33b0e6
),
57 interface IWordSink
: IUnknown
61 [size_is(cwcSrcLen
)][in] const WCHAR
*pwcInBuf
,
63 [in] ULONG cwcSrcPos
);
66 [size_is(cwcSrcLen
)][in] const WCHAR
*pwcInBuf
,
68 [in] ULONG cwcSrcPos
);
69 HRESULT StartAltPhrase
(void);
70 HRESULT EndAltPhrase
(void);
72 [in] WORDREP_BREAK_TYPE breakType
);
75 /*****************************************************************************
76 * IPhraseSink interface
79 uuid(cc906ff0
-c058
-101a
-b554
-08002b33b0e6
),
83 interface IPhraseSink
: IUnknown
85 HRESULT PutSmallPhrase
(
86 [size_is(cwcNoun
)][in] const WCHAR
*pwcNoun
,
88 [size_is(cwcModifier
)][in] const WCHAR
*pwcModifier
,
89 [in] ULONG cwcModifier
,
90 [in] ULONG ulAttachmentType
);
92 [size_is(cwcPhrase
)][in] const WCHAR
*pwcPhrase
,
93 [in] ULONG cwcPhrase
);
96 /*****************************************************************************
97 * IWordBreaker interface
100 uuid(d53552c8
-77e3
-101a
-b552
-08002b33b0e6
),
104 interface IWordBreaker
: IUnknown
108 [in] ULONG ulMaxTokenSize
,
109 [out] BOOL
*pfLicense
);
111 [in] TEXT_SOURCE
*pTextSource
,
112 [in] IWordSink
*pWordSink
,
113 [in] IPhraseSink
*pPhraseSink
);
114 HRESULT ComposePhrase
(
115 [size_is(cwcNoun
)][in] const WCHAR
*pwcNoun
,
117 [size_is(cwcModifier
)][in] const WCHAR
*pwcModifier
,
118 [in] ULONG cwcModifier
,
119 [in] ULONG ulAttachmentType
,
120 [size_is(*pcwcPhrase
)][out] WCHAR
*pwcPhrase
,
121 [out][in] ULONG
*pcwcPhrase
);
122 HRESULT GetLicenseToUse
(
123 [string][out] const WCHAR
**ppwcsLicense
);