Why I'm Excited about D
Jens Bauer via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 7 07:20:57 PDT 2015
On Tuesday, 7 April 2015 at 08:33:58 UTC, John Colvin wrote:
> @property isn't really about parentheses-less calls
> (parentheses are optional for all function calls), it's more
> for this sort of thing:
> [snip]
> @property void val(int v)
> {
> a_ = (a_ & flagMask) & (v & ~flagMask);
> }
This is *really* cool and very useful on microcontrollers and is
superior to C's bit-fields.
Imagine that your microcontroller has 24 GPIO pins.
Such pins are usually grouped in 'ports', for instance Port A and
Port B.
Each port could for instance support up to 32 pins: PA0 ... PA31
and PB0 ... PB31.
But there's a problem here: Our microcontroller has only 24 pins,
and our microcontroller vendor chose to make the following pins
available to us:
PA1 ... PA5, PA7, PA13, PA17, PA18 .. PA19, PA23 ... PA28
PB0 ... PB3, PB8 ... PB12
Every developer will think this is annoying. We want to write a
byte to a port, but it has to be converted first.
If just incrementing a value, one could do as follows:
PortB = (PortB | 0x00f0) + 1;
... oposite for decrementing:
PortB = (PortB & 0xff0f) - 1;
But the @property can make all this transparent, so our sources
become very easy to overview and understand.
More information about the Digitalmars-d
mailing list