diff options
author | Andreas Scherer <andreas_tex@freenet.de> | 2021-04-16 12:49:28 +0000 |
---|---|---|
committer | Andreas Scherer <andreas_tex@freenet.de> | 2021-04-16 12:49:28 +0000 |
commit | 611b225a456949639e46d4ccb7d458761c3dc818 (patch) | |
tree | 23077732a961b5fcd9c25530d594a0ac2cd6fb1a /Build/source/texk/web2c/cwebdir/common.h | |
parent | 296df34bd02be9e066be5af0f934d493916b2c67 (diff) |
[CWEB] New release 4.3.
This release introduces new features to CWEB 4:
* Former option '-t' is now called '-c'.
- New option '-t' for CWEAVE when dealing with 'typename' in
C++ templates.
- New option '-k' for CTANGLE to keep '-separators in numeric
literals.
* Support for "variadic macros" along "variadic functions".
* @d is printed similar to #define (and vice versa):
- '#' is no longer printed in boldface.
- Spacing is similar in most cases.
* Support for extended C99/C++ numeric literals:
- hexadecimal, octal, and -- new! -- binary numbers.
- NOTE: 'cwebmac.tex 4.3' is NOT compatible with CWEAVE 4.2 and older
and vice versa.
* Long parameter lists in ANSI function definitions are indented similar
to old-style function parameters.
- Option '-i' works similar for old-style and modern function headers.
* Additional C99/C++ keywords -- from 'alignas' to 'thread_local' -- are
supported internally.
* '@i'nclude file 'iso_types.w' for numeric types (in addition to
'c++lib.w').
* Countless code modifications, including some corrections amd
improvements.
Thanks and cudos to Github user "@texdraft" for numerous contributions
to this feature release!
git-svn-id: svn://tug.org/texlive/trunk@58884 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/cwebdir/common.h')
-rw-r--r-- | Build/source/texk/web2c/cwebdir/common.h | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/Build/source/texk/web2c/cwebdir/common.h b/Build/source/texk/web2c/cwebdir/common.h index 425239f1c75..fa064b39dba 100644 --- a/Build/source/texk/web2c/cwebdir/common.h +++ b/Build/source/texk/web2c/cwebdir/common.h @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.2 --- February 2021 (works also with later versions) +% Version 4.3 --- April 2021 (works also with later versions) % Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth @@ -27,9 +27,7 @@ First comes general stuff: -@s boolean int -@s uint8_t int -@s uint16_t int +@i iso_types.w @d ctangle false @d cweave true @@ -56,20 +54,22 @@ extern int phase; /* which phase are we in? */ @^ASCII code dependencies@> @d and_and 04 /* `\.{\&\&}'\,; corresponds to MIT's {\tentex\char'4} */ -@d lt_lt 020 /* `\.{<<}'\,; corresponds to MIT's {\tentex\char'20} */ -@d gt_gt 021 /* `\.{>>}'\,; corresponds to MIT's {\tentex\char'21} */ -@d plus_plus 013 /* `\.{++}'\,; corresponds to MIT's {\tentex\char'13} */ -@d minus_minus 01 /* `\.{--}'\,; corresponds to MIT's {\tentex\char'1} */ -@d minus_gt 031 /* `\.{->}'\,; corresponds to MIT's {\tentex\char'31} */ -@d non_eq 032 /* `\.{!=}'\,; corresponds to MIT's {\tentex\char'32} */ -@d lt_eq 034 /* `\.{<=}'\,; corresponds to MIT's {\tentex\char'34} */ -@d gt_eq 035 /* `\.{>=}'\,; corresponds to MIT's {\tentex\char'35} */ -@d eq_eq 036 /* `\.{==}'\,; corresponds to MIT's {\tentex\char'36} */ -@d or_or 037 /* `\.{\v\v}'\,; corresponds to MIT's {\tentex\char'37} */ -@d dot_dot_dot 016 /* `\.{...}'\,; corresponds to MIT's {\tentex\char'16} */ -@d colon_colon 06 /* `\.{::}'\,; corresponds to MIT's {\tentex\char'6} */ -@d period_ast 026 /* `\.{.*}'\,; corresponds to MIT's {\tentex\char'26} */ -@d minus_gt_ast 027 /* `\.{->*}'\,; corresponds to MIT's {\tentex\char'27} */ +@d lt_lt 020 /* `\.{<<}'\,; corresponds to MIT's {\tentex\char'20} */ +@d gt_gt 021 /* `\.{>>}'\,; corresponds to MIT's {\tentex\char'21} */ +@d plus_plus 013 /* `\.{++}'\,; corresponds to MIT's {\tentex\char'13} */ +@d minus_minus 01 /* `\.{--}'\,; corresponds to MIT's {\tentex\char'1} */ +@d minus_gt 031 /* `\.{->}'\,; corresponds to MIT's {\tentex\char'31} */ +@d non_eq 032 /* `\.{!=}'\,; corresponds to MIT's {\tentex\char'32} */ +@d lt_eq 034 /* `\.{<=}'\,; corresponds to MIT's {\tentex\char'34} */ +@d gt_eq 035 /* `\.{>=}'\,; corresponds to MIT's {\tentex\char'35} */ +@d eq_eq 036 /* `\.{==}'\,; corresponds to MIT's {\tentex\char'36} */ +@d or_or 037 /* `\.{\v\v}'\,; corresponds to MIT's {\tentex\char'37} */ +@d dot_dot_dot 016 /* `\.{...}'\,; corresponds to MIT's {\tentex\char'16} */ +@d colon_colon 06 /* `\.{::}'\,; corresponds to MIT's {\tentex\char'6} */ +@d period_ast 026 /* `\.{.*}'\,; corresponds to MIT's {\tentex\char'26} */ +@d minus_gt_ast 027 /* `\.{->*}'\,; corresponds to MIT's {\tentex\char'27} */ +@# +@d compress(c) if (loc++<=limit) return c @<Common code...@>= extern char section_text[]; /* text being sought for */ @@ -78,12 +78,16 @@ extern char *id_first; /* where the current identifier begins in the buffer */ extern char *id_loc; /* just after the current identifier in the buffer */ @ Code related to input routines: -@d xisalpha(c) (isalpha((eight_bits)c)&&((eight_bits)c<0200)) -@d xisdigit(c) (isdigit((eight_bits)c)&&((eight_bits)c<0200)) -@d xisspace(c) (isspace((eight_bits)c)&&((eight_bits)c<0200)) -@d xislower(c) (islower((eight_bits)c)&&((eight_bits)c<0200)) -@d xisupper(c) (isupper((eight_bits)c)&&((eight_bits)c<0200)) -@d xisxdigit(c) (isxdigit((eight_bits)c)&&((eight_bits)c<0200)) +@d xisalpha(c) (isalpha((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d xisdigit(c) (isdigit((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d xisspace(c) (isspace((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d xislower(c) (islower((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d xisupper(c) (isupper((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d xisxdigit(c) (isxdigit((eight_bits)(c))&&((eight_bits)(c)<0200)) +@d isxalpha(c) ((c)=='_' || (c)=='$') + /* non-alpha characters allowed in identifier */ +@d ishigh(c) ((eight_bits)(c)>0177) +@^high-bit character handling@> @<Common code...@>= extern char buffer[]; /* where each line of input goes */ @@ -163,7 +167,7 @@ extern hash_pointer h; /* index into hash-head array */ extern boolean names_match(name_pointer,const char *,size_t,eight_bits);@/ extern name_pointer id_lookup(const char *,const char *,char); /* looks up a string in the identifier table */ -extern name_pointer section_lookup(char *,char *,int); /* finds section name */ +extern name_pointer section_lookup(char *,char *,boolean); /* finds section name */ extern void init_node(name_pointer);@/ extern void init_p(name_pointer,eight_bits);@/ extern void print_prefix_name(name_pointer);@/ @@ -207,10 +211,8 @@ extern boolean flags[]; /* an option for each 7-bit code */ @ Code related to output: @d update_terminal fflush(stdout) /* empty the terminal output buffer */ -@d new_line putchar('\n') @d putxchar putchar +@d new_line putchar('\n') @d term_write(a,b) fflush(stdout),fwrite(a,sizeof(char),b,stdout) -@d C_printf(c,a) fprintf(C_file,c,a) -@d C_putc(c) putc(c,C_file) /* isn't \CEE/ wonderfully consistent? */ @<Common code...@>= extern FILE *C_file; /* where output of \.{CTANGLE} goes */ |