On Wed, 24 May 2017 14:40:35 -0700
Stefan Beller <sbel...@google.com> wrote:

> diff --git a/diff.h b/diff.h
> index 85948ed65a..fad1258556 100644
> --- a/diff.h
> +++ b/diff.h
> @@ -115,6 +115,42 @@ enum diff_submodule_format {
>       DIFF_SUBMODULE_INLINE_DIFF
>  };
>  
> +/*
> + * This struct is used when we need to buffer the output of the diff output.
> + *
> + * NEEDSWORK: Instead of storing a copy of the line, add an offset pointer
> + * into the pre/post image file. This pointer could be a union with the
> + * line pointer. By storing an offset into the file instead of the literal 
> line,
> + * we can decrease the memory footprint for the buffered output. At first we
> + * may want to only have indirection for the content lines, but we could also
> + * enhance the state for emitting prefabricated lines, e.g. the similarity
> + * score line or hunk/file headers would only need to store a number or path
> + * and then the output can be constructed later on depending on state.
> + */
> +struct diff_line {

Probably should be called diff_emission (or just emission), since these
may not be full lines.

Also, can this definition be in the .c file? Callers should use the
diff_emit_line() below, and not need to know how it is implemented
internally.

> +     const char *set;
> +     const char *reset;
> +     const char *line;
> +     int len;
> +     int sign;
> +     int add_line_prefix;
> +     enum {
> +             /*
> +              * Emits [lineprefix][set][sign][reset] and then calls
> +              * ws_check_emit which will output "line", marked up
> +              * according to ws_rule.
> +              */
> +             DIFF_LINE_WS,
> +
> +             /* Emits [lineprefix][set][sign] line [reset] */
> +             DIFF_LINE_ASIS,
> +
> +             /* Reloads the ws_rule; line contains the file name */
> +             DIFF_LINE_RELOAD_WS_RULE
> +     } state;
> +};
> +#define diff_line_INIT {NULL, NULL, NULL, 0, 0, 0}

Should be DIFF_LINE_INIT (capitalization), and {NULL} is sufficient, I
think.

Reply via email to