author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 05 Sep 2013 16:37:21 +0100 | |
branch | development |
changeset 2708 | 648286432b9a |
parent 2703 | cec245f60b30 |
child 2711 | a00302fe5083 |
permissions | -rw-r--r-- |
2703 | 1 |
"{ Package: 'stx:libjava/tools' }" |
2 |
||
3 |
Tools::Toolbox subclass:#JavaToolbox |
|
4 |
instanceVariableNames:'' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
7 |
category:'Languages-Java-Tools' |
|
8 |
! |
|
9 |
||
10 |
!JavaToolbox class methodsFor:'documentation'! |
|
11 |
||
12 |
documentation |
|
13 |
" |
|
14 |
JavaToolbox contains various utility method used by other tools |
|
15 |
to perform language-specific tasks. |
|
16 |
||
17 |
[author:] |
|
18 |
Jan Vrany <jan.vrany@fit.cvut.cz> |
|
19 |
||
20 |
[instance variables:] |
|
21 |
||
22 |
[class variables:] |
|
23 |
||
24 |
[see also:] |
|
25 |
||
26 |
" |
|
27 |
! ! |
|
28 |
||
29 |
!JavaToolbox methodsFor:'browsing'! |
|
30 |
||
31 |
spawnBrowserOnAllImplementorsOf: selector class: class |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
32 |
| label | |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
33 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
34 |
self ensureBrowser. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
35 |
browser withWaitCursorDo:[ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
36 |
label := browser resources string:'Implementors of %1' with: (self displayStringForSelector: selector in: class name). |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
37 |
browser |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
38 |
spawnMethodBrowserForSearch:[self searchForImplementorsOf: selector class: class] |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
39 |
sortBy:#class |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
40 |
in:#newBuffer |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
41 |
label:label. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
42 |
] |
2703 | 43 |
|
44 |
"Created: / 01-09-2013 / 17:59:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
45 |
"Modified: / 05-09-2013 / 12:44:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2703 | 46 |
! |
47 |
||
48 |
spawnBrowserOnAllSendersOf: selector class: class |
|
49 |
| label search | |
|
50 |
||
51 |
self ensureBrowser. |
|
52 |
browser withWaitCursorDo:[ |
|
53 |
label := browser resources string:'Senders of %1' with: (self displayStringForSelector: selector in: class name). |
|
54 |
search := selector upTo: $(. |
|
55 |
browser |
|
56 |
spawnMethodBrowserForSearch:[self searchForSendersOf: selector class: class] |
|
57 |
sortBy:#class |
|
58 |
in:#newBuffer |
|
59 |
label:label. |
|
60 |
browser autoSearchSelector:search ignoreCase:false doMatch:false. |
|
61 |
] |
|
62 |
||
63 |
"Created: / 01-09-2013 / 17:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
64 |
! ! |
|
65 |
||
66 |
!JavaToolbox methodsFor:'menus'! |
|
67 |
||
68 |
messagesMenuFor:actionSelector |
|
69 |
withMethods: methods |
|
70 |
withMethodSelectors:withMethodSelectors |
|
71 |
withSentSelectors: withSentSelectors |
|
72 |
withSelfSelectorsOnly: withSelfSelectorsOnly |
|
73 |
||
74 |
| xlatedSelector menu builder sent | |
|
75 |
||
76 |
actionSelector == #spawnBrowserOnAllSendersOf: ifTrue:[ |
|
77 |
xlatedSelector := #spawnBrowserOnAllSendersOf:class: |
|
78 |
] ifFalse:[actionSelector == #spawnBrowserOnAllImplementorsOf: ifTrue:[ |
|
79 |
xlatedSelector := #spawnBrowserOnAllImplementorsOf:class: |
|
80 |
] ifFalse:[ |
|
81 |
^ Menu new |
|
82 |
addItem: ((MenuItem label: 'Not supported for Java') enabled: false); |
|
83 |
yourself. |
|
84 |
]]. |
|
85 |
||
86 |
builder := [:class :selector | |
|
87 |
menu addItem: |
|
88 |
(MenuItem |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
89 |
label: (self displayStringForSelector: selector in: class name) |
2703 | 90 |
itemValue: [ self perform: xlatedSelector with: selector with: class ]) |
91 |
]. |
|
92 |
||
93 |
menu := Menu new. |
|
94 |
withMethodSelectors ifTrue:[ |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
95 |
methods do:[:m | builder value: m javaClass value: m selector ]. |
2703 | 96 |
]. |
97 |
withSentSelectors ifTrue:[ |
|
98 |
sent := Set new. |
|
99 |
methods do:[:m | sent addAll: m analyzer methodsInvoked ]. |
|
100 |
sent notEmptyOrNil ifTrue:[ |
|
101 |
withMethodSelectors ifTrue:[ |
|
102 |
menu addSeparator. |
|
103 |
]. |
|
104 |
sent := sent asSortedCollection:[:a :b|a selector < b selector ]. |
|
105 |
sent do:[:mref | |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
106 |
builder value: mref classRef javaClass value: mref selector |
2703 | 107 |
] |
108 |
]. |
|
109 |
]. |
|
110 |
^ menu. |
|
111 |
||
112 |
"Created: / 01-09-2013 / 17:03:05 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
113 |
"Modified: / 05-09-2013 / 13:38:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2703 | 114 |
! ! |
115 |
||
116 |
!JavaToolbox methodsFor:'private-presentation'! |
|
117 |
||
118 |
displayStringForSelector: selector in: className |
|
119 |
| i name descriptor package localName | |
|
120 |
||
121 |
i := selector indexOf: $(. |
|
122 |
name := selector copyTo: i - 1. |
|
123 |
name = #'<clinit>' ifTrue:[ |
|
124 |
^ 'static {}' |
|
125 |
]. |
|
126 |
||
127 |
descriptor := selector copyFrom: i. |
|
128 |
i := className lastIndexOf: $/. |
|
129 |
package := className copyTo: i - 1. |
|
130 |
||
131 |
||
132 |
name = '<init>' ifTrue:[ |
|
133 |
localName := className copyFrom: i + 1. |
|
134 |
^ JavaMethod specTextFromSignature:descriptor in: package withName: localName. |
|
135 |
]. |
|
136 |
^ JavaMethod specTextFromSignature:descriptor in: package withName: name |
|
137 |
||
138 |
"Created: / 31-08-2013 / 23:31:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
139 |
! ! |
|
140 |
||
141 |
!JavaToolbox methodsFor:'searching'! |
|
142 |
||
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
143 |
searchForDeclarationOf: selector class: class in: classes |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
144 |
"Return 'declaration' of method with given selector in given class. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
145 |
By 'declaration' we mean top-most definition of the method or |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
146 |
definition of the method in one of class's interface. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
147 |
Returns the class (ot interface) in which the method is |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
148 |
first declared." |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
149 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
150 |
| current declaring | |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
151 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
152 |
current := declaring := class. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
153 |
[ current ~~ JavaObject ] whileTrue:[ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
154 |
(current canUnderstand: selector) ifTrue:[ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
155 |
declaring := current. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
156 |
]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
157 |
current allInterfaces do:[:iface| |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
158 |
(iface canUnderstand: selector) ifTrue:[ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
159 |
^ iface |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
160 |
]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
161 |
]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
162 |
current := current superclass. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
163 |
]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
164 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
165 |
^ declaring |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
166 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
167 |
"Created: / 05-09-2013 / 13:10:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
168 |
! |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
169 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
170 |
searchForImplementorsOf: selector class: class |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
171 |
^ self searchForImplementorsOf: selector class: class in: environment allClasses |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
172 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
173 |
"Created: / 05-09-2013 / 12:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
174 |
! |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
175 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
176 |
searchForImplementorsOf: selector class: class in: classes |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
177 |
| senders | |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
178 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
179 |
senders := Set new. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
180 |
self searchForImplementorsOf: selector class: class in: classes whenFoundDo: [:mthd | senders add: mthd ]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
181 |
^ senders |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
182 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
183 |
"Created: / 05-09-2013 / 12:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
184 |
! |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
185 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
186 |
searchForImplementorsOf: selector class: class in: classes whenFoundDo: block |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
187 |
| searchSelector searchClass | |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
188 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
189 |
searchSelector := selector. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
190 |
searchClass := self searchForDeclarationOf: selector class: class in: classes. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
191 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
192 |
classes do: [:cls | |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
193 |
cls isJavaClass ifTrue: [ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
194 |
((cls canUnderstand: searchSelector) and:[ JavaVM canCast: cls javaClass to: searchClass]) ifTrue:[ |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
195 |
block value: (cls compiledMethodAt: searchSelector) |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
196 |
] |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
197 |
] |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
198 |
]. |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
199 |
|
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
200 |
"Created: / 05-09-2013 / 12:45:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
201 |
! |
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
202 |
|
2703 | 203 |
searchForSendersOf: selector class: class |
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
204 |
^ self searchForSendersOf: selector class: class in: environment allClasses |
2703 | 205 |
|
206 |
"Created: / 01-09-2013 / 10:07:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
207 |
"Modified: / 05-09-2013 / 12:46:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2703 | 208 |
! |
209 |
||
210 |
searchForSendersOf: selector class: class in: classes |
|
211 |
| senders | |
|
212 |
||
213 |
senders := Set new. |
|
214 |
self searchForSendersOf: selector class: class in: classes whenFoundDo: [:mthd | senders add: mthd ]. |
|
215 |
^ senders |
|
216 |
||
217 |
"Created: / 01-09-2013 / 10:07:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
218 |
! |
|
219 |
||
220 |
searchForSendersOf: selector class: class in: classes whenFoundDo: block |
|
221 |
| searchSelector searchClass | |
|
222 |
||
223 |
searchSelector := selector. |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
224 |
searchClass := self searchForDeclarationOf: selector class: class in: classes. |
2703 | 225 |
|
226 |
classes do: [:cls | |
|
227 |
cls isJavaClass ifTrue: [ |
|
228 |
| matching | |
|
229 |
||
230 |
matching := Set new. |
|
231 |
"/ Quickly scan constant pool without need of analyzing |
|
232 |
"/ each method... |
|
233 |
cls constantPool do:[:ref| |
|
234 |
ref isJavaMethodRef ifTrue:[ |
|
235 |
(ref selector == searchSelector and:[ JavaVM canCast: ref classRef javaClass to: searchClass]) ifTrue:[ |
|
236 |
matching add: ref. |
|
237 |
] |
|
238 |
] |
|
239 |
]. |
|
240 |
matching notEmpty ifTrue:[ |
|
241 |
cls methodDictionary keysAndValuesDo:[:selector :method| |
|
242 |
(method analyzer methodsInvoked includesAny: matching) ifTrue:[ |
|
243 |
block value: method |
|
244 |
] |
|
245 |
] |
|
246 |
] |
|
247 |
] |
|
248 |
] |
|
249 |
||
250 |
"Created: / 01-09-2013 / 03:11:12 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2708
648286432b9a
More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2703
diff
changeset
|
251 |
"Modified: / 05-09-2013 / 13:10:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2703 | 252 |
! ! |
253 |