[comp.lang.c] new cdecl for ANSI C and C++ sent to comp.sources.unix

hansen@pegasus.UUCP (Tony L. Hansen) (02/11/88)

I've just sent to comp.sources.unix a new version of cdecl which adds
support for the new features of ANSI C and C++, as well as maintaining all
the old features of the old cdecl program. This includes all the new
keywords for the two new languages and function prototypes. The program
compiles on System V, 4.2BSD and MS-DOS; see the makefile for more
information on the different environments.

Here are the comments from the program which list all of the changes made.

/*
 * cdecl - ANSI C and C++ declaration composer & decoder
 *
 *	originally written
 *		Graham Ross
 *		once at tektronix!tekmdp!grahamr
 *
 *	modified to provide hints for unsupported types
 *	added argument lists for functions
 *	added 'explain cast' grammar
 *	added #ifdef for 'create program' feature
 *		???? (sorry, I lost your name and login)
 *
 *	conversion to ANSI C
 *		David Wolverton
 *		ihnp4!houxs!daw
 *
 *	merged D. Wolverton's ANSI C version w/ ????'s version
 *	added function prototypes
 *	added C++ declarations
 *	made type combination checking table driven
 *	added checks for void variable combinations
 *	made 'create program' feature a runtime option
 *	added file parsing as well as just stdin
 *	added help message at beginning
 *	added prompts when on a TTY or in interactive mode
 *	added getopt() usage
 *	added -a, -r, -p, -c, -d, -D, -V, -i and -+ options
 *	delinted
 *	added #defines for those without getopt or void
 *	added 'set options' command
 *	added 'quit/exit' command
 *	added synonyms
 *		Tony Hansen
 *		attmail!tony, ihnp4!pegasus!hansen
 */

Here is a portion of the manual page:

     NAME
	  cdecl, c++decl - Compose C and C++ type declarations

     SYNOPSIS
	  cdecl	[-a | -+ | -p |	-r] [-cidDV] [files ...]

	  c++decl [-a |	-+ | -p	| -r] [-cidDV] [files ...]

     DESCRIPTION
	  Cdecl	(and c++decl ) is a program for	encoding and decoding
	  C (C++) type-declarations.  The C language (the default for
	  cdecl	, or with the -a option) is based on the (draft
	  proposed) X3J11 ANSI Standard; optionally, the C language
	  may be based on the pre-ANSI definition defined by Kernighan
	  & Ritchie's The C Programming	Language book (the -p option
	  is used), or the C language defined by the Ritchie PDP-11 C
	  compiler (the	-r option is used).  The C++ language (the
	  default for c++decl ,	or with	the -+ option) is based	on
	  Stroustrup's The C++ Programming Language, plus the version
	  2.0 additions	to the language.

	  Cdecl	reads the named	files for statements in	the language
	  described below.  A transformation is	made from that
	  language to C	(C++) or pseudo-English.  The results of this
	  transformation are written on	standard output.  If no	files
	  are named, or	a filename of ``-'' is encountered, standard
	  input	will be	read.  If standard input is coming from	a
	  terminal, (or	the -i option is used),	a prompt will be
	  written to the terminal before each line.

     COMMAND LANGUAGE
	  There	are six	statements in the language.  The declare
	  statement composes a C type-declaration from a verbose
	  description.	The cast statement composes a C	type-cast as
	  might	appear in an expression.  The explain statement
	  decodes a C type-declaration or cast,	producing a verbose
	  description.	The help (or ?)	 statement provides a help
	  message.  The	quit (or exit) statement (or the end of	file)
	  exits	the program.  The set statement	allows the command
	  line options to be set interactively.

	  Some synonyms	are permitted during a declaration:  character
	  -> char, constant -> const, enumeration -> enum, func	->
	  function, integer -> int, ptr	-> pointer, ref	-> reference,
	  ret -> returning, structure -> struct, and vector -> array.

					Tony Hansen
				ihnp4!pegasus!hansen, attmail!tony