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:
--- 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').
Can you please avoid touching any of the HTML C conversion code for the next
few days, until I say I have finished?