Add automatic generation of headers

- The 'stripdecls.py' script replaces declarations in all headers by includes to
  generated headers.
  `ag '#\s*if(?!ndef NEOVIM_).*((?!#\s*endif).*\n)*#ifdef INCLUDE_GENERATED'`
  was used for this.
- Add and integrate gendeclarations.lua into the build system to generate the
  required includes.
- Add -Wno-unused-function
- Made a bunch of old-style definitions ANSI

This adds a requirement: all type and structure definitions must be present
before INCLUDE_GENERATED_DECLARATIONS-protected include.

Warning: mch_expandpath (path.h.generated.h) was moved manually. So far it is
the only exception.
This commit is contained in:
ZyX
2014-05-10 17:24:13 +04:00
committed by Thiago de Arruda
parent 880957ad4e
commit 70929f7e16
154 changed files with 2190 additions and 6184 deletions

View File

@@ -173,23 +173,79 @@ typedef struct {
int ff; /* seen form feed character */
} prt_pos_T;
static char_u *parse_list_options(char_u *option_str,
option_table_T *table,
int table_size);
struct prt_mediasize_S {
char *name;
float width; /* width and height in points for portrait */
float height;
};
static long_u darken_rgb(long_u rgb);
static long_u prt_get_term_color(int colorindex);
static void prt_set_fg(long_u fg);
static void prt_set_bg(long_u bg);
static void prt_set_font(int bold, int italic, int underline);
static void prt_line_number(prt_settings_T *psettings, int page_line,
linenr_T lnum);
static void prt_header(prt_settings_T *psettings, int pagenum,
linenr_T lnum);
static void prt_message(char_u *s);
static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line,
prt_pos_T *ppos);
static void prt_get_attr(int hl_id, prt_text_attr_T* pattr, int modec);
/* PS font names, must be in Roman, Bold, Italic, Bold-Italic order */
struct prt_ps_font_S {
int wx;
int uline_offset;
int uline_width;
int bbox_min_y;
int bbox_max_y;
char *(ps_fontname[4]);
};
/* Structures to map user named encoding and mapping to PS equivalents for
* building CID font name */
struct prt_ps_encoding_S {
char *encoding;
char *cmap_encoding;
int needs_charset;
};
struct prt_ps_charset_S {
char *charset;
char *cmap_charset;
int has_charset;
};
/* Collections of encodings and charsets for multi-byte printing */
struct prt_ps_mbfont_S {
int num_encodings;
struct prt_ps_encoding_S *encodings;
int num_charsets;
struct prt_ps_charset_S *charsets;
char *ascii_enc;
char *defcs;
};
struct prt_ps_resource_S {
char_u name[64];
char_u filename[MAXPATHL + 1];
int type;
char_u title[256];
char_u version[256];
};
struct prt_dsc_comment_S {
char *string;
int len;
int type;
};
struct prt_dsc_line_S {
int type;
char_u *string;
int len;
};
/* Static buffer to read initial comments in a resource file, some can have a
* couple of KB of comments! */
#define PRT_FILE_BUFFER_LEN (2048)
struct prt_resfile_buffer_S {
char_u buffer[PRT_FILE_BUFFER_LEN];
int len;
int line_start;
int line_end;
};
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "hardcopy.c.generated.h"
#endif
/*
* Parse 'printoptions' and set the flags in "printer_opts".
@@ -888,12 +944,6 @@ static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line, prt_pos_T
#define PRT_PS_DEFAULT_FONTSIZE (10)
#define PRT_PS_DEFAULT_BUFFER_SIZE (80)
struct prt_mediasize_S {
char *name;
float width; /* width and height in points for portrait */
float height;
};
#define PRT_MEDIASIZE_LEN (sizeof(prt_mediasize) / \
sizeof(struct prt_mediasize_S))
@@ -915,16 +965,6 @@ static struct prt_mediasize_S prt_mediasize[] =
{"tabloid", 792.0, 1224.0}
};
/* PS font names, must be in Roman, Bold, Italic, Bold-Italic order */
struct prt_ps_font_S {
int wx;
int uline_offset;
int uline_width;
int bbox_min_y;
int bbox_max_y;
char *(ps_fontname[4]);
};
#define PRT_PS_FONT_ROMAN (0)
#define PRT_PS_FONT_BOLD (1)
#define PRT_PS_FONT_OBLIQUE (2)
@@ -951,20 +991,6 @@ static struct prt_ps_font_S prt_ps_mb_font =
/* Pointer to current font set being used */
static struct prt_ps_font_S* prt_ps_font;
/* Structures to map user named encoding and mapping to PS equivalents for
* building CID font name */
struct prt_ps_encoding_S {
char *encoding;
char *cmap_encoding;
int needs_charset;
};
struct prt_ps_charset_S {
char *charset;
char *cmap_charset;
int has_charset;
};
#define CS_JIS_C_1978 (0x01)
#define CS_JIS_X_1983 (0x02)
@@ -1103,16 +1129,6 @@ static struct prt_ps_charset_S k_charsets[] =
{"ISO10646", "UniKS", CS_KR_ISO10646}
};
/* Collections of encodings and charsets for multi-byte printing */
struct prt_ps_mbfont_S {
int num_encodings;
struct prt_ps_encoding_S *encodings;
int num_charsets;
struct prt_ps_charset_S *charsets;
char *ascii_enc;
char *defcs;
};
static struct prt_ps_mbfont_S prt_ps_mbfonts[] =
{
{
@@ -1149,14 +1165,6 @@ static struct prt_ps_mbfont_S prt_ps_mbfonts[] =
}
};
struct prt_ps_resource_S {
char_u name[64];
char_u filename[MAXPATHL + 1];
int type;
char_u title[256];
char_u version[256];
};
/* Types of PS resource file currently used */
#define PRT_RESOURCE_TYPE_PROCSET (0)
#define PRT_RESOURCE_TYPE_ENCODING (1)
@@ -1204,18 +1212,6 @@ static char *prt_resource_types[] =
#define PRT_DSC_VERSION "%%Version:"
#define PRT_DSC_ENDCOMMENTS "%%EndComments:"
struct prt_dsc_comment_S {
char *string;
int len;
int type;
};
struct prt_dsc_line_S {
int type;
char_u *string;
int len;
};
#define SIZEOF_CSTR(s) (sizeof(s) - 1)
static struct prt_dsc_comment_S prt_dsc_table[] =
@@ -1227,60 +1223,6 @@ static struct prt_dsc_comment_S prt_dsc_table[] =
PRT_DSC_ENDCOMMENTS_TYPE}
};
static void prt_write_file_raw_len(char_u *buffer, int bytes);
static void prt_write_file(char_u *buffer);
static void prt_write_file_len(char_u *buffer, int bytes);
static void prt_write_string(char *s);
static void prt_write_int(int i);
static void prt_write_boolean(int b);
static void prt_def_font(char *new_name, char *encoding, int height,
char *font);
static void prt_real_bits(double real, int precision, int *pinteger,
int *pfraction);
static void prt_write_real(double val, int prec);
static void prt_def_var(char *name, double value, int prec);
static void prt_flush_buffer(void);
static void prt_resource_name(char_u *filename, void *cookie);
static int prt_find_resource(char *name, struct prt_ps_resource_S *resource);
static int prt_open_resource(struct prt_ps_resource_S *resource);
static int prt_check_resource(struct prt_ps_resource_S *resource,
char_u *version);
static void prt_dsc_start(void);
static void prt_dsc_noarg(char *comment);
static void prt_dsc_textline(char *comment, char *text);
static void prt_dsc_text(char *comment, char *text);
static void prt_dsc_ints(char *comment, int count, int *ints);
static void prt_dsc_requirements(int duplex, int tumble, int collate,
int color,
int num_copies);
static void prt_dsc_docmedia(char *paper_name, double width,
double height, double weight, char *colour,
char *type);
static void prt_dsc_resources(char *comment, char *type, char *strings);
static void prt_dsc_font_resource(char *resource,
struct prt_ps_font_S *ps_font);
static float to_device_units(int idx, double physsize, int def_number);
static void prt_page_margins(double width, double height, double *left,
double *right, double *top,
double *bottom);
static void prt_font_metrics(int font_scale);
static int prt_get_cpl(void);
static int prt_get_lpp(void);
static int prt_add_resource(struct prt_ps_resource_S *resource);
static int prt_resfile_next_line(void);
static int prt_resfile_strncmp(int offset, char *string, int len);
static int prt_resfile_skip_nonws(int offset);
static int prt_resfile_skip_ws(int offset);
static int prt_next_dsc(struct prt_dsc_line_S *p_dsc_line);
static void prt_build_cid_fontname(int font, char_u *name, int name_len);
static void prt_def_cidfont(char *new_name, int height, char *cidfont);
static void prt_dup_cidfont(char *original_name, char *new_name);
static int prt_match_encoding(char *p_encoding,
struct prt_ps_mbfont_S *p_cmap,
struct prt_ps_encoding_S **pp_mbenc);
static int prt_match_charset(char *p_charset,
struct prt_ps_mbfont_S *p_cmap,
struct prt_ps_charset_S **pp_mbchar);
/*
* Variables for the output PostScript file.
@@ -1615,16 +1557,6 @@ static int prt_find_resource(char *name, struct prt_ps_resource_S *resource)
#define PSLF (0x0a)
#define PSCR (0x0d)
/* Static buffer to read initial comments in a resource file, some can have a
* couple of KB of comments! */
#define PRT_FILE_BUFFER_LEN (2048)
struct prt_resfile_buffer_S {
char_u buffer[PRT_FILE_BUFFER_LEN];
int len;
int line_start;
int line_end;
};
static struct prt_resfile_buffer_S prt_resfile;
static int prt_resfile_next_line(void)