b18acf6f2c
C2X support
Added support for C2X:
Added type char8_t.
Added [[...]] syntax for attributes.
Added [[deprecated]], [[maybe_unused]], and [[nodiscard]] attributes.
Removed support for typeless function arguments in K&R C.
More C++20 support
Added support for constinit and export in C++20.
Embedded C support
Added support for Embedded C:
Added types _Accum and _Fract (and accum and fract).
Added modifier _Sat (and sat and saturated).
Added the typedefs int_hk_t, int_hr_t, int_k_t, int_lk_t, int_lr_t, int_r_t, uint_uhk_t, uint_uhr_t, uint_uk_t, uint_ulk_t, uint_ulr_t, and uint_your_t.
Since the Embedded C standard is based on C99, support for Embedded C is available only when the language is set to C99.
Forbidding attribute syntax
The [[xxx]] attribute syntax is now forbidden until either C2X or C++11.
class, struct, & union optional ;
Semicolons are now optional after class, struct, or union declarations.
class, struct, & union define themselves
Before now:
class C { typedef int Int; }
would define only C::Int as a type. Now, the enclosing class, struct, or union is also defined as a type. Hence, the above is now equivalent to:
define C as class C
define C::Int as int
This also means that either:
class C { }
class C
is eqivalent to:
define C as class C
class, struct, & union commands
class, struct, and union are now commands (just like namespace).
Per-scope types; fixed English scope name order
Each scope of a scoped name (sname) now has its own type. Additionally, the English printed order is now (correctly) inner-to-outermost. For example:
c++decl> namespace N { class C { typedef int I; }; }
c++decl> explain N::C::I x
declare x as I of class C of namespace N
Floating-point extensions for C types
Added types _Decimal32_t, _Decimal64_t, _Decimal64x, _Decimal128x, _Float32, _Float32x, _Float64, _Float128, _Float128x, femode_t, and long_double_t.
Aligned to
Now allowing to in addition to as for ... aligned [as|to] ....
show as
Now allowing an optional as in show ... [as] typedef.
asm
Added the asm keyword to prevent declarations from using it.
28 lines
520 B
Makefile
28 lines
520 B
Makefile
# Created by: David O'Brien (obrien@NUXI.com)
|
|
# $FreeBSD$
|
|
|
|
PORTNAME= cdecl
|
|
PORTVERSION= 8.0
|
|
DISTVERSIONPREFIX= ${PORTNAME}-
|
|
CATEGORIES= devel
|
|
|
|
MAINTAINER= ler@FreeBSD.org
|
|
COMMENT= Explains complicated C/C++ declarations in plain English
|
|
|
|
LICENSE= GPLv3
|
|
|
|
BUILD_DEPENDS= flex:textproc/flex
|
|
|
|
USES= autoreconf bison ncurses readline
|
|
|
|
CONFLICTS= cutils-[0-9]*
|
|
|
|
USE_GITHUB= yes
|
|
|
|
GH_ACCOUNT= paul-j-lucas
|
|
|
|
GNU_CONFIGURE= yes
|
|
PLIST_FILES= bin/cdecl bin/c++decl man/man1/cdecl.1.gz man/man1/c++decl.1.gz
|
|
|
|
.include <bsd.port.mk>
|