Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Apr 2008 14:53:29 +0200
From:      "Lukasz Jaroszewski" <sigtrm@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   RE: indent(1) support for gcc(1) 0b prefix
Message-ID:  <aed2bfaf0804280553s6fcc01afma6a040509ab6cb50@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
>On Apr 26, 2008, at 5:01 PM, Max Laier wrote:

>>* On Saturday 26 April 2008 23:35:57 Romain Tarti=E8re wrote:
*>>>* Hello FreeBSD hackers!
*>>>*
*>>>* I'm using avr-gcc from the ports and relying on the 0b prefix
*>>>* notation
*>>>* for binary constants, that is:
*>>>*
*>>>* =09foo =3D 0b00101010;
*>>>*
*>>>* Thanks to /usr/ports/devel/avr-gcc/files/patch-0b-constants this is
*>>>* possible :-)
*>>>*
*>>>* But I would like to use indent(1) to reformat contributed code
*>>>* automatically. Unfortunately, the 0b notation is not supported by
*>>>* that
*>>>* program, and the resulting code looks like this:
*>>>*
*>>>* =09foo =3D 0 b00101010;
*>>>*
*>>>* ... then compilation fails, bla bla bla...
*>>*
*>>* I can't think of a case (outside of "0x...." context) where "...0b..."
*>>* would be valid C code, let alone better formated as "...0 b...".
*>>* Hence I
*>>* see no harm in adding your patch to the base indent(1).
*>>*
*>>* Does anyone have an example where "...0 b..." is valid C code?
*>
>Well, if b... is a preprocessor define then you can easily
>come up with valid C:
>
>#define b...=09*2
>
>then:=09=09...0 b...
>becomes:=09...0 *2
>
>That's a valid expression in the right context...
>
>FYI,
>
>--
>Marcel Moolenaar
>xcllnt at mac.com <http://lists.freebsd.org/mailman/listinfo/freebsd-hacke=
rs>

>From c-faq.com( by Bill Finke ):

#define Ob(x)  ((unsigned)Ob_(0 ## x ## uL))
#define Ob_(x) (x & 1 | x >> 2 & 2 | x >> 4 & 4 | x >> 6 & 8 |=09=09\
=09x >> 8 & 16 | x >> 10 & 32 | x >> 12 & 64 | x >> 14 & 128)
---
#define PORT_SYSCTLA  0x092         /* PS2 system control port A         */
#define SYSCTLA_DSK   Ob(10000000)  /* lights the fixed dsk activity led */
#define SYSCTLA_DSK0  Ob(01000000)  /* also lights fixed disk actvty led */
#define SYSCTLA_TMOT  Ob(00010000)  /* watchdog timer has timed-out      */
#define SYSCTLA_LOCK  Ob(00001000)  /* CMOS password area is locked      */
#define SYSCTLA_A20   Ob(00000010)  /* alternate address line 20 gating  */
#define SYSCTLA_RST   Ob(00000001)  /* alternate hot reset               */

regards
LJ776-RIPE



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?aed2bfaf0804280553s6fcc01afma6a040509ab6cb50>