64 | | {| cellpadding="10" cellspacing="0" |
65 | | | |
66 | | ! Morphic |
67 | | Callbacks |
68 | | ! Announce- |
69 | | ments |
70 | | ! Object |
71 | | Dependents |
72 | | ! Object |
73 | | Events |
74 | | ! Bindings |
75 | | ! Signals |
76 | | |- |
77 | | | align="right" | Allows definiton of new Events |
78 | | | align="center" | |
79 | | | align="center" | ● |
80 | | | align="center" | ● |
81 | | | align="center" | ● |
82 | | | align="center" | ? |
83 | | | align="center" | ● |
84 | | |- style="background-color:#f1f1f1;" |
85 | | | align="right" | Available Events are defined explicitly |
86 | | | align="center" | ● |
87 | | | align="center" | ● |
88 | | | align="center" | |
89 | | | align="center" | |
90 | | | align="center" | ? |
91 | | | align="center" | ● |
92 | | |- style="background-color:#f1f1f1;" |
93 | | | align="right" | Events are defined for a specific class/subclass |
94 | | | align="center" | |
95 | | | align="center" | |
96 | | | align="center" | |
97 | | | align="center" | |
98 | | | align="center" | ? |
99 | | | align="center" | ● |
100 | | |- |
101 | | | align="right" | Bindings are at Event level |
102 | | | align="center" | ● |
103 | | | align="center" | ● |
104 | | | align="center" | |
105 | | | align="center" | ● |
106 | | | align="center" | ? |
107 | | | align="center" | ● |
108 | | |- |
109 | | | align="right" | Bindings are at Sender/Receiver level |
110 | | | align="center" | |
111 | | | align="center" | |
112 | | | align="center" | ● |
113 | | | align="center" | |
114 | | | align="center" | ? |
115 | | | align="center" | |
116 | | |- |
117 | | | align="right" | Events are first-class objects |
118 | | | align="center" | |
119 | | | align="center" | ● |
120 | | | align="center" | |
121 | | | align="center" | |
122 | | | align="center" | ? |
123 | | | align="center" | |
124 | | |- |
125 | | | align="right" | Automatic truncation of arguments |
126 | | | align="center" | ● |
127 | | | align="center" | |
128 | | | align="center" | |
129 | | | align="center" | ● |
130 | | | align="center" | ? |
131 | | | align="center" | ● |
132 | | |- style="background-color:#f1f1f1;" |
133 | | | align="right" | Explicit argument count check at binding-setup-time |
134 | | | align="center" | |
135 | | | align="center" | |
136 | | | align="center" | |
137 | | | align="center" | |
138 | | | align="center" | ? |
139 | | | align="center" | ● |
140 | | |- |
141 | | | align="right" | Explicit argument count check at event-trigger-time |
142 | | | align="center" | |
143 | | | align="center" | ● |
144 | | | align="center" | |
145 | | | align="center" | |
146 | | | align="center" | ? |
147 | | | align="center" | |
148 | | |- style="background-color:#f1f1f1;" |
149 | | | align="right" | Access to sending object at binding-level |
150 | | | align="center" | |
151 | | | align="center" | |
152 | | | align="center" | |
153 | | | align="center" | |
154 | | | align="center" | ? |
155 | | | align="center" | ● |
156 | | |- |
157 | | | align="right" | Access to sending object at event-level |
158 | | | align="center" | |
159 | | | align="center" | ● |
160 | | | align="center" | ● |
161 | | | align="center" | ● |
162 | | | align="center" | ? |
163 | | | align="center" | ● |
164 | | |- |
165 | | | align="right" | Event encodes number of available arguments |
166 | | | align="center" | |
167 | | | align="center" | ● |
168 | | | align="center" | |
169 | | | align="center" | |
170 | | | align="center" | ? |
171 | | | align="center" | ● |
172 | | |- |
173 | | | align="right" | Unhandled Events can be processed separately |
174 | | | align="center" | |
175 | | | align="center" | |
176 | | | align="center" | |
177 | | | align="center" | ● |
178 | | | align="center" | ? |
179 | | | align="center" | |
180 | | |- style="background-color:#f1f1f1;" |
181 | | | align="right" | Event triggering can be limited to the sender |
182 | | | align="center" | |
183 | | | align="center" | |
184 | | | align="center" | |
185 | | | align="center" | |
186 | | | align="center" | ? |
187 | | | align="center" | ● |
188 | | |- style="background-color:#f1f1f1;" |
189 | | | align="right" | Provides synchronisation mechansism for thread-safety |
190 | | | align="center" | |
191 | | | align="center" | |
192 | | | align="center" | |
193 | | | align="center" | |
194 | | | align="center" | ? |
195 | | | align="center" | ● |
196 | | |- |
197 | | | align="right" | Explicit Event/Callback check at binding-setup-time |
198 | | | align="center" | |
199 | | | align="center" | |
200 | | | align="center" | |
201 | | | align="center" | |
202 | | | align="center" | ? |
203 | | | align="center" | ● |
204 | | |} |
| 65 | |
| 66 | || || Morphic[[br]]Callbacks || Announce-[[br]]ments || Object[[br]]Dependents || Object[[br]]Events || Bindings || Signals || |
| 67 | || Allows definiton of new Events || || ● || ● || ● || ? || ● || |
| 68 | || Available Events are defined explicitly || ● || ● || || || ? || ● || |
| 69 | || Events are defined for a specific class/subclass || || || || || ? || ● || |
| 70 | || Bindings are at Event level || ● || ● || || ● || ? || ● || |
| 71 | || Bindings are at Sender/Receiver level || || ● || || ? || || || |
| 72 | || Events are first-class objects || || ● || || || ? || || |
| 73 | || Automatic truncation of arguments || ● || || || ● || ? || ● || |
| 74 | || Explicit argument count check at binding-setup-time || || || || || ? || ● || |
| 75 | || Explicit argument count check at event-trigger-time || || ● || || || ? || || |
| 76 | || Access to sending object at binding-level || || || || || ? || ● || |
| 77 | || Access to sending object at event-level || || ● || ● || ● || ? || ● || |
| 78 | || Event encodes number of available arguments || || ● || || || ? || ● || |
| 79 | || Unhandled Events can be processed separately || || || || ● || ? || || |
| 80 | || Event triggering can be limited to the sender || || || || || ? || ● || |
| 81 | || Provides synchronisation mechansism for thread-safety || || || || || ? || ● || |
| 82 | || Explicit Event/Callback check at binding-setup-time || || || || || ? || ● || |
| 83 | |