X-Git-Url: https://git.draconx.ca/gitweb/homepage.git/blobdiff_plain/b6d30bd05c54078bbf60e7242aabff21ed4492da..de605446b3ed408672aecd74462a25de41c1367c:/content/projects/cdecl99.md diff --git a/content/projects/cdecl99.md b/content/projects/cdecl99.md new file mode 100644 index 0000000..b6438ed --- /dev/null +++ b/content/projects/cdecl99.md @@ -0,0 +1,55 @@ +--- +title: Cdecl99 +copyright: 2019 Nick Bowler +license: gpl-3 or (at your option) any later version +--- + +Cdecl99 is a tool to help construct or understand complicated C declarations. +Inspired by the venerable cdecl, which predates C's standardization in 1989, +cdecl99 implements more or less the same concept but for modern C. + +Unlike the original cdecl, cdecl99 supports all relevant C99 keywords, has no +undue restrictions on identifiers, understands features such as complex types, +variadic functions and named parameters, and also has the ability to parse +"plain" type names (which do not declare an identifier). + +At this time there is no support for new declaration syntax introduced in C11, +including atomic types, `_Alignas`, `_Thread_local` or `_Noreturn` specifers. + +The package includes both an executable program (cdecl99) and a library +(libcdecl) which can be used by other programs to provide cdecl-like +functionality. + +# Obtaining cdecl99 + +[cdecl99-gitweb]: //git.draconx.ca/gitweb/cdecl99.git + +There are presently no released versions of cdecl99. The development sources +[may be browsed online][cdecl99-gitweb] or cloned directly using git, e.g., + +git clone https://git.draconx.ca/cdecl99.git + +# Dependencies + +[readline-homepage]: https://www.gnu.org/software/readline/ +[gettext-homepage]: https://www.gnu.org/software/gettext/ + +Cdecl99 is written in C, so a working C compiler is required. All external +library dependencies are optional and provide additional functionality. + +The [GNU readline library][readline-homepage] is used to provide interactive +line-editing and history functionality. + +The [GNU libintl library][gettext-homepage] (included with the GNU C library) +is used to support localized program messages. However, the core functionality +of translating C declarations into pseudo-English is not localizable since the +output is intended to be machine-readable. + +Building from the development sources may require additional build tools. + +# License + +Cdecl99 is free software: you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation, either version 3 of the License or (at your option) any later +version.