texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: * tp/Texinfo/XS/convert/call_html_perl_function.c


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/XS/convert/call_html_perl_function.c (call_types_conversion, call_types_open, call_commands_conversion) (call_commands_open, call_output_units_conversion), tp/Texinfo/XS/convert/convert_html.c (TYPE_INTERNAL_CONVERSION) (convert_table_term_type, command_conversion_external) (command_open, type_conversion_external, type_open) (convert_to_html_internal, output_unit_conversion) (convert_output_unit, convert_convert_output_unit_internal): pass TEXT to gather conversion results ins [...]
Date: Thu, 16 Nov 2023 14:12:54 -0500

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 358e05f80f * tp/Texinfo/XS/convert/call_html_perl_function.c 
(call_types_conversion, call_types_open, call_commands_conversion) 
(call_commands_open, call_output_units_conversion), 
tp/Texinfo/XS/convert/convert_html.c (TYPE_INTERNAL_CONVERSION) 
(convert_table_term_type, command_conversion_external) (command_open, 
type_conversion_external, type_open) (convert_to_html_internal, 
output_unit_conversion) (convert_output_unit, 
convert_convert_output_unit_internal): pass TEXT to gather c [...]
358e05f80f is described below

commit 358e05f80ff1effe9a2d5c601f438b7c91bfec85
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Thu Nov 16 20:12:22 2023 +0100

    * tp/Texinfo/XS/convert/call_html_perl_function.c
    (call_types_conversion, call_types_open, call_commands_conversion)
    (call_commands_open, call_output_units_conversion),
    tp/Texinfo/XS/convert/convert_html.c (TYPE_INTERNAL_CONVERSION)
    (convert_table_term_type, command_conversion_external)
    (command_open, type_conversion_external, type_open)
    (convert_to_html_internal, output_unit_conversion)
    (convert_output_unit, convert_convert_output_unit_internal):
    pass TEXT to gather conversion results instead of returning char *.
    Also more const for functions arguments.
    
    * tp/Texinfo/XS/convert/convert_html.c
    (convert_output_output_unit_internal): use text->end for res_len
    if possible.
---
 ChangeLog                                       |  17 +++
 tp/Texinfo/XS/convert/call_html_perl_function.c |  71 ++++------
 tp/Texinfo/XS/convert/call_html_perl_function.h |  29 ++--
 tp/Texinfo/XS/convert/convert_html.c            | 174 +++++++++---------------
 tp/Texinfo/XS/main/converter_types.h            |  11 +-
 5 files changed, 137 insertions(+), 165 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 84d4bcac9e..0e30048469 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,23 @@
        * configure.ac: Delete commented-out AC_CHECK_PROGS line for hevea.
        * contrib/nontests/Makefile.am: Remove as file is unused.
 
+2023-11-16  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/convert/call_html_perl_function.c
+       (call_types_conversion, call_types_open, call_commands_conversion)
+       (call_commands_open, call_output_units_conversion),
+       tp/Texinfo/XS/convert/convert_html.c (TYPE_INTERNAL_CONVERSION)
+       (convert_table_term_type, command_conversion_external)
+       (command_open, type_conversion_external, type_open)
+       (convert_to_html_internal, output_unit_conversion)
+       (convert_output_unit, convert_convert_output_unit_internal):
+       pass TEXT to gather conversion results instead of returning char *.
+       Also more const for functions arguments.
+
+       * tp/Texinfo/XS/convert/convert_html.c
+       (convert_output_output_unit_internal): use text->end for res_len
+       if possible.
+
 2023-11-16  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/HTML.pm (_convert_text, convert, output),
diff --git a/tp/Texinfo/XS/convert/call_html_perl_function.c 
b/tp/Texinfo/XS/convert/call_html_perl_function.c
index 0bedffd0fd..2ff735d593 100644
--- a/tp/Texinfo/XS/convert/call_html_perl_function.c
+++ b/tp/Texinfo/XS/convert/call_html_perl_function.c
@@ -30,6 +30,7 @@
 
 #undef context
 
+#include "text.h"
 #include "utils.h"
 /* for newSVpv_utf8 build_texinfo_tree */
 #include "build_perl_info.h"
@@ -747,13 +748,13 @@ call_formatting_function_format_translate_message 
(CONVERTER *self,
 
 
 
-char *
-call_types_conversion (CONVERTER *self, enum element_type type,
-                       FORMATTING_REFERENCE *formatting_reference,
-                       const ELEMENT *element, char *content)
+void
+call_types_conversion (CONVERTER *self, const enum element_type type,
+                       const FORMATTING_REFERENCE *formatting_reference,
+                       const ELEMENT *element, const char *content,
+                       TEXT *result)
 {
   int count;
-  char *result;
   char *result_ret;
   STRLEN len;
   SV *result_sv;
@@ -762,7 +763,7 @@ call_types_conversion (CONVERTER *self, enum element_type 
type,
   dTHX;
 
   if (!self->hv)
-    return 0;
+    return;
 
   if (self->tree_to_build)
     {
@@ -807,22 +808,19 @@ call_types_conversion (CONVERTER *self, enum element_type 
type,
      It could be possible to add a wrapper in perl that encode to UTF-8,
      but probably not worth it */
   result_ret = SvPVutf8 (result_sv, len);
-  result = strdup (result_ret);
+  text_append (result, result_ret);
 
   PUTBACK;
 
   FREETMPS;
   LEAVE;
-
-  return result;
 }
 
-char *
-call_types_open (CONVERTER *self, enum element_type type,
-                 const ELEMENT *element)
+void
+call_types_open (CONVERTER *self, const enum element_type type,
+                 const ELEMENT *element, TEXT *result)
 {
   int count;
-  char *result;
   char *result_ret;
   STRLEN len;
   SV *result_sv;
@@ -837,7 +835,7 @@ call_types_open (CONVERTER *self, enum element_type type,
     }
 
   if (!self->hv)
-    return 0;
+    return;
 
   formatting_reference_sv = self->types_open[type].sv_reference;
 
@@ -873,25 +871,22 @@ call_types_open (CONVERTER *self, enum element_type type,
      It could be possible to add a wrapper in perl that encode to UTF-8,
      but probably not worth it */
   result_ret = SvPVutf8 (result_sv, len);
-  result = strdup (result_ret);
+  text_append (result, result_ret);
 
   PUTBACK;
 
   FREETMPS;
   LEAVE;
-
-  return result;
 }
 
-char *
-call_commands_conversion (CONVERTER *self, enum command_id cmd,
-                          FORMATTING_REFERENCE *formatting_reference,
+void
+call_commands_conversion (CONVERTER *self, const enum command_id cmd,
+                          const FORMATTING_REFERENCE *formatting_reference,
                           const ELEMENT *element,
                           const HTML_ARGS_FORMATTED *args_formatted,
-                          const char *content)
+                          const char *content, TEXT *result)
 {
   int count;
-  char *result;
   char *result_ret;
   STRLEN len;
   SV *result_sv;
@@ -902,7 +897,7 @@ call_commands_conversion (CONVERTER *self, enum command_id 
cmd,
   dTHX;
 
   if (!self->hv)
-    return 0;
+    return;
 
   if (self->tree_to_build)
     {
@@ -953,22 +948,19 @@ call_commands_conversion (CONVERTER *self, enum 
command_id cmd,
      It could be possible to add a wrapper in perl that encode to UTF-8,
      but probably not worth it */
   result_ret = SvPVutf8 (result_sv, len);
-  result = strdup (result_ret);
+  text_append (result, result_ret);
 
   PUTBACK;
 
   FREETMPS;
   LEAVE;
-
-  return result;
 }
 
-char *
-call_commands_open (CONVERTER *self, enum command_id cmd,
-                    const ELEMENT *element)
+void
+call_commands_open (CONVERTER *self, const enum command_id cmd,
+                    const ELEMENT *element, TEXT *result)
 {
   int count;
-  char *result;
   char *result_ret;
   STRLEN len;
   SV *result_sv;
@@ -978,7 +970,7 @@ call_commands_open (CONVERTER *self, enum command_id cmd,
   dTHX;
 
   if (!self->hv)
-    return 0;
+    return;
 
   if (self->tree_to_build)
     {
@@ -1023,24 +1015,21 @@ call_commands_open (CONVERTER *self, enum command_id 
cmd,
      It could be possible to add a wrapper in perl that encode to UTF-8,
      but probably not worth it */
   result_ret = SvPVutf8 (result_sv, len);
-  result = strdup (result_ret);
+  text_append (result, result_ret);
 
   PUTBACK;
 
   FREETMPS;
   LEAVE;
-
-  return result;
 }
 
-char *
+void
 call_output_units_conversion (CONVERTER *self,
-                              enum output_unit_type unit_type,
+                              const enum output_unit_type unit_type,
                               const OUTPUT_UNIT *output_unit,
-                              const char *content)
+                              const char *content, TEXT *result)
 {
   int count;
-  char *result;
   char *result_ret;
   STRLEN len;
   SV *result_sv;
@@ -1049,7 +1038,7 @@ call_output_units_conversion (CONVERTER *self,
   dTHX;
 
   if (!self->hv)
-    return 0;
+    return;
 
   if (self->tree_to_build)
     {
@@ -1096,14 +1085,12 @@ call_output_units_conversion (CONVERTER *self,
      It could be possible to add a wrapper in perl that encode to UTF-8,
      but probably not worth it */
   result_ret = SvPVutf8 (result_sv, len);
-  result = strdup (result_ret);
+  text_append (result, result_ret);
 
   PUTBACK;
 
   FREETMPS;
   LEAVE;
-
-  return result;
 }
 
 
diff --git a/tp/Texinfo/XS/convert/call_html_perl_function.h 
b/tp/Texinfo/XS/convert/call_html_perl_function.h
index 9d47362faa..5d195a1104 100644
--- a/tp/Texinfo/XS/convert/call_html_perl_function.h
+++ b/tp/Texinfo/XS/convert/call_html_perl_function.h
@@ -47,21 +47,24 @@ char *call_formatting_function_format_begin_file (CONVERTER 
*self,
                                                  char *filename,
                                          const OUTPUT_UNIT *output_unit);
 
-char *call_types_conversion (CONVERTER *self, enum element_type type,
-                       FORMATTING_REFERENCE *formatting_reference,
-                       const ELEMENT *element, char *content);
-char *call_types_open (CONVERTER *self, enum element_type type,
-                       const ELEMENT *element);
-char *call_commands_conversion (CONVERTER *self, enum command_id cmd,
-                          FORMATTING_REFERENCE *formatting_reference,
+void call_types_conversion (CONVERTER *self, const enum element_type type,
+                       const FORMATTING_REFERENCE *formatting_reference,
+                       const ELEMENT *element, const char *content,
+                       TEXT *result);
+void call_types_open (CONVERTER *self, const enum element_type type,
+                       const ELEMENT *element, TEXT *result);
+void call_commands_conversion (CONVERTER *self, const enum command_id cmd,
+                          const FORMATTING_REFERENCE *formatting_reference,
                           const ELEMENT *element,
                           const HTML_ARGS_FORMATTED *args_formatted,
-                          const char *content);
-char *call_commands_open (CONVERTER *self, enum command_id cmd,
-                          const ELEMENT *element);
-char *call_output_units_conversion (CONVERTER *self,
-                                    enum output_unit_type unit_type,
-                        const OUTPUT_UNIT *output_unit, const char *content);
+                          const char *content, TEXT *result);
+void call_commands_open (CONVERTER *self, const enum command_id cmd,
+                          const ELEMENT *element, TEXT *result);
+void call_output_units_conversion (CONVERTER *self,
+                               const enum output_unit_type unit_type,
+                        const OUTPUT_UNIT *output_unit, const char *content,
+                        TEXT *result);
+
 char *call_formatting_function_format_translate_message (CONVERTER *self,
                                   const char *message, const char *lang,
                                   const char *message_context);
diff --git a/tp/Texinfo/XS/convert/convert_html.c 
b/tp/Texinfo/XS/convert/convert_html.c
index 52b30bb786..a76d55756d 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -59,7 +59,9 @@ typedef struct CMD_VARIETY {
 
 typedef struct TYPE_INTERNAL_CONVERSION {
     enum element_type type;
-    char * (* type_conversion) (CONVERTER *self, enum element_type type, const 
ELEMENT *element, char *content);
+    void (* type_conversion) (CONVERTER *self, const enum element_type type,
+                              const ELEMENT *element, const char *content,
+                              TEXT *result);
 } TYPE_INTERNAL_CONVERSION;
 
 char *html_global_unit_direction_names[] = {
@@ -2492,21 +2494,16 @@ protect_text_unicode_text (const char *text, TEXT 
*result)
     }
 }
 
-char *
-convert_table_term_type (CONVERTER *self, enum element_type type,
-                        const ELEMENT *element, char *content)
+void
+convert_table_term_type (CONVERTER *self, const enum element_type type,
+                        const ELEMENT *element, const char *content,
+                        TEXT *result)
 {
-  TEXT result;
-
-  text_init (&result);
-  text_append (&result, "");
-
   if (content)
     {
-      text_append (&result, "<dt>");
-      text_append (&result, content);
+      text_append (result, "<dt>");
+      text_append (result, content);
     }
-  return result.text;
 }
 
 /* associate type to the C function implementing the conversion */
@@ -2515,10 +2512,11 @@ static TYPE_INTERNAL_CONVERSION 
types_internal_conversion_table[] = {
   {0, 0},
 };
 
-static char *
-command_conversion_external (CONVERTER *self, enum command_id cmd,
-                    const ELEMENT *element, HTML_ARGS_FORMATTED 
*args_formatted,
-                    char *content)
+void
+command_conversion_external (CONVERTER *self, const enum command_id cmd,
+                    const ELEMENT *element,
+                    const HTML_ARGS_FORMATTED *args_formatted,
+                    const char *content, TEXT *result)
 {
   /* TODO call a C function if status is FRS_status_default_set
      maybe putting function references in an array */
@@ -2533,42 +2531,42 @@ command_conversion_external (CONVERTER *self, enum 
command_id cmd,
     = self->current_commands_conversion_function[cmd]->formatting_reference;
 
   if (formatting_reference->status > 0)
-    return call_commands_conversion (self, cmd, formatting_reference,
-                                     element, args_formatted, content);
-  return 0;
+    call_commands_conversion (self, cmd, formatting_reference,
+                              element, args_formatted, content,
+                              result);
 }
 
-static char *
-command_open (CONVERTER *self, enum command_id cmd, const ELEMENT *element)
+static void
+command_open (CONVERTER *self, const enum command_id cmd,
+              const ELEMENT *element, TEXT *result)
 {
   /* TODO call a C function if status is FRS_status_default_set
      maybe putting function references in an array */
   if (self->commands_open[cmd].status > 0)
-    return call_commands_open (self, cmd, element);
-  return 0;
+    call_commands_open (self, cmd, element, result);
 }
 
-static char *
-type_conversion_external (CONVERTER *self, enum element_type type,
-                          const ELEMENT *element, char *content)
+static void
+type_conversion_external (CONVERTER *self, const enum element_type type,
+                          const ELEMENT *element, const char *content,
+                          TEXT *result)
 {
   FORMATTING_REFERENCE *formatting_reference
     = self->current_types_conversion_function[type]->formatting_reference;
 
   if (formatting_reference->status > 0)
-    return call_types_conversion (self, type, formatting_reference,
-                                  element, content);
-  return 0;
+    call_types_conversion (self, type, formatting_reference,
+                           element, content, result);
 }
 
-static char *
-type_open (CONVERTER *self, enum element_type type, const ELEMENT *element)
+static void
+type_open (CONVERTER *self, enum element_type type, const ELEMENT *element,
+           TEXT *result)
 {
   /* TODO call a C function if status is FRS_status_default_set
      maybe putting function references in an array */
   if (self->types_open[type].status > 0)
-    return call_types_open (self, type, element);
-  return 0;
+    call_types_open (self, type, element, result);
 }
 
 static void
@@ -3606,14 +3604,8 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
         }
       else
         {
-          char *conv_text
-            = 
(*self->current_types_conversion_function[ET_text]->type_conversion)
-                           (self, ET_text, element, element->text.text);
-          if (conv_text)
-            {
-              text_append (&text_result, conv_text);
-              free (conv_text);
-            }
+          (*self->current_types_conversion_function[ET_text]->type_conversion)
+                    (self, ET_text, element, element->text.text, &text_result);
         }
 
       if (self->conf->DEBUG > 0)
@@ -3759,12 +3751,7 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
 
           if (self->commands_open[cmd].status)
             {
-              char *cmd_open_str = command_open (self, data_cmd, element);
-              if (cmd_open_str)
-                {
-                  ADD(cmd_open_str);
-                  free (cmd_open_str);
-                }
+              command_open (self, data_cmd, element, result);
             }
 
           text_init (&content_formatted);
@@ -4078,14 +4065,9 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
           /* args are formatted, now format the command itself */
           if (self->current_commands_conversion_function[cmd])
             {
-              char *conv_str
-        = 
(*self->current_commands_conversion_function[cmd]->command_conversion)
-                   (self, cmd, element, args_formatted, 
content_formatted.text);
-              if (conv_str)
-                {
-                  ADD(conv_str);
-                  free (conv_str);
-                }
+       (*self->current_commands_conversion_function[cmd]->command_conversion)
+                   (self, cmd, element, args_formatted,
+                    content_formatted.text, result);
             }
           else if (args_formatted)
             fprintf (stderr, "No command_conversion for %s\n",
@@ -4122,7 +4104,6 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
     }
   else if (element->type)
     {
-      char *open_result;
       enum element_type type = element->type;
       char *type_name = element_type_names[type];
       TEXT type_result;
@@ -4134,12 +4115,7 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
       text_init (&type_result);
       text_append (&type_result, "");
 
-      open_result = type_open (self, type, element);
-      if (open_result)
-        {
-          text_append (&type_result, open_result);
-          free (open_result);
-        }
+      type_open (self, type, element, &type_result);
 
       if (type == ET_paragraph)
         {
@@ -4203,14 +4179,8 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
 
       if (self->current_types_conversion_function[type])
         {
-          char *conversion_result
-            = (*self->current_types_conversion_function[type]->type_conversion)
-               (self, type, element, content_formatted.text);
-          if (conversion_result)
-            {
-              text_append (&type_result, conversion_result);
-              free (conversion_result);
-            }
+          (*self->current_types_conversion_function[type]->type_conversion)
+               (self, type, element, content_formatted.text, &type_result);
         }
       else if (content_formatted.end > 0)
         {
@@ -4283,14 +4253,8 @@ convert_to_html_internal (CONVERTER *self, const ELEMENT 
*element,
       if (self->current_types_conversion_function[0]
           && self->current_types_conversion_function[0]->type_conversion)
         {
-          char *conversion_result
-            = (*self->current_types_conversion_function[0]->type_conversion)
-                           (self, 0, element, "");
-          if (conversion_result)
-            {
-              ADD(conversion_result);
-              free (conversion_result);
-            }
+          (*self->current_types_conversion_function[0]->type_conversion)
+                           (self, 0, element, "", result);
           goto out;
         }
       else
@@ -4305,32 +4269,34 @@ convert_to_html_internal (CONVERTER *self, const 
ELEMENT *element,
 }
 #undef ADD
 
-static char *
-output_unit_conversion (CONVERTER *self, enum output_unit_type unit_type,
-                        const OUTPUT_UNIT *output_unit, const char *content)
+static void
+output_unit_conversion (CONVERTER *self, const enum output_unit_type unit_type,
+                        const OUTPUT_UNIT *output_unit, const char *content,
+                        TEXT *result)
 {
   /* TODO call a C function if status is FRS_status_default_set
      maybe putting function references in an array */
   if (self->output_units_conversion[unit_type].status > 0)
-    return call_output_units_conversion (self, unit_type, output_unit, 
content);
-  return 0;
+    call_output_units_conversion (self, unit_type, output_unit, content,
+                                  result);
 }
 
-char *
+void
 convert_output_unit (CONVERTER *self, const OUTPUT_UNIT *output_unit,
-                     char *explanation)
+                     char *explanation, TEXT *result)
 {
-  char *result = 0;
   TEXT content_formatted;
+  size_t input_result_end = result->end;
   enum output_unit_type unit_type = output_unit->unit_type;
 
   if (self->output_units_conversion[unit_type].status == FRS_status_ignored)
     {
       if (self->conf->DEBUG > 0)
         {
-          fprintf (stderr, "IGNORED OU %s\n", 
output_unit_type_names[unit_type]);
+          fprintf (stderr, "IGNORED OU %s\n",
+                           output_unit_type_names[unit_type]);
         }
-      return strdup ("");
+      return;
     }
 
   if (self->conf->DEBUG > 0)
@@ -4366,14 +4332,12 @@ convert_output_unit (CONVERTER *self, const OUTPUT_UNIT 
*output_unit,
 
   if (self->output_units_conversion[unit_type].status)
     {
-      result = output_unit_conversion (self, unit_type, output_unit,
-                                             content_formatted.text);
-      if (! result)
-        result = strdup ("");
+      output_unit_conversion (self, unit_type, output_unit,
+                              content_formatted.text, result);
     }
    else
     {
-      result = strdup (content_formatted.text);
+      text_append (result, content_formatted.text);
     }
 
   free (content_formatted.text);
@@ -4383,9 +4347,7 @@ convert_output_unit (CONVERTER *self, const OUTPUT_UNIT 
*output_unit,
 
   if (self->conf->DEBUG > 0)
     fprintf (stderr, "DOUNIT (%s) => `%s'\n", 
output_unit_type_names[unit_type],
-                     result);
-
-  return result;
+                     result->text + input_result_end);
 }
 
 /* wrapper to avoid code repetition and use similar functions as in perl */
@@ -4395,17 +4357,13 @@ convert_convert_output_unit_internal (CONVERTER *self, 
TEXT *result,
                                    char *debug_str, char *explanation_str)
 {
   char *explanation;
-  char *output_unit_text;
 
   if (self->conf->DEBUG > 0)
     fprintf (stderr, "\n%s %d\n", debug_str, unit_nr);
 
   xasprintf (&explanation, "%s %d", explanation_str, unit_nr);
-  output_unit_text = convert_output_unit (self, output_unit,
-                                          explanation);
-  text_append (result, output_unit_text);
+  convert_output_unit (self, output_unit, explanation, result);
   free (explanation);
-  free (output_unit_text);
 }
 
 char *
@@ -4589,12 +4547,16 @@ convert_output_output_unit_internal (CONVERTER *self,
           size_t write_len;
 
           if (conversion)
-            result = encode_with_iconv (conversion->iconv, text->text, 0);
+            {
+              result = encode_with_iconv (conversion->iconv, text->text, 0);
+              res_len = strlen (result);
+            }
           else
-            result = text->text;
-          res_len = strlen (result);
-          write_len = fwrite (result, sizeof (char), res_len,
-                                     file_fh);
+            {
+              result = text->text;
+              res_len = text->end;
+            }
+          write_len = fwrite (result, sizeof (char), res_len, file_fh);
           if (conversion)
             free (result);
           if (write_len != res_len)
diff --git a/tp/Texinfo/XS/main/converter_types.h 
b/tp/Texinfo/XS/main/converter_types.h
index 8c37763734..b9695c541d 100644
--- a/tp/Texinfo/XS/main/converter_types.h
+++ b/tp/Texinfo/XS/main/converter_types.h
@@ -462,7 +462,9 @@ typedef struct TYPE_CONVERSION_FUNCTION {
     FORMATTING_REFERENCE *formatting_reference;
     /* the function used for conversion, either a function that calls
        the perl function in formatting_reference, or another C function */
-    char * (* type_conversion) (CONVERTER *self, enum element_type type, const 
ELEMENT *element, char *content);
+    void (* type_conversion) (CONVERTER *self, const enum element_type type,
+                              const ELEMENT *element, const char *content,
+                              TEXT *text);
 } TYPE_CONVERSION_FUNCTION;
 
 typedef struct HTML_ARG_FORMATTED {
@@ -482,9 +484,10 @@ typedef struct COMMAND_CONVERSION_FUNCTION {
     FORMATTING_REFERENCE *formatting_reference;
     /* the function used for conversion, either a function that calls
        the perl function in formatting_reference, or another C function */
-    char * (* command_conversion) (CONVERTER *self, enum command_id cmd,
-                                   const ELEMENT *element, HTML_ARGS_FORMATTED 
*args_formatted,
-                                   char *content);
+    void (* command_conversion) (CONVERTER *self, const enum command_id cmd,
+                                   const ELEMENT *element,
+                                   const HTML_ARGS_FORMATTED *args_formatted,
+                                   const char *content, TEXT *result);
 } COMMAND_CONVERSION_FUNCTION;
 
 typedef struct TRANSLATED_SUI_ASSOCIATION {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]