foo.adb 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. -- Copyright 2009-2022 Free Software Foundation, Inc.
  2. --
  3. -- This program is free software; you can redistribute it and/or modify
  4. -- it under the terms of the GNU General Public License as published by
  5. -- the Free Software Foundation; either version 3 of the License, or
  6. -- (at your option) any later version.
  7. --
  8. -- This program is distributed in the hope that it will be useful,
  9. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. -- GNU General Public License for more details.
  12. --
  13. -- You should have received a copy of the GNU General Public License
  14. -- along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. procedure Foo is
  16. type Small is range -32 .. 31;
  17. type SomePackedArray is array (Integer range <>) of Small;
  18. pragma Pack (SomePackedArray);
  19. type SomePackedRecord is record
  20. Y: SomePackedArray (1 .. 10);
  21. end record;
  22. pragma Pack (SomePackedRecord);
  23. Suite : SomePackedArray := (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10);
  24. XP: SomePackedRecord := (Y => Suite);
  25. Slice : SomePackedArray renames XP.Y (3 .. 5);
  26. begin
  27. Slice (4) := 4; -- START
  28. end Foo;