From: lutz@iks-jena.de (Lutz Donnerhacke)
Subject: Defining the constaint = 0 mod 4?
Date: Thu, 4 Oct 2001 09:52:12 +0000 (UTC)
Date: 2001-10-04T09:52:12+00:00 [thread overview]
Message-ID: <slrn9rocaa.4a.lutz@taranis.iks-jena.de> (raw)
subtype dirent_len_t is size_t range 13 .. NAME_MAX + 13;
type dirent_t (d_reclen : dirent_len_t) is record
d_ino : inode_t;
d_off : off_t;
d_name : Interfaces.C.char_array (13 .. d_reclen);
end record;
for dirent_t'Alignment use 4;
-- Kernel enforces this manually by rounding d_reclen to a multiple of 4
-- This prevents d_name : String (14 .. d_reclen); term : Char := NUL;
for dirent_t use record
d_ino at 0 range 0 .. 31;
d_off at 4 range 0 .. 31;
d_reclen at 8 range 0 .. 15;
end record;
pragma Pack (dirent_t);
Any idea to express the comment as a constraint? The following does not work:
subtype dirent_len_t is size_t range 0 .. NAME_MAX / 4;
type dirent_t (d_reclen : dirent_len_t) is record
d_ino : inode_t;
d_off : off_t;
d_name : Interfaces.C.char_array (13 .. 4 * d_reclen);
dummy : array (1..2) of Boolean := False;
end record;
for dirent_t'Alignment use 4;
for dirent_t use record
d_ino at 0 range 0 .. 31;
d_off at 4 range 2 .. 31;
dummy at 7 range 0 .. 1;
d_reclen at 8 range 0 .. 15;
end record;
for dirent_t'Bit_Order use High_Order_First;
reply other threads:[~2001-10-04 9:52 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox