riched20: Make ITextDocument stub reusable for ITextServices (try 4)

Caibin Chen tigersoldi at gmail.com
Fri Aug 2 10:29:59 CDT 2013


2013/8/2 Alexandre Julliard <julliard at winehq.org>:
> Caibin Chen <tigersoldi at gmail.com> writes:
>
>> diff --git a/dlls/riched20/tomimpl.h b/dlls/riched20/tomimpl.h
>> new file mode 100644
>> index 0000000..886c3a8
>> --- /dev/null
>> +++ b/dlls/riched20/tomimpl.h
>> @@ -0,0 +1,59 @@
>> +/*
>> + * RichEdit - TOM interfaces implementations
>> + *
>> + * Copyright 2013 by Caibin Chen
>> + *
>> + * This library is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * This library is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this library; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
>> + */
>> +
>> +#ifndef __RICHOLE_H
>> +#define __RICHOLE_H
>> +
>> +#include <tom.h>
>> +
>> +#include "editstr.h"
>> +
>> +typedef struct ITextDocumentImpl ITextDocumentImpl;
>> +typedef struct ITextSelectionImpl ITextSelectionImpl;
>> +
>> +/* ITextDocument */
>> +
>> +struct ITextDocumentImpl {
>> +  ITextDocument ITextDocument_iface;
>> +  IUnknown *outer_unk;
>> +  ME_TextEditor *editor;
>> +  ITextSelectionImpl *txtSel;
>> +};
>
> You shouldn't need a new header either. Particularly since
> implementation details shouldn't be global.
I expose these interfaces and the struct because they are used in both
txtdoc.c and richole.c

I understand that I can reach this goal by forward declare the struct
and interfaces in txtdoc.c. However I don't think it a good practice.

Besides, Jacek suggested in his review of try2 [1] that I should
expose the struct so that I don't need one more function to get the
COM interface from the structure. In this case the interface is the
first member and can be get by type casting, but I think this approach
will result in bad readability of the code.

Regards,

[1] http://www.winehq.org/pipermail/wine-devel/2013-July/100626.html



More information about the wine-devel mailing list