Annotation.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 24223 3d930eb1a7ae
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
     1
"{ Encoding: utf8 }"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
     2
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
     3
"
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
     4
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
     5
              All Rights Reserved
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
     6
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
     7
Permission is hereby granted, free of charge, to any person
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
     8
obtaining a copy of this software and associated documentation
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
     9
files (the 'Software'), to deal in the Software without
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    10
restriction, including without limitation the rights to use,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    11
copy, modify, merge, publish, distribute, sublicense, and/or sell
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    12
copies of the Software, and to permit persons to whom the
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    13
Software is furnished to do so, subject to the following
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    14
conditions:
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    15
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    16
The above copyright notice and this permission notice shall be
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    17
included in all copies or substantial portions of the Software.
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    18
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    19
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    20
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    21
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    22
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    23
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    24
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    25
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    26
OTHER DEALINGS IN THE SOFTWARE.
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    27
"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    28
"{ Package: 'stx:libbasic' }"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    29
17300
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
    30
"{ NameSpace: Smalltalk }"
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
    31
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    32
Object subclass:#Annotation
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
    33
	instanceVariableNames:'key arguments'
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    34
	classVariableNames:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    35
	poolDictionaries:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    36
	category:'Kernel-Extensions'
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    37
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    38
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    39
Annotation subclass:#JavaScriptSelector
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    40
	instanceVariableNames:''
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    41
	classVariableNames:'CachedAnnotatedMethods'
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    42
	poolDictionaries:''
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    43
	privateIn:Annotation
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    44
!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
    45
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    46
Annotation subclass:#NameSpace
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
    47
	instanceVariableNames:''
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    48
	classVariableNames:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    49
	poolDictionaries:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    50
	privateIn:Annotation
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    51
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    52
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    53
Annotation subclass:#Resource
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
    54
	instanceVariableNames:''
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
    55
	classVariableNames:'SharedSimpleResources'
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    56
	poolDictionaries:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    57
	privateIn:Annotation
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    58
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    59
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    60
Annotation subclass:#Unknown
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
    61
	instanceVariableNames:'method'
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    62
	classVariableNames:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    63
	poolDictionaries:''
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    64
	privateIn:Annotation
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    65
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    66
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    67
!Annotation class methodsFor:'documentation'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    68
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    69
copyright
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    70
"
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    71
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    72
              All Rights Reserved
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    73
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    74
Permission is hereby granted, free of charge, to any person
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    75
obtaining a copy of this software and associated documentation
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    76
files (the 'Software'), to deal in the Software without
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    77
restriction, including without limitation the rights to use,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    78
copy, modify, merge, publish, distribute, sublicense, and/or sell
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    79
copies of the Software, and to permit persons to whom the
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    80
Software is furnished to do so, subject to the following
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    81
conditions:
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    82
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    83
The above copyright notice and this permission notice shall be
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    84
included in all copies or substantial portions of the Software.
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    85
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    86
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    87
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    88
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    89
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    90
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    91
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    92
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
    93
OTHER DEALINGS IN THE SOFTWARE.
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
    94
"
14430
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
    95
!
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
    96
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
    97
documentation
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
    98
"
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
    99
    I represent an occurrence of a pragma in a compiled method.  
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   100
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   101
    A pragma is a literal message pattern that occurs between angle brackets 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   102
    at the start of a method before or after any temporaries.  
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   103
14430
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   104
    A common example is the primitive pragma:
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   105
        <primitive: 123 errorCode: 'errorCode'>
14447
20f864eaec94 comment/format in: #documentation
Claus Gittinger <cg@exept.de>
parents: 14430
diff changeset
   106
    but you can add your own and use them as metadata attached to a method.  
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   107
14447
20f864eaec94 comment/format in: #documentation
Claus Gittinger <cg@exept.de>
parents: 14430
diff changeset
   108
    Because pragmas are messages one can browse senders and implementors and perform them.  
20f864eaec94 comment/format in: #documentation
Claus Gittinger <cg@exept.de>
parents: 14430
diff changeset
   109
    One can query a method for its pragmas by sending it the pragmas message, which answers an Array of instances of me, 
14430
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   110
    one for each pragma in the method.
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   111
    I can provide information about the defining class, method, its selector, 
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   112
    as well as the information about the pragma keyword and its arguments. See the two 'accessing' protocols for details. 
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   113
    'accessing-method' provides information about the method the pragma is found in, 
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   114
    while 'accessing-pragma' is about the pragma itself.
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   115
    Instances are retrieved using one of the pragma search methods of the 'finding' protocol on the class side.
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   116
14430
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   117
    To browse all methods with pragmas in the system evaluate
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   118
            SystemBrowser default browseAllSelect: [:m| m pragmas notEmpty] 
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   119
        or: 
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   120
            Smalltalk browseAllSelect: [:m| m pragmas notEmpty]
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   121
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   122
    (in Squeak/Pharo): to browse all nonprimitive methods with pragmas evaluate
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   123
        SystemBrowser default browseAllSelect: [:m| m primitive isZero and: [m pragmas notEmpty]]
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   124
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   125
    knownPragmas
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   126
        context flagging:
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   127
            <context: #return>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   128
                tells the compiler that this context will be returned through
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   129
                via 'thisContext sender ... sender return' from a lower context.
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   130
                The compiler's will create a returnable context
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   131
                (i.e. prevent context optimizations/eliminations)
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   132
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   133
        exception handling:    
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   134
            <exception: #handle> 
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   135
                marks contexts as exception handlers.
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   136
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   137
            <exception: #unwind>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   138
                marks contexts which contain unwind actions
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   139
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   140
            <exception: #raise>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   141
                marks contexts which raise an exception
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   142
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   143
        misc:        
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   144
            <resource: #skipInDebuggersWalkBack>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   145
                will not be shown in the debugger
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   146
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   147
            <resource: #style (...)>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   148
                affected by style sheet
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   149
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   150
            <resource: #obsolete>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   151
                marks obsolete methods
22029
15b623368482 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22022
diff changeset
   152
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   153
            <modifier: #super> 
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   154
                must be called if redefined i.e. redefiners MUST do a super-send
22021
fe6f188d987e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 21381
diff changeset
   155
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   156
            <inspector2Tab>     
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   157
            <postLoad>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   158
            <swizzle: selector>
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   159
22030
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   160
            <category: '...'>
0d0851bf7815 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22029
diff changeset
   161
                GNU-smalltalk's way of defining method categories
14430
5ddf9b1dd940 class definition
Claus Gittinger <cg@exept.de>
parents: 14262
diff changeset
   162
"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   163
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   164
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   165
!Annotation class methodsFor:'initialization'!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   166
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   167
initialize
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   168
    "Invoked at system start or when the class is dynamically loaded."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   169
13670
ef1e6435c43d changed: #initialize
Claus Gittinger <cg@exept.de>
parents: 13663
diff changeset
   170
    Smalltalk at:#Pragma put:self.
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   171
13670
ef1e6435c43d changed: #initialize
Claus Gittinger <cg@exept.de>
parents: 13663
diff changeset
   172
    "Modified: / 09-09-2011 / 07:16:26 / cg"
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   173
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   174
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   175
!Annotation class methodsFor:'instance creation'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   176
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   177
javaScript:aSymbolOrString
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   178
    ^ Annotation::JavaScriptSelector javaScriptSelector:aSymbolOrString
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   179
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   180
    "Created: / 29-08-2018 / 10:17:40 / Claus Gittinger"
13625
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   181
!
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   182
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   183
nameSpace:aString
14262
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   184
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   185
    ^Annotation::NameSpace nameSpaceName:aString
14262
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   186
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   187
    "Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   188
    "Created: / 26-07-2012 / 23:05:28 / cg"
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   189
    "Modified (format): / 29-07-2018 / 14:55:44 / Claus Gittinger"
14262
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   190
!
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   191
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   192
namespace: aString
14262
221c880722b0 added: #nameSpace:
Claus Gittinger <cg@exept.de>
parents: 14254
diff changeset
   193
    <resource: #obsolete>
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   194
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   195
    ^ self nameSpace:aString
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   196
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   197
    "Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   198
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   199
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   200
resource:type
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   201
    "resource method - returns menu, spec or image,
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   202
     or accesses/uses the viewStyle"
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   203
     
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   204
    ^Annotation::Resource type:type value:nil
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   205
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   206
    "Created: / 16-07-2010 / 11:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   207
    "Modified (comment): / 16-07-2017 / 13:23:47 / cg"
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   208
    "Modified (format): / 29-07-2018 / 14:55:50 / Claus Gittinger"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   209
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   210
18751
be7fcd0a3f23 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 18432
diff changeset
   211
resource:type values:value 
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   212
    "resource method - returns menu, spec or image,
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   213
     or accesses/uses the viewStyle"
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   214
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   215
    ^ Annotation::Resource type:type value:value
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   216
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   217
    "Created: / 16-07-2010 / 11:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   218
    "Modified (comment): / 16-07-2017 / 13:23:53 / cg"
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   219
    "Modified: / 29-07-2018 / 14:50:49 / Claus Gittinger"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   220
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   221
16134
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   222
!Annotation class methodsFor:'finding'!
14500
f5e4720f7fb6 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14447
diff changeset
   223
17645
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   224
allInMethod: aMethod
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   225
    "VisualWorks compatibility.
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   226
     Answer a collection of all pragmas found in the given method"
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   227
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   228
    ^ aMethod annotations
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   229
!
7f53208c3718 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17300
diff changeset
   230
16134
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   231
allNamed:aSymbol
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   232
    "Answer a collection of all pragmas found in all methods of all classes whose keyword is aSymbol."
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   233
        
19820
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   234
    ^ Array 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   235
        streamContents: [ :stream |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   236
            Smalltalk allClassesDo:[:eachClass |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   237
                self withPragmasIn: eachClass do: [ :pragma |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   238
                    pragma keyword = aSymbol ifTrue: [ 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   239
                        stream nextPut: pragma 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   240
                    ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   241
                ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   242
            ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   243
        ].
16134
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   244
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   245
    "
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   246
     Annotation allNamed:'worldMenu'
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   247
    "
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   248
!
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   249
19820
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   250
allNamed:aSymbol from:aSubClass to:aSuperClass
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   251
    "Answer a collection of all pragmas found in methods of all classes 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   252
     between aSubClass and aSuperClass (inclusive) whose keyword is aSymbol."
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   253
    
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   254
    ^ Array 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   255
        streamContents:[:stream |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   256
            aSubClass withAllSuperclassesDo:[:class |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   257
                self withPragmasIn:class do:[:pragma |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   258
                    pragma keyword = aSymbol ifTrue: [ 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   259
                        stream nextPut: pragma 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   260
                    ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   261
                ].
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   262
                aSuperClass = class ifTrue: [ 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   263
                    ^ stream contents 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   264
                ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   265
            ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   266
        ].
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   267
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   268
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   269
allNamed: aSymbol from: aSubClass to: aSuperClass sortedByArgument: anInteger
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   270
	"Answer a collection of all pragmas found in methods of all classes between aSubClass and aSuperClass (inclusive) whose keyword is aSymbol, sorted according to argument anInteger."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   271
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   272
	^ self allNamed: aSymbol from: aSubClass to: aSuperClass sortedUsing: [ :a :b | (a argumentAt: anInteger) < (b argumentAt: anInteger) ].
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   273
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   274
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   275
allNamed: aSymbol from: aSubClass to: aSuperClass sortedUsing: aSortBlock
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   276
	"Answer a collection of all pragmas found in methods of all classes between aSubClass and aSuperClass (inclusive) whose keyword is aSymbol, sorted according to aSortBlock."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   277
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   278
	^ (self allNamed: aSymbol from: aSubClass to: aSuperClass) sort: aSortBlock.
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   279
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   280
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   281
allNamed: aSymbol in: aClass
19820
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   282
    "Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol."
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   283
    
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   284
    ^ Array 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   285
        streamContents: [ :stream |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   286
            self withPragmasIn: aClass do: [ :pragma |
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   287
                pragma keyword = aSymbol ifTrue: [ 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   288
                    stream nextPut: pragma 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   289
                ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   290
            ] 
18ad092be48d #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18751
diff changeset
   291
        ].
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   292
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   293
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   294
allNamed: aSymbol in: aClass sortedByArgument: anInteger
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   295
	"Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol, sorted according to argument anInteger."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   296
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   297
	^ self allNamed: aSymbol in: aClass sortedUsing: [ :a :b | (a argumentAt: anInteger) < (b argumentAt: anInteger) ].
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   298
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   299
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   300
allNamed: aSymbol in: aClass sortedUsing: aSortBlock
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   301
	"Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol, sorted according to aSortBlock."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   302
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   303
	^ (self allNamed: aSymbol in: aClass) sort: aSortBlock.
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   304
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   305
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   306
!Annotation class methodsFor:'instance creation - basic'!
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   307
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   308
for:aMethod selector:aSelector arguments:anArray 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   309
    ^ (self new)
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   310
        setMethod:aMethod;
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   311
        setKeyword:aSelector;
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   312
        setArguments:anArray;
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   313
        yourself
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   314
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   315
    "Modified (format): / 29-08-2018 / 10:32:45 / Claus Gittinger"
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   316
!
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   317
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   318
key:key arguments:arguments 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   319
    "/ cg: do not react on all those methods inherited from Object (such as inline:)
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   320
    "/ (self respondsTo: key)
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   321
    
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   322
    (self class includesSelector:key) ifTrue:[
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   323
        ^ self perform:key withArguments:arguments
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   324
    ].
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   325
    ^ Annotation::Unknown key:key arguments:arguments
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   326
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   327
    "Created: / 19-05-2010 / 16:47:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   328
    "Modified: / 02-07-2010 / 16:22:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   329
    "Modified (format): / 16-07-2017 / 13:23:00 / cg"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   330
    "Modified: / 29-07-2018 / 14:52:13 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   331
    "Modified (format): / 29-08-2018 / 10:32:38 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   332
!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   333
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   334
keyword:aSymbol arguments:anArray 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   335
    ^ (self new)
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   336
        setKeyword:aSymbol;
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   337
        setArguments:anArray;
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   338
        yourself.
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   339
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   340
    "Modified (format): / 29-08-2018 / 10:32:31 / Claus Gittinger"
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   341
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   342
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   343
method:method key:key arguments:arguments
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   344
    "/ cg: do not react on all those methods inherited from Object (such as inline:)
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   345
    "/ (self respondsTo: key)
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   346
    (self class includesSelector:key) ifTrue: [
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   347
        ^ self perform:key withArguments:arguments
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   348
    ].
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   349
    ^ Annotation::Unknown new method:method key:key arguments:arguments
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   350
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   351
    "Created: / 19-05-2010 / 16:47:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   352
    "Modified: / 02-07-2010 / 16:22:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   353
    "Created: / 05-09-2011 / 04:39:17 / cg"
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   354
    "Modified (format): / 16-07-2017 / 13:22:53 / cg"
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   355
    "Modified: / 29-08-2018 / 10:32:17 / Claus Gittinger"
22022
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   356
! !
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   357
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   358
!Annotation class methodsFor:'private'!
1049173dbe23 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22021
diff changeset
   359
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   360
withPragmasIn:aClass do:aBlock 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   361
    aClass 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   362
        selectorsAndMethodsDo:[:selector :method | method annotationsDo:aBlock ].
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   363
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   364
    "Modified: / 20-08-2011 / 21:31:49 / cg"
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   365
    "Modified (format): / 29-08-2018 / 10:32:58 / Claus Gittinger"
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   366
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   367
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   368
!Annotation methodsFor:'accessing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   369
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   370
arguments
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   371
    ^ arguments
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   372
!
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   373
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   374
first
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   375
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   376
    ^self key
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   377
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   378
    "Created: / 10-07-2010 / 21:38:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   379
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   380
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   381
key
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   382
    ^ key
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   383
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   384
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   385
!Annotation methodsFor:'accessing-method'!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   386
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   387
method
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   388
        "Answer the compiled-method containing the pragma."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   389
        
22701
8940df382f2f #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 22030
diff changeset
   390
        self halt:'unimplemented'
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   391
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   392
    "Modified: / 21-08-2011 / 12:44:37 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   393
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   394
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   395
methodClass
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   396
        "Answer the class of the method containing the pragma."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   397
        
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   398
        ^ self method methodClass
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   399
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   400
    "Modified: / 21-08-2011 / 12:44:47 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   401
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   402
17694
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   403
methodSelector
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   404
        "Answer the selector of the method containing the pragma.
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   405
         Added to not confuse this with the selector (i.e. key) of the pragma's message pattern."
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   406
        
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   407
        ^ self method selector
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   408
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   409
    "Modified: / 21-08-2011 / 12:45:20 / cg"
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   410
!
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   411
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   412
selector
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   413
        "Answer the selector of the method containing the pragma.
17694
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   414
         Do not confuse this with the selector (i.e. key) of the pragma's message pattern.
945674595bd0 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 17645
diff changeset
   415
         (use methodSelector, to make this clear)"
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   416
        
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   417
        ^ self method selector
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   418
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   419
    "Modified: / 21-08-2011 / 12:45:20 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   420
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   421
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   422
!Annotation methodsFor:'accessing-pragma'!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   423
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   424
argumentAt: anInteger
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   425
	"Answer one of the arguments of the pragma."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   426
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   427
	^ self arguments at: anInteger.
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   428
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   429
24223
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   430
argumentAt:anInteger ifAbsent:exceptionValue
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   431
    "Answer one of the arguments of the pragma or exceptionValue's value if not present."
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   432
        
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   433
    ^ self arguments at: anInteger ifAbsent:exceptionValue.
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   434
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   435
    "Created: / 29-05-2019 / 00:46:47 / Claus Gittinger"
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   436
!
3d930eb1a7ae #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23315
diff changeset
   437
18432
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   438
argumentCount
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   439
    "Answer the number of arguments in the pragma."
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   440
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   441
    ^ self arguments size.
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   442
!
825c5dad53ac class: Annotation
Stefan Vogel <sv@exept.de>
parents: 17694
diff changeset
   443
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   444
message
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   445
	"Answer the message of the receiving pragma."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   446
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   447
	^ Message selector: self keyword arguments: self arguments. 
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   448
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   449
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   450
numArgs
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   451
	"Answer the number of arguments in the pragma."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   452
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   453
	^ self arguments size.
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   454
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   455
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   456
!Annotation methodsFor:'comparing'!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   457
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   458
analogousCodeTo: anObject 
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   459
        ^self class == anObject class
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   460
          and: [self keyword == anObject keyword
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   461
          and: [self arguments = anObject arguments]]
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   462
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   463
    "Modified: / 21-08-2011 / 12:45:37 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   464
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   465
13625
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   466
!Annotation methodsFor:'compatibility - squeak'!
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   467
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   468
keyword
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   469
    ^ self key
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   470
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   471
    "Created: / 05-09-2011 / 04:34:26 / cg"
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   472
! !
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   473
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   474
!Annotation methodsFor:'initialization'!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   475
17300
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   476
key:keyArg
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   477
    key := keyArg.
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   478
!
bb7909627f40 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16264
diff changeset
   479
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   480
key:keyArg arguments:argumentsArg 
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   481
    key := keyArg.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   482
    arguments := argumentsArg.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   483
!
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   484
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   485
setArguments: anArray
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   486
    arguments := anArray
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   487
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   488
    "Modified: / 21-08-2011 / 12:45:51 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   489
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   490
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   491
setKeyword: aSymbol
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   492
    key := aSymbol
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   493
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   494
    "Modified: / 21-08-2011 / 12:46:06 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   495
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   496
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   497
setMethod: aCompiledMethod
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   498
        self subclassResponsibility
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   499
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   500
    "Modified: / 21-08-2011 / 12:46:16 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   501
! !
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   502
23225
5449dbd3cc02 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22701
diff changeset
   503
!Annotation methodsFor:'printing & storing'!
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   504
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   505
printOn:aStream
20217
b4dbf7fe7b1e #OTHER by mawalch
mawalch
parents: 19820
diff changeset
   506
    "append a printed representation of the receiver to the argument, aStream"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   507
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   508
    self storeOn:aStream.
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   509
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   510
    "Modified: / 19-05-2010 / 16:25:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23225
5449dbd3cc02 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 22701
diff changeset
   511
!
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   512
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   513
storeOn:aStream
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   514
    "superclass Annotation says that I am responsible to implement this method"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   515
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   516
    aStream nextPutAll: '(Annotation key: '.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   517
    key storeOn: aStream.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   518
    aStream nextPutAll: ' arguments: '.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   519
    arguments storeOn: aStream.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   520
    aStream nextPut: $).
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   521
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   522
    "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   523
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   524
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   525
!Annotation methodsFor:'processing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   526
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   527
annotatesClass: aClass
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   528
    "Nothing to do"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   529
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   530
    "Created: / 20-05-2010 / 11:15:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   531
    "Modified: / 29-08-2018 / 10:12:21 / Claus Gittinger"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   532
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   533
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   534
annotatesMethod:aMethod
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   535
    "Nothing to do"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   536
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   537
    "Created: / 20-05-2010 / 11:15:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   538
    "Modified: / 29-08-2018 / 10:12:49 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   539
!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   540
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   541
installedInMethod:aMethod
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   542
    "called right after being added to a method's annotations.
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   543
     Can be redefined in concrete annotation classes to do something with the
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   544
     method or class"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   545
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   546
    "/ intentionally left blank here
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   547
    ^ self
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   548
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   549
    "Created: / 29-08-2018 / 10:30:39 / Claus Gittinger"
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   550
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   551
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   552
sendTo: anObject
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   553
	"Send the pragma keyword together with its arguments to anObject and answer the result."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   554
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   555
	^ anObject perform: self keyword withArguments: self arguments
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   556
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   557
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   558
withArgumentsDo: aBlock
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   559
	"Pass the arguments of the receiving pragma into aBlock and answer the result."
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   560
	
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   561
	^ aBlock valueWithArguments: self arguments
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   562
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   563
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   564
!Annotation methodsFor:'queries'!
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   565
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   566
refersToLiteral: anObject
16264
cf4db8ac808f class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16134
diff changeset
   567
    "return true if the receiver or recursively any array element in the
cf4db8ac808f class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16134
diff changeset
   568
     receiver refers to aLiteral (i.e. a deep search)"
cf4db8ac808f class: Annotation
Claus Gittinger <cg@exept.de>
parents: 16134
diff changeset
   569
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   570
    (anObject == key) ifTrue:[ ^ true ].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   571
    (anObject == arguments) ifTrue:[ ^ true ].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   572
    arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   573
    ^ false
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   574
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   575
    "Created: / 26-07-2012 / 15:57:43 / cg"
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   576
!
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   577
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   578
refersToLiteralMatching: aMatchString
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   579
    (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   580
    (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   581
    arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   582
    ^ false
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   583
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   584
    "Created: / 26-07-2012 / 16:00:58 / cg"
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   585
! !
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   586
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   587
!Annotation methodsFor:'testing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   588
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   589
hasLiteral: aLiteral
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   590
        ^self keyword == aLiteral 
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   591
           or: [self arguments hasLiteral: aLiteral]
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   592
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   593
    "Modified: / 21-08-2011 / 12:46:44 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   594
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   595
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   596
hasLiteralSuchThat: aBlock
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   597
        "Answer true if litBlock returns true for any literal in the receiver, even if embedded in further array structure.
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   598
         This method is only intended for private use by CompiledMethod hasLiteralSuchThat:"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   599
        ^(aBlock value: self keyword)
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   600
           or: [self arguments hasLiteralSuchThat: aBlock]
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   601
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   602
    "Modified: / 21-08-2011 / 12:46:31 / cg"
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   603
!
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   604
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   605
isJavaScriptSelector
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   606
    "true if this is a (wellknown) javascript selector annotation"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   607
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   608
    ^ false
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   609
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   610
    "Created: / 29-08-2018 / 10:10:56 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   611
!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   612
14212
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   613
isResource
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   614
    "true if this is a (wellknown) resource annotation"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   615
    
14212
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   616
    ^ false
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   617
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   618
    "Created: / 18-07-2012 / 19:28:39 / cg"
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   619
    "Modified (comment): / 29-08-2018 / 10:13:27 / Claus Gittinger"
14212
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   620
!
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   621
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   622
isUnknown
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   623
    "true if this is a (non-wellknown) other annotation"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   624
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   625
    ^ false
23315
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   626
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   627
    "Modified (comment): / 29-08-2018 / 10:13:50 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   628
! !
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   629
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   630
!Annotation::JavaScriptSelector class methodsFor:'documentation'!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   631
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   632
documentation
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   633
"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   634
    I define an alternative selector to be installed in the class' 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   635
    method dictionary, in order to allow for regular javaScript function names
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   636
    to be used (in addition to smalltalk names).
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   637
    For example, a smalltalk method named 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   638
        foo:arg1 bar:arg2 baz:arg3 
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   639
    could be annotated as foo/3 in order to be seen and callable in javascript as
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   640
        foo(arg1, arg2, arg3)
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   641
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   642
    [author:]
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   643
        Claus Gittinger
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   644
"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   645
! !
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   646
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   647
!Annotation::JavaScriptSelector methodsFor:'accessing'!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   648
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   649
javaScriptSelector
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   650
    ^ arguments at:1
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   651
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   652
    "Created: / 29-08-2018 / 10:16:04 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   653
!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   654
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   655
javaScriptSelector:aSymbolOrString
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   656
    key := #'javaScript:'.
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   657
    arguments := Array with:aSymbolOrString asSymbol.
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   658
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   659
    "Created: / 29-08-2018 / 10:16:54 / Claus Gittinger"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   660
! !
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   661
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   662
!Annotation::JavaScriptSelector methodsFor:'testing'!
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   663
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   664
isJavaScriptSelector
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   665
    "true if this is a (wellknown) javascript selector annotation"
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   666
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   667
    ^ true
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   668
40e61e9592e9 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 23242
diff changeset
   669
    "Created: / 29-08-2018 / 10:15:07 / Claus Gittinger"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   670
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   671
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   672
!Annotation::NameSpace class methodsFor:'instance creation'!
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   673
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   674
nameSpaceName:aString
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   675
    ^ self new nameSpaceName:aString
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   676
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   677
    "Created: / 29-07-2018 / 14:51:26 / Claus Gittinger"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   678
! !
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   679
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   680
!Annotation::NameSpace methodsFor:'accessing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   681
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   682
key
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   683
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   684
    ^#namespace:
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   685
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   686
    "Created: / 19-05-2010 / 16:23:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   687
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   688
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   689
nameSpace
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   690
    ^ arguments first
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   691
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   692
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   693
nameSpace:something
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   694
    arguments := Array with:something.
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   695
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   696
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   697
!Annotation::NameSpace methodsFor:'initialization'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   698
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   699
nameSpaceName: aString
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   700
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   701
    self nameSpace: (NameSpace name: aString)
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   702
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   703
    "Created: / 19-05-2010 / 16:02:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   704
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   705
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   706
!Annotation::NameSpace methodsFor:'printing & storing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   707
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   708
storeOn:aStream
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   709
    "superclass Annotation says that I am responsible to implement this method"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   710
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   711
    aStream nextPutAll: '(Annotation namespace: '.
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   712
    self nameSpace name storeOn: aStream.
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   713
    aStream nextPut:$)
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   714
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   715
    "Modified: / 19-05-2010 / 16:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   716
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   717
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   718
!Annotation::NameSpace methodsFor:'processing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   719
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   720
annotatesMethod:aMethod
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   721
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   722
    aMethod lookupObject: NamespaceAwareLookup instance
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   723
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   724
    "Modified: / 20-05-2010 / 11:18:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   725
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   726
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   727
!Annotation::Resource class methodsFor:'documentation'!
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   728
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   729
documentation
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   730
"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   731
    documentation to be added.
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   732
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   733
    [author:]
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   734
        Claus Gittinger
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   735
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   736
    [instance variables:]
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   737
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   738
    [class variables:]
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   739
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   740
    [see also:]
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   741
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   742
"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   743
! !
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   744
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   745
!Annotation::Resource class methodsFor:'instance creation'!
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   746
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   747
type:type value:value
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   748
    (value isNil) ifTrue:[
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   749
        SharedSimpleResources isNil ifTrue:[
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   750
            SharedSimpleResources := IdentityDictionary new.
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   751
        ].    
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   752
        ^ SharedSimpleResources at:type ifAbsentPut:[self new type:type value:value]
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   753
    ].    
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   754
    ^ self new type:type value:value
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   755
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   756
    "Created: / 29-07-2018 / 14:50:33 / Claus Gittinger"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   757
! !
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   758
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   759
!Annotation::Resource methodsFor:'accessing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   760
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   761
type
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   762
    ^ arguments at:1
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   763
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   764
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   765
type:typeArg value:valueArg
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   766
    valueArg isNil ifTrue:[
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   767
        key := #'resource:'.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   768
        arguments := Array with:typeArg.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   769
    ] ifFalse:[
18751
be7fcd0a3f23 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 18432
diff changeset
   770
        key := #'resource:values:'.
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   771
        arguments := Array with:typeArg with:valueArg.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   772
    ].
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   773
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   774
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   775
value
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   776
    arguments size > 1 ifTrue:[
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   777
        ^ arguments at:2
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   778
    ].
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   779
    ^ nil
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   780
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   781
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   782
!Annotation::Resource methodsFor:'printing & storing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   783
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   784
storeOn:aStream
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   785
    aStream nextPutAll: '(Annotation resource: '.
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   786
    self type storeOn: aStream.
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   787
    self value notNil ifTrue: [
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   788
        aStream nextPutAll: ' value: '.
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   789
        self value storeOn: aStream
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   790
    ].    
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   791
    aStream nextPut:$)
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   792
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   793
    "Modified: / 16-07-2010 / 11:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13837
Claus Gittinger <cg@exept.de>
parents: 13670
diff changeset
   794
    "Modified: / 29-11-2011 / 11:19:06 / cg"
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   795
    "Modified (format): / 26-07-2012 / 15:59:14 / cg"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   796
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   797
14212
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   798
!Annotation::Resource methodsFor:'testing'!
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   799
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   800
isResource
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   801
    ^ true
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   802
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   803
    "Created: / 18-07-2012 / 19:28:46 / cg"
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   804
! !
eab11c5a1330 added: #isResource
Claus Gittinger <cg@exept.de>
parents: 13837
diff changeset
   805
23242
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   806
!Annotation::Unknown class methodsFor:'instance creation'!
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   807
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   808
key:key arguments:arguments
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   809
    ^ self new key:key arguments:arguments
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   810
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   811
    "Created: / 29-07-2018 / 14:52:00 / Claus Gittinger"
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   812
! !
7f3b0c84697e #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 23225
diff changeset
   813
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   814
!Annotation::Unknown methodsFor:'accessing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   815
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   816
method
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   817
    ^ method
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   818
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   819
    "Created: / 05-09-2011 / 04:38:33 / cg"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   820
!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   821
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   822
setMethod:aMethod
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   823
    method := aMethod
13625
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   824
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   825
    "Created: / 05-09-2011 / 04:38:33 / cg"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   826
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   827
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   828
!Annotation::Unknown methodsFor:'initialization'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   829
13625
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   830
method:methodArg key:keyArg arguments:argumentsArg
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   831
    method := methodArg.
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   832
    key := keyArg.
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   833
    arguments := argumentsArg.
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   834
fffe5dbb451b added: #method:key:arguments:
Claus Gittinger <cg@exept.de>
parents: 13613
diff changeset
   835
    "Created: / 05-09-2011 / 04:39:50 / cg"
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   836
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   837
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   838
!Annotation::Unknown methodsFor:'queries'!
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   839
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   840
refersToLiteral: anObject
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   841
    (anObject == method) ifTrue:[ ^ true ].
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   842
    ^ super refersToLiteral: anObject
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   843
!
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   844
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   845
refersToLiteralMatching: aMatchString
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   846
    (method isSymbol and:[aMatchString match:method])ifTrue:[ ^ true ].
14501
b54655afc099 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14500
diff changeset
   847
    ^ super refersToLiteralMatching: aMatchString
14254
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   848
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   849
    "Created: / 26-07-2012 / 16:00:58 / cg"
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   850
! !
d4aab2fd49db fixed: #refersToLiteral:
Claus Gittinger <cg@exept.de>
parents: 14212
diff changeset
   851
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   852
!Annotation::Unknown methodsFor:'testing'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   853
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   854
isUnknown
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   855
    ^ true
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   856
! !
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   857
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   858
!Annotation class methodsFor:'documentation'!
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   859
13670
ef1e6435c43d changed: #initialize
Claus Gittinger <cg@exept.de>
parents: 13663
diff changeset
   860
version
18751
be7fcd0a3f23 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 18432
diff changeset
   861
    ^ '$Header$'
13670
ef1e6435c43d changed: #initialize
Claus Gittinger <cg@exept.de>
parents: 13663
diff changeset
   862
!
ef1e6435c43d changed: #initialize
Claus Gittinger <cg@exept.de>
parents: 13663
diff changeset
   863
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
   864
version_CVS
18751
be7fcd0a3f23 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 18432
diff changeset
   865
    ^ '$Header$'
13479
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
   866
!
d2d9938cf03f changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 13403
diff changeset
   867
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   868
version_SVN
18751
be7fcd0a3f23 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 18432
diff changeset
   869
    ^ '$Id$'
13403
9cdd42752750 added AmbiguousMessage, Annotation, NamespaceAwareLookup
vrany
parents:
diff changeset
   870
! !
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   871
16134
ac05d3f59821 class: Annotation
Claus Gittinger <cg@exept.de>
parents: 14501
diff changeset
   872
13613
f3c2a2ac07a1 Pragma (squeak compatibility)
Claus Gittinger <cg@exept.de>
parents: 13479
diff changeset
   873
Annotation initialize!