Annotation.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 29 Oct 2012 22:07:56 +0000
branchjv
changeset 17976 50c2416f962a
parent 17966 8b5df02e171f
child 17993 956342c369a2
permissions -rw-r--r--
Merged with /trunk (CVS)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
              All Rights Reserved
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 hereby transferred.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
Object subclass:#Annotation
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	instanceVariableNames:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	classVariableNames:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'Kernel-Extensions'
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
Annotation subclass:#NameSpace
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
	instanceVariableNames:'nameSpace'
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
	classVariableNames:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	poolDictionaries:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	privateIn:Annotation
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    28
Annotation subclass:#Resource
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    29
	instanceVariableNames:'type value'
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    30
	classVariableNames:''
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    31
	poolDictionaries:''
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    32
	privateIn:Annotation
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    33
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
    34
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
Annotation subclass:#Unknown
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
    36
	instanceVariableNames:'method key arguments'
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
	classVariableNames:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
	poolDictionaries:''
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
	privateIn:Annotation
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
!Annotation class methodsFor:'documentation'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
copyright
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
 COPYRIGHT (c) 2006 by eXept Software AG
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
              All Rights Reserved
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
 This software is furnished under a license and may be used
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
 only in accordance with the terms of that license and with the
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
 inclusion of the above copyright notice.   This software may not
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
 be provided or otherwise made available to, or used by, any
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
 other person.  No title to or ownership of the software is
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
 hereby transferred.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
"
17976
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    56
!
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    57
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    58
documentation
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    59
"
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    60
    I represent an occurrence of a pragma in a compiled method.  
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    61
    A pragma is a literal message pattern that occurs between angle brackets at the start of a method after any temporaries.  
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    62
    A common example is the primitive pragma:
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    63
        <primitive: 123 errorCode: 'errorCode'>
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    64
    but you can add your own and use them as metadata attached to a method.  
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    65
    Because pragmas are messages one can browse senders and implementors and perform them.  
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    66
    One can query a method for its pragmas by sending it the pragmas message, which answers an Array of instances of me, 
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    67
    one for each pragma in the method.
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    68
    I can provide information about the defining class, method, its selector, 
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    69
    as well as the information about the pragma keyword and its arguments. See the two 'accessing' protocols for details. 
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    70
    'accessing-method' provides information about the method the pragma is found in, 
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    71
    while 'accessing-pragma' is about the pragma itself.
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    72
    Instances are retrieved using one of the pragma search methods of the 'finding' protocol on the class side.
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    73
    To browse all methods with pragmas in the system evaluate
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    74
        SystemNavigation default browseAllSelect: [:m| m pragmas notEmpty] 
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    75
        in ST/X: Smalltalk browseAllSelect: [:m| m pragmas notEmpty]
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    76
    and to browse all nonprimitive methods with pragmas evaluate
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    77
        SystemNavigation default browseAllSelect: [:m| m primitive isZero and: [m pragmas notEmpty]]
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
    78
"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    81
!Annotation class methodsFor:'initialization'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    82
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    83
initialize
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    84
    "Invoked at system start or when the class is dynamically loaded."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    85
17862
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
    86
    Smalltalk at:#Pragma put:self.
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    87
17862
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
    88
    "Modified: / 09-09-2011 / 07:16:26 / cg"
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    89
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    90
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
!Annotation class methodsFor:'instance creation'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    93
for: aMethod selector: aSelector arguments: anArray
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    94
	^self new
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    95
		setMethod: aMethod;
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    96
		setKeyword: aSelector;
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    97
		setArguments: anArray;
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    98
		yourself
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
    99
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   100
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   101
key: key arguments: arguments
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   102
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   103
    ^(self respondsTo: key)
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   104
        ifTrue:
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   105
            [self 
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   106
                perform: key 
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   107
                withArguments: arguments]
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   108
        ifFalse:
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   109
            [Annotation::Unknown new 
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   110
                key: key 
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   111
                arguments: arguments]
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Created: / 19-05-2010 / 16:47:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   114
    "Modified: / 02-07-2010 / 16:22:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   117
method:method key:key arguments:arguments
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   118
17862
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   119
    ^
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   120
    "/ cg: do not react on all those methods inherited from Object (such as inline:)
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   121
    "/ self respondsTo: key)
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   122
    (self class includesSelector:key) 
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   123
        ifTrue:
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   124
            [self 
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   125
                perform: key 
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   126
                withArguments: arguments]
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   127
        ifFalse:
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   128
            [Annotation::Unknown new
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   129
                method: method
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   130
                key: key 
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   131
                arguments: arguments]
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   132
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   133
    "Created: / 19-05-2010 / 16:47:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   134
    "Modified: / 02-07-2010 / 16:22:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   135
    "Created: / 05-09-2011 / 04:39:17 / cg"
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   136
!
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   137
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   138
nameSpace: aString
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   139
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   140
    ^Annotation::NameSpace new nameSpaceName: aString
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   141
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   142
    "Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   143
    "Created: / 26-07-2012 / 23:05:28 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   144
!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   145
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
namespace: aString
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   147
    <resource: #obsolete>
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
    ^Annotation::NameSpace new nameSpaceName: aString
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    "Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   152
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   153
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   154
resource: type
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   155
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   156
    ^Annotation::Resource new type: type
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   157
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   158
    "Created: / 16-07-2010 / 11:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   159
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   160
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   161
resource: type value: value
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   162
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   163
    ^Annotation::Resource new 
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   164
        type: type;
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   165
        value: value
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   166
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   167
    "Created: / 16-07-2010 / 11:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   170
!Annotation class methodsFor:'finding'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   171
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   172
allNamed: aSymbol from: aSubClass to: aSuperClass
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   173
	"Answer a collection of all pragmas found in methods of all classes between aSubClass and aSuperClass (inclusive) whose keyword is aSymbol."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   174
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   175
	^ Array streamContents: [ :stream |
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   176
		aSubClass withAllSuperclassesDo: [ :class |
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   177
			self withPragmasIn: class do:  [ :pragma |
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   178
				pragma keyword = aSymbol
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   179
					ifTrue: [ stream nextPut: pragma ] ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   180
			aSuperClass = class
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   181
				ifTrue: [ ^ stream contents ] ] ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   182
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   183
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   184
allNamed: aSymbol from: aSubClass to: aSuperClass sortedByArgument: anInteger
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   185
	"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."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   186
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   187
	^ self allNamed: aSymbol from: aSubClass to: aSuperClass sortedUsing: [ :a :b | (a argumentAt: anInteger) < (b argumentAt: anInteger) ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   188
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   189
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   190
allNamed: aSymbol from: aSubClass to: aSuperClass sortedUsing: aSortBlock
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   191
	"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."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   192
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   193
	^ (self allNamed: aSymbol from: aSubClass to: aSuperClass) sort: aSortBlock.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   194
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   195
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   196
allNamed: aSymbol in: aClass
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   197
	"Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   198
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   199
	^ Array streamContents: [ :stream |
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   200
		self withPragmasIn: aClass do: [ :pragma |
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   201
			pragma keyword = aSymbol
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   202
				ifTrue: [ stream nextPut: pragma ] ] ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   203
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   204
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   205
allNamed: aSymbol in: aClass sortedByArgument: anInteger
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   206
	"Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol, sorted according to argument anInteger."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   207
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   208
	^ self allNamed: aSymbol in: aClass sortedUsing: [ :a :b | (a argumentAt: anInteger) < (b argumentAt: anInteger) ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   209
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   210
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   211
allNamed: aSymbol in: aClass sortedUsing: aSortBlock
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   212
	"Answer a collection of all pragmas found in methods of aClass whose keyword is aSymbol, sorted according to aSortBlock."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   213
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   214
	^ (self allNamed: aSymbol in: aClass) sort: aSortBlock.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   215
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   216
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   217
!Annotation class methodsFor:'private'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   218
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   219
keyword: aSymbol arguments: anArray
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   220
	^ self new
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   221
		setKeyword: aSymbol;
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   222
		setArguments: anArray;
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   223
		yourself.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   224
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   225
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   226
withPragmasIn: aClass do: aBlock
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   227
        aClass selectorsAndMethodsDo: [ :selector :method | method annotationsDo: aBlock ].
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   228
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   229
    "Modified: / 20-08-2011 / 21:31:49 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   230
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   231
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
!Annotation methodsFor:'accessing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   234
first
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   235
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   236
    ^self key
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   237
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   238
    "Created: / 10-07-2010 / 21:38:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   239
!
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   240
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
key
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   243
    ^self subclassResponsibility
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    "Created: / 19-05-2010 / 16:23:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   246
    "Modified: / 16-07-2010 / 11:29:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   249
!Annotation methodsFor:'accessing-method'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   250
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   251
method
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   252
        "Answer the compiled-method containing the pragma."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   253
        
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   254
        self halt:'inimplemented'
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   255
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   256
    "Modified: / 21-08-2011 / 12:44:37 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   257
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   258
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   259
methodClass
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   260
        "Answer the class of the method containing the pragma."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   261
        
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   262
        ^ self method methodClass
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   263
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   264
    "Modified: / 21-08-2011 / 12:44:47 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   265
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   266
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   267
selector
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   268
        "Answer the selector of the method containing the pragma.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   269
         Do not confuse this with the selector of the pragma's message pattern."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   270
        
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   271
        ^ self method selector
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   272
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   273
    "Modified: / 21-08-2011 / 12:45:20 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   274
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   275
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   276
!Annotation methodsFor:'accessing-pragma'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   277
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   278
argumentAt: anInteger
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   279
	"Answer one of the arguments of the pragma."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   280
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   281
	^ self arguments at: anInteger.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   282
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   283
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   284
arguments
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   285
        "Answer the arguments of the receiving pragma. For a pragma defined as <key1: val1 key2: val2> this will answer #(val1 val2)."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   286
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   287
    self subclassResponsibility
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   288
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   289
    "Modified: / 21-08-2011 / 12:43:54 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   290
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   291
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   292
message
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   293
	"Answer the message of the receiving pragma."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   294
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   295
	^ Message selector: self keyword arguments: self arguments. 
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   296
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   297
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   298
numArgs
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   299
	"Answer the number of arguments in the pragma."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   300
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   301
	^ self arguments size.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   302
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   303
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   304
!Annotation methodsFor:'comparing'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   305
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   306
analogousCodeTo: anObject 
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   307
        ^self class == anObject class
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   308
          and: [self keyword == anObject keyword
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   309
          and: [self arguments = anObject arguments]]
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   310
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   311
    "Modified: / 21-08-2011 / 12:45:37 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   312
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   313
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   314
!Annotation methodsFor:'compatibility - squeak'!
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   315
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   316
keyword
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   317
    ^ self key
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   318
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   319
    "Created: / 05-09-2011 / 04:34:26 / cg"
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   320
! !
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   321
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   322
!Annotation methodsFor:'initialization'!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   323
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   324
setArguments: anArray
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   325
    self subclassResponsibility
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   326
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   327
    "Modified: / 21-08-2011 / 12:45:51 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   328
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   329
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   330
setKeyword: aSymbol
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   331
        self subclassResponsibility
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   332
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   333
    "Modified: / 21-08-2011 / 12:46:06 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   334
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   335
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   336
setMethod: aCompiledMethod
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   337
        self subclassResponsibility
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   338
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   339
    "Modified: / 21-08-2011 / 12:46:16 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   340
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   341
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   342
!Annotation methodsFor:'printing'!
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
printOn:aStream
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    "append a printed representation if the receiver to the argument, aStream"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    self storeOn:aStream.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    "Modified: / 19-05-2010 / 16:25:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   350
! !
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   351
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   352
!Annotation methodsFor:'printing & storing'!
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
storeOn:aStream
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
    self subclassResponsibility
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
    "Created: / 19-05-2010 / 16:26:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
!Annotation methodsFor:'processing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
annotatesClass: aClass
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    ^self subclassResponsibility
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
    "Created: / 20-05-2010 / 11:15:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
annotatesMethod: aMethod
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    ^self subclassResponsibility
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    "Created: / 20-05-2010 / 11:15:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   375
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   376
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   377
sendTo: anObject
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   378
	"Send the pragma keyword together with its arguments to anObject and answer the result."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   379
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   380
	^ anObject perform: self keyword withArguments: self arguments
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   381
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   382
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   383
withArgumentsDo: aBlock
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   384
	"Pass the arguments of the receiving pragma into aBlock and answer the result."
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   385
	
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   386
	^ aBlock valueWithArguments: self arguments
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   389
!Annotation methodsFor:'queries'!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   390
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   391
refersToLiteral: anObject
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   392
    (anObject == self key) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   393
    ^ false
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   394
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   395
    "Created: / 26-07-2012 / 15:58:34 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   396
! !
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   397
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   398
!Annotation methodsFor:'testing'!
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   399
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   400
hasLiteral: aLiteral
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   401
        ^self keyword == aLiteral 
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   402
           or: [self arguments hasLiteral: aLiteral]
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   403
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   404
    "Modified: / 21-08-2011 / 12:46:44 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   405
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   406
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   407
hasLiteralSuchThat: aBlock
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   408
        "Answer true if litBlock returns true for any literal in the receiver, even if embedded in further array structure.
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   409
         This method is only intended for private use by CompiledMethod hasLiteralSuchThat:"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   410
        ^(aBlock value: self keyword)
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   411
           or: [self arguments hasLiteralSuchThat: aBlock]
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   412
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   413
    "Modified: / 21-08-2011 / 12:46:31 / cg"
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   414
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   415
17955
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   416
isResource
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   417
    ^ false
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   418
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   419
    "Created: / 18-07-2012 / 19:28:39 / cg"
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   420
!
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   421
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   422
isUnknown
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   423
    ^ false
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   424
! !
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   425
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
!Annotation::NameSpace methodsFor:'accessing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
key
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
    ^#namespace:
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
    "Created: / 19-05-2010 / 16:23:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
nameSpace
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
    ^ nameSpace
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
nameSpace:something
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
    nameSpace := something.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
!Annotation::NameSpace methodsFor:'initialization'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
nameSpaceName: aString
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
    self nameSpace: (NameSpace name: aString)
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
    "Created: / 19-05-2010 / 16:02:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
!Annotation::NameSpace methodsFor:'printing & storing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
storeOn:aStream
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    "superclass Annotation says that I am responsible to implement this method"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    aStream nextPutAll: '(Annotation namespace: '.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    nameSpace name storeOn: aStream.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
    aStream nextPut:$)
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
    "Modified: / 19-05-2010 / 16:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
!Annotation::NameSpace methodsFor:'processing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
annotatesClass:aClass
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
    "Nothing to do"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    "Modified: / 20-05-2010 / 11:16:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
annotatesMethod:aMethod
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
    aMethod lookupObject: NamespaceAwareLookup instance
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    "Modified: / 20-05-2010 / 11:18:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   480
!Annotation::Resource methodsFor:'accessing'!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   481
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   482
key
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   483
    "superclass Annotation says that I am responsible to implement this method"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   484
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   485
    ^value 
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   486
        ifNil:[#resource:]
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   487
        ifNotNil:[#resource:value:]
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   488
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   489
    "Modified: / 16-07-2010 / 11:30:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   490
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   491
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   492
type
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   493
    ^ type
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   494
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   495
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   496
type:something
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   497
    type := something.
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   498
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   499
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   500
value
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   501
    ^ value
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   502
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   503
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   504
value:something
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   505
    value := something.
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   506
! !
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   507
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   508
!Annotation::Resource methodsFor:'printing & storing'!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   509
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   510
storeOn:aStream
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   511
    aStream nextPutAll: '(Annotation resource: '.
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   512
    type storeOn: aStream.
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   513
    value notNil ifTrue: [
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   514
        aStream nextPutAll: ' value: '.
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   515
        value storeOn: aStream
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   516
    ].    
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   517
    aStream nextPut:$)
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   518
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   519
    "Modified: / 16-07-2010 / 11:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17907
998195c96a6d Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17892
diff changeset
   520
    "Modified: / 29-11-2011 / 11:19:06 / cg"
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   521
    "Modified (format): / 26-07-2012 / 15:59:14 / cg"
17781
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   522
! !
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   523
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   524
!Annotation::Resource methodsFor:'processing'!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   525
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   526
annotatesClass:aClass
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   527
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   528
    "Nothing to do"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   529
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   530
    "Modified: / 16-07-2010 / 11:28:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   531
!
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   532
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   533
annotatesMethod:aMethod
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   534
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   535
    "Nothing to do"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   536
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   537
    "Modified: / 16-07-2010 / 11:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   538
! !
63650a976621 - added resource annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17775
diff changeset
   539
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   540
!Annotation::Resource methodsFor:'queries'!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   541
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   542
refersToLiteral: anObject
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   543
    (anObject == type) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   544
    (anObject == value) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   545
    value isArray ifTrue:[ ^ value refersToLiteral: anObject].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   546
    ^ false
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   547
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   548
    "Created: / 26-07-2012 / 15:57:58 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   549
!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   550
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   551
refersToLiteralMatching: aMatchString
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   552
    (type isSymbol and:[aMatchString match:type])ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   553
    (value isSymbol and:[aMatchString match:value])ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   554
    value isArray ifTrue:[ ^ value refersToLiteralMatching: aMatchString].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   555
    ^ false
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   556
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   557
    "Created: / 26-07-2012 / 16:01:26 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   558
! !
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   559
17955
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   560
!Annotation::Resource methodsFor:'testing'!
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   561
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   562
isResource
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   563
    ^ true
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   564
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   565
    "Created: / 18-07-2012 / 19:28:46 / cg"
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   566
! !
f5ee690b1a27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17911
diff changeset
   567
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
!Annotation::Unknown methodsFor:'accessing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
arguments
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
    ^ arguments
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
key
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
    ^ key
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   576
!
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   577
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   578
method
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   579
    ^ method
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   580
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   581
    "Created: / 05-09-2011 / 04:38:33 / cg"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
!Annotation::Unknown methodsFor:'initialization'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
key:keyArg arguments:argumentsArg 
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
    key := keyArg.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
    arguments := argumentsArg.
17859
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   589
!
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   590
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   591
method:methodArg key:keyArg arguments:argumentsArg
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   592
    method := methodArg.
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   593
    key := keyArg.
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   594
    arguments := argumentsArg.
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   595
cc167a69671c Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17851
diff changeset
   596
    "Created: / 05-09-2011 / 04:39:50 / cg"
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
!Annotation::Unknown methodsFor:'printing & storing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
storeOn:aStream
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
    "superclass Annotation says that I am responsible to implement this method"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
    aStream nextPutAll: '(Annotation key: '.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
    key storeOn: aStream.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
    aStream nextPutAll: ' arguments: '.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
    arguments storeOn: aStream.
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
    aStream nextPut: $).
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
    "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
!Annotation::Unknown methodsFor:'processing'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
annotatesClass:aClass
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
    "Nothing to do"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
    "Modified: / 20-05-2010 / 11:15:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
annotatesMethod:aMethod
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
    "Nothing to do"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
    "Modified: / 20-05-2010 / 11:15:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
! !
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
17966
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   629
!Annotation::Unknown methodsFor:'queries'!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   630
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   631
refersToLiteral: anObject
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   632
    (anObject == method) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   633
    (anObject == key) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   634
    (anObject == arguments) ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   635
    arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   636
    ^ false
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   637
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   638
    "Created: / 26-07-2012 / 15:57:43 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   639
!
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   640
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   641
refersToLiteralMatching: aMatchString
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   642
    (method isSymbol and:[aMatchString match:method])ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   643
    (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   644
    (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   645
    arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   646
    ^ false
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   647
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   648
    "Created: / 26-07-2012 / 16:00:58 / cg"
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   649
! !
8b5df02e171f Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17955
diff changeset
   650
17775
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   651
!Annotation::Unknown methodsFor:'testing'!
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   652
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   653
isUnknown
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   654
    ^ true
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   655
! !
90a5bae0a710 Lazy evaluation of annotations (required for stc compiled code)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17766
diff changeset
   656
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
!Annotation class methodsFor:'documentation'!
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
17862
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   659
version
17976
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
   660
    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.12 2012/10/29 10:25:12 cg Exp $'
17862
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   661
!
8a8ae3107950 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17859
diff changeset
   662
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   663
version_CVS
17976
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
   664
    ^ '§Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.12 2012/10/29 10:25:12 cg Exp §'
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   665
!
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   666
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
version_SVN
17976
50c2416f962a Merged with /trunk (CVS)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17966
diff changeset
   668
    ^ '$Id: Annotation.st 10858 2012-10-29 22:07:56Z vranyj1 $'
17766
0acf634e6550 initial implementation of selector namespaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   669
! !
17851
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   670
09d75924b034 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17781
diff changeset
   671
Annotation initialize!