Я пытаюсь обернуть хешированную карту с защищенным объектом, чтобы к ней можно было получить доступ через несколько задач. Я хочу, чтобы процедуры на защищенном типе были доступны, но было бы неплохо перенести хэш-карту и определение записи элемента в частный раздел пакетов.Доступ к частным видам из защищенных объектов Ada
Пример кода здесь:
package Thing_Protected is
type Thing_Info is record
Key : Ada.Strings.Unbounded.Unbounded_String;
Counter_Value : Natural := 0;
end record;
package Thing_Info_Maps is new Ada.Containers.Hashed_Maps
(Key_Type => Ada.Strings.Unbounded.Unbounded_String,
Element_Type => Thing_Info,
Hash => Ada.Strings.Unbounded.Hash,
Equivalent_Keys => Ada.Strings.Unbounded."=");
protected type Thing is
procedure Increment (Key : String);
procedure Another_Thing (Key : String);
private
Thing_Map : Thing_Info_Maps.Map;
end Thing;
private
-- move Thing_Info, Thing_info_maps into here.
end Thing_Protected;
Я попытался определения Thing_Info в качестве частного типа .. но я не знаю, как я бы определил пакет Thing_Info_Maps как частные, но до сих пор к нему доступ из защищаемого объекта тип.
Так на самом деле я не нашел бы пытается найти способ, чтобы получить что-то вроде этого:
package Thing_Protected is
type Thing_Info is private;
package Thing_Info_Maps is private;
protected type Thing is
procedure Increment (Key : String);
procedure Another_Thing (Key : String);
private
Thing_Map : Thing_Info_Maps.Map; -- <<- how would we know about .Map??
end Thing;
private
type Thing_Info is record
Key : Ada.Strings.Unbounded.Unbounded_String;
Counter_Value : Natural := 0;
end record;
package Thing_Info_Maps is new Ada.Containers.Hashed_Maps
(Key_Type => Ada.Strings.Unbounded.Unbounded_String,
Element_Type => Thing_Info,
Hash => Ada.Strings.Unbounded.Hash,
Equivalent_Keys => Ada.Strings.Unbounded."=");
end Thing_Protected;
Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
Думаю, теперь не так очевидно, что это связано с адой. Тем более, что из 15 лучших опрошенных вопросов отметили «ada», только у одного не было Ada в названии. –
Я позабочусь об этом. –