| with Ada.Finalization; |
| package task_name is |
| type Base_Controller is |
| abstract new Ada.Finalization.Limited_Controlled with null record; |
| |
| type Extended_Controller is |
| abstract new Base_Controller with private; |
| |
| type Task_Object (Controller : access Extended_Controller'Class) is |
| limited private; |
| private |
| type String_Access is access string; |
| |
| type Extended_Controller is |
| abstract new Base_Controller with record |
| Thread : aliased Task_Object (Extended_Controller'Access); |
| Name : String_Access := new string'("the_name_of_the_task"); |
| end record; |
| |
| task type Task_Object (Controller : access Extended_Controller'Class) is pragma Task_Name (Controller.Name.all); |
| end Task_Object; |
| end; |