1017 "Modified: / 29.7.1998 / 11:29:16 / cg" |
1017 "Modified: / 29.7.1998 / 11:29:16 / cg" |
1018 "Modified: / 22.9.1999 / 12:33:47 / stefan" |
1018 "Modified: / 22.9.1999 / 12:33:47 / stefan" |
1019 ! |
1019 ! |
1020 |
1020 |
1021 generateCodeFrom:aListOfSelectors in:aClass do:aBlock |
1021 generateCodeFrom:aListOfSelectors in:aClass do:aBlock |
|
1022 |realSelectors redefCondition redefMessage| |
|
1023 |
|
1024 realSelectors := aListOfSelectors select:[:sel | sel isArray not]. |
1022 |
1025 |
1023 self class redefineAspectMethods ifTrue:[ |
1026 self class redefineAspectMethods ifTrue:[ |
1024 aListOfSelectors do:[:aSelector| |
1027 redefCondition := [:cls :sel | (cls includesSelector:sel) not]. |
1025 (aSelector isArray or:[aClass includesSelector:aSelector]) ifFalse:[ |
1028 redefMessage := ' skipped - already implemented in the class'. |
1026 aBlock value:aSelector asSymbol |
|
1027 ] ifTrue:[ |
|
1028 Transcript showCR:'#' , aSelector , ' skipped - already implemented in the class' |
|
1029 ] |
|
1030 ] |
|
1031 ] ifFalse:[ |
1029 ] ifFalse:[ |
1032 aListOfSelectors do:[:aSelector| |
1030 redefCondition := [:cls :sel | (cls canUnderstand:sel) not]. |
1033 aSelector isArray ifFalse:[ |
1031 redefMessage := ' skipped - already implemented in the class (or superclass)'. |
1034 (aClass canUnderstand:aSelector) ifFalse:[ |
1032 ]. |
1035 aBlock value:aSelector asSymbol |
1033 |
1036 ] ifTrue:[ |
1034 realSelectors do:[:aSelector| |
1037 Transcript showCR:'#' , aSelector , ' skipped - already implemented in the class (or superclass)' |
1035 (redefCondition value:aClass value:aSelector) ifTrue:[ |
1038 ] |
1036 aBlock value:aSelector asSymbol |
1039 ] |
1037 ] ifFalse:[ |
|
1038 Transcript showCR:('#' , aSelector , redefMessage) |
1040 ] |
1039 ] |
1041 ] |
1040 ] |
1042 ! |
1041 ! |
1043 |
1042 |
1044 generateHookMethodFor:selectorSpec comment:commentWhen note:noteOrNil defaultCode:defaultCode inClass:targetClass |
1043 generateHookMethodFor:selectorSpec comment:commentWhen note:noteOrNil defaultCode:defaultCode inClass:targetClass |