comp.lang.ada
 help / color / mirror / Atom feed
From: berndtrog@yahoo.com (Bernd Trog)
Subject: Type-safe low-level programming?
Date: 17 Feb 2003 16:06:56 -0800
Date: 2003-02-18T00:06:56+00:00	[thread overview]
Message-ID: <cbdd91ae.0302171606.57d2ba77@posting.google.com> (raw)

Hi,
lets say I've something like this:

pragma No_Run_Time;

type Bit_Number is range 0 .. 7;
type Address_Type is range 0 .. 16#ff#;

Register_A : constant Address_Type := 1;
Bit_A1 : constant Bit_Number := 4;  --Register A, Bit 4
Bit_A2 : constant Bit_Number := 1;
Bit_A3 : constant Bit_Number := 7;

Register_B : constant Address_Type = 2;
Bit_B1 : constant Bit_Number :=4;
Bit_B2 : constant Bit_Number :=2;
Bit_B3 : constant Bit_Number :=5;
[...]
Register_Z : constant Address_Type = 2;
Bit_Z1 : constant Bit_Number :=6;
Bit_Z2 : constant Bit_Number :=0;
Bit_Z3 : constant Bit_Number :=5;

procedure Set_Bit( Adr : in Address_Type; Nr : in Bit_Number );
procedure Clear_Bit( Adr : in Address_Type; Nr : in Bit_Number );

On a not-so-good day I wrote:
Set_Bit( Register_A, Bit_B3 );
and found my error days later :-(

Now I wonder, if its possible to make 'Set_Bit' type-safe *without*
increasing the program memory size for every new register?


Bernd



             reply	other threads:[~2003-02-18  0:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-18  0:06 Bernd Trog [this message]
2003-02-18  2:04 ` Type-safe low-level programming? David C. Hoos, Sr.
2003-02-18 10:39 ` Hans-Bernhard Broeker
2003-02-18 16:21   ` Thad Smith
2003-02-18 16:52   ` Hans-Bernhard Broeker
2003-02-18 14:53 ` Steve
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox