On Sat, Jun 27, 2026 at 01:15:12PM +0100, Gavin Smith wrote:
> On Sat, Jun 27, 2026 at 11:24:22AM +0200, Patrice Dumas wrote:
> > > * The CONVERTER object could have sub-objects for each output format
> > > (this would be close to what we have already). I'd prefer to avoid that
> > > if possible.
> >
> > See above, I think that it is not such a bad solution.
>
> I'm starting work on this approach.
>
> I put the HTML-specific fields in a separate object, with a field of this
> object type. Then wherever these fields are access on the CONVERTER type,
> I'm adding a separate pointer variable holding a pointer to the separate
> object:
>
> HTML_CONVERTER_STATE *self_html = &self->html_converter;
>
> I'm then updating the field accesses that would use the 'self' pointer
> to use 'self_html' instead:
Looks good to me.
> --- a/tta/C/convert/build_html_perl_state.c
> +++ b/tta/C/convert/build_html_perl_state.c
> @@ -191,6 +191,7 @@ build_html_translated_names (HV *converter_hv, CONVERTER
> *converter)
> void
> build_html_formatting_state (CONVERTER *converter)
> {
> + HTML_CONVERTER_STATE *self_html = &converter->html_converter;
> HV *converter_hv;
> unsigned long flags;
>
> @@ -201,7 +202,7 @@ build_html_formatting_state (CONVERTER *converter)
> if (!flags)
> return;
>
> - if (converter->external_references_number <= 0)
> + if (self_html->external_references_number <= 0)
> {
> converter->modified_state = 0;
> return;
>
> This should be a fairly straightforward change for me to make, although
> it will take me several hours to do due to the volume of the HTML conversion
> code (there are between 100 and 200 such fields like
> 'external_references_number').
Indeed. Do not hesitate to leave some of that work to me.
> Can you please avoid touching any of the HTML C conversion code for the next
> few days, until I say I have finished?
Can I pass a last commit before that that is ready or not? I can also
only pass the Perl part.
--
Pat