Reference counting smart pointers library for Ada
Enables inner tagged types operations to accept and return references wrapping these types' accesses by using special tricks. This way naked unsafe access values can mostly be eliminated, something that other smart pointers fail to provide.
Revision | 6c8c0919929496e1150b65d38d28013c3e4f6bdc (tree) |
---|---|
Time | 2019-09-10 13:58:44 |
Author | ![]() |
Commiter | Sergey Dukov |
#32744 Изменение атрибутов Inline
@@ -42,25 +42,31 @@ | ||
42 | 42 | new Ada.Unchecked_Conversion (System.Address, Reference_Ptr); |
43 | 43 | |
44 | 44 | function Assigned (Object : Reference'Class) return Boolean; |
45 | + pragma Inline_Always (Assigned); | |
45 | 46 | |
46 | 47 | procedure Assign |
47 | 48 | (Target : in out Reference'Class; |
48 | 49 | Source : Reference'Class); |
50 | + pragma Inline_Always (Assign); | |
49 | 51 | |
50 | 52 | procedure Move |
51 | 53 | (Target : in out Reference'Class; |
52 | 54 | Source : in out Reference'Class); |
55 | + pragma Inline_Always (Move); | |
53 | 56 | |
54 | 57 | function Get (Object : in Reference'Class) return Classwide_Access; |
58 | + pragma Inline_Always (Get); | |
55 | 59 | |
56 | 60 | procedure Set |
57 | 61 | (Object : in out Reference'Class; |
58 | 62 | Item : Classwide_Access); |
63 | + pragma Inline_Always (Set); | |
59 | 64 | |
60 | 65 | procedure Set_And_Retain |
61 | 66 | (Object : in out Reference'Class; |
62 | 67 | Item : Classwide_Access); |
63 | - | |
68 | + pragma Inline_Always (Set_And_Retain); | |
69 | + | |
64 | 70 | ------------------- |
65 | 71 | -- AUX_Reference -- |
66 | 72 | ------------------- |
@@ -69,12 +75,11 @@ | ||
69 | 75 | (Data : Reference_Ptr := null) is private; |
70 | 76 | |
71 | 77 | function Create_AUX_Reference return AUX_Reference_Base; |
78 | + pragma Inline_Always (Create_AUX_Reference); | |
72 | 79 | |
73 | 80 | function Create_And_Retain (Object : Classwide_Access) |
74 | 81 | return AUX_Reference_Base; |
75 | - | |
76 | - pragma Inline_Always(Assigned, Assign, Move, Get, Set, Set_And_Retain, | |
77 | - Create_AUX_Reference, Create_And_Retain); | |
82 | + pragma Inline_Always (Create_And_Retain); | |
78 | 83 | |
79 | 84 | private |
80 | 85 | type AUX_Reference_Base |
@@ -28,10 +28,10 @@ | ||
28 | 28 | new Ada.Unchecked_Conversion (Referenced_Access, System.Address); |
29 | 29 | |
30 | 30 | function Is_Unique (Object : Referenced'Class) return Boolean; |
31 | - pragma Inline_Always(Is_Unique); | |
31 | + pragma Inline(Is_Unique); | |
32 | 32 | procedure Retain (Object : in out Referenced'Class); |
33 | --- pragma Inline_Always(Retain); | |
33 | + pragma Inline(Retain); | |
34 | 34 | procedure Release (Object : in out Referenced'Class; Result : out Boolean); |
35 | --- pragma Inline_Always(Release); | |
35 | + pragma Inline(Release); | |
36 | 36 | |
37 | 37 | end Referencing.Types.Operations; |