RGMethodDefinition.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 31 Aug 2015 14:01:56 +0100
changeset 3 ed5aae792d24
parent 2 e439b82dda7d
child 5 5cc2caa88b23
permissions -rw-r--r--
More Smalltalk/X API methods. Better RGClassDefinition creation. RGClassDefinition>>newClass now creates a metaclass.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/ring' }"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
RGElementDefinition subclass:#RGMethodDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'protocol sourceCode stamp package'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Ring-Core-Kernel'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    12
RGMethodDefinition comment:'RGMethodDefinition is a concrete representation of methods. It can be used to build browser for methods that are not in the image. It is polymorphic with CompiledMethod. 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    13
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    14
* We can ask a RGMethodDefinition for its selector using the selector message.
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    15
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    16
	(Point>>#dist:) asRingDefinition selector
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    17
		-> #dist
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    18
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    19
We can also ask the ring object representation of its class or the Smalltalk class actually implementing the corresponding compiledMethod. 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    20
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    21
* To access the ring class definition name, use parentName
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    22
	aRGMethodDefinition parentName
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    23
	
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    24
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    25
	(Point>>#dist:) asRingDefinition parentName
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    26
		->  #Point
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    27
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    28
* If you have a complete model where classes and methods are ring definition, to access the ring class definition , use parent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    29
	aRGMethodDefinition parent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    30
	
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    31
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    32
	aRGMethodDefinition(Point>>#dist:) parent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    33
		->  aRGClassDefinition(Point)
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    34
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    35
* If you want to access the smalltalk class that contains the compiledMethod that is represented by a ringMethodDefinition, use realParent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    36
	aRGMethodDefinition realParent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    37
	
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    38
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    39
	(Point>>#dist:) asRingDefinition realParent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    40
		->  Point
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    41
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    42
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    43
Now a RingEntityDefinition offers two APIs: one that is generic and works for all the source code entities and this is the one we just 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    44
presented: parent, parentName and realParent. Having such interface is important to build generic tools that could manipulate 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    45
any entities in a polymorphic way (yes no isKindOf: everywhere).
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    46
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    47
In addition, a ring method definition offers a specific interface that should only be used when you know that you are solely manipulate
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    48
specific entity such as class element: method definition, class comment, and variables. 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    49
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    50
Here is the equivalence table
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    51
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    52
	realParent 				realClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    53
	parent					ringClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    54
	parentName			className
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    55
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    56
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    57
* The message class returns the class of the object :).
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    58
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    59
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    60
	(Point>>#dist:) asRingDefinition class
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    61
		->  RingMethodDefinition
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    62
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    63
* The message className returns the name of the ring class defining the reingMethodDefinition.
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    64
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    65
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    66
	(Point>>#dist:) asRingDefinition className
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    67
		->  #Point		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    68
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    69
* If you have a complete model where classes and methods are ring definition, to access the ring class definition , use parent
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    70
	aRGMethodDefinition ringClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    71
	
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    72
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    73
	aRGMethodDefinition(Point>>#dist:) ringClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    74
		->  aRGClassDefinition(Point)
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    75
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    76
		
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    77
* If you want to access the smalltalk class that contains the compiledMethod that is represented by a ringMethodDefinition, use realClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    78
	aRGMethodDefinition realClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    79
	
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    80
Example:
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    81
	(Point>>#dist:) asRingDefinition realClass
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    82
		->  Point
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    83
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    84
'
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!RGMethodDefinition class methodsFor:'instance creation'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
class: aRGBehaviorDefinition selector: aString
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "Create a ring method definition from a ring class and a selector"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^(self class: aRGBehaviorDefinition)
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        selector: aString asSymbol;
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
        yourself
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
className: aString selector: aSelector isMetaSide: aBoolean
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    ^ (self class: (RGClassDefinition named: aString) selector: aSelector) isMetaSide: aBoolean; yourself
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
realClass: aClass selector: aString
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    "Creates a ring method definition from a Smalltalk class and a selector <compiledMethod>"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   105
    ^(aClass >> aString asSymbol) asActiveRingDefinition
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   106
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   107
    "Modified (format): / 29-08-2015 / 10:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!RGMethodDefinition class methodsFor:'categories'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
unclassifiedProtocolName
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Return the string labeling the unclassified protocol."
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    ^ 'as yet unclassified'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
!RGMethodDefinition class methodsFor:'elements-annotations'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
isExtensionKey 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    ^#isExtension
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
!RGMethodDefinition methodsFor:'accessing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
ast
3
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   128
    ^ self parseTree
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   129
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   130
    "Modified: / 29-08-2015 / 11:20:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
compiledMethod
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    "Retrieves the compiled method of this definition if exists"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    | rClass |
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    (rClass := self realClass) notNil
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
        ifTrue: [ (rClass includesSelector: self selector)
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
            ifTrue: [ ^rClass >> self selector ] ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
            
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    ^nil
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
fullName
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    "Keeps a unique description for the receiver. As annotation to avoid converting each time is invoked"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    ^self annotationNamed: self class fullNameKey
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
        ifAbsentPut: [ (self parentName, '>>', self selector) asSymbol ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
isExtension
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    "The receiver is an extension when is defined in a different package to the one of its parent.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    Ring allows to set this property. If not assigned tries to find its value "
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    ^self 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        annotationNamed: self class isExtensionKey
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
        ifAbsent: [  
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   158
            (self parent notNil and:[ self package notNil ]) ifTrue: [ 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   159
                | value |
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   160
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   161
                value :=  self parent package ~= self package.
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   162
                self annotationNamed: self class isExtensionKey put: value.
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   163
                value 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   164
            ] ifFalse: [ 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   165
                self isActive ifTrue:[ 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   166
                    | cm |
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   167
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   168
                    cm := self compiledMethod.
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   169
                    cm isExtension.
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   170
                ] ifFalse:[ 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   171
                    false
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   172
                ].
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   173
            ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   174
        ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   175
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   176
    "Modified: / 29-08-2015 / 10:23:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
isExtension: aBoolean
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    "Explicitily set that the receiver is an extension"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    self annotationNamed: self class isExtensionKey put: aBoolean 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
origin
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    "Return the real oring of this method."
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   187
    | mthd |
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   188
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   189
    ^ (mthd := self compiledMethod)
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
        ifNil: [ self methodClass ]
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   191
        ifNotNil: [ mthd origin ]
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
package
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "Retrieves the package in which this class is contained, if exists"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    ^package
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
package: aRGPackage
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    package:= aRGPackage
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
3
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   205
parseTree
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   206
    "raise an error: this method should be implemented (TODO)"
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   207
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   208
    ^ RBParser parseMethod: self sourceCode
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   209
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   210
    "Created: / 29-08-2015 / 11:20:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   211
!
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   212
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
protocol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
    self isActive 
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   216
        ifTrue: [ ^ self compiledMethod ifNil: [ protocol ] ifNotNil: [ self compiledMethod category ]].
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    self isHistorical
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   218
        ifTrue: [ ^ self protocolAtPointer ifNil: [ | cm | (cm := self compiledMethod) ifNil: [ protocol ] ifNotNil:[ cm category ] ] ].
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   219
    ^ protocol
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   220
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   221
    "Modified: / 29-08-2015 / 08:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
protocol: anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
    protocol := anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
selector
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    "Retrieves the name of the method"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
3
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   232
    name isNil ifTrue:[ 
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   233
        | src |    
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   234
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   235
        src := self sourceCode.
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   236
        src notNil ifTrue:[ 
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   237
            name := RBParser parseMethodPattern: src.  
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   238
        ].
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   239
    ].
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   240
    ^ name
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   241
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   242
    "Modified: / 29-08-2015 / 11:37:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
selector: aSymbol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    "The name of a method is known as #selector"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
    name := aSymbol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
3
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   251
source
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   252
    ^self sourceCode
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   253
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   254
    "Created: / 29-08-2015 / 11:19:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   255
!
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   256
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   257
source: aString
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   258
    self sourceCode: aString
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   259
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   260
    "Created: / 29-08-2015 / 11:34:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   261
!
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   262
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
sourceCode
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    self isActive 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
        ifTrue: [ ^ self compiledMethod ifNil:[ sourceCode ] ifNotNil: [ self compiledMethod sourceCode ]].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
    ^ sourceCode
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   268
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   269
    "Modified: / 29-08-2015 / 08:03:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
sourceCode: anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    sourceCode := anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
stamp
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
    self isActive 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
        ifTrue: [ ^ self compiledMethod timeStamp ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    ^ stamp
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   282
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   283
    "Modified: / 29-08-2015 / 08:03:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
stamp: anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    "stores an author alias and a timestamp"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
    stamp := anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
!RGMethodDefinition methodsFor:'backward compatibility'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
category
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    ^ self protocol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
messages
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
    ^ self method messages
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
method
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
    ^self compiledMethod
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
methodClass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    "Return the class to which the receiver belongs to."
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
    ^ self realClass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
symbolic
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
    ^ self method symbolic
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
!RGMethodDefinition methodsFor:'comparing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
<= aRGMethodDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    "Sort method definitions according to: 1. class name - 2. class comment - 3. method selector - 4. timestamp"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    self parentName < aRGMethodDefinition parentName ifTrue: [^true].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    self parentName > aRGMethodDefinition parentName ifTrue: [^false].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    self flag: 'This ugly test is needed right now because the old system is used to represent 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
    class comment as method with Comment selector. And to mix comment and methods'.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    aRGMethodDefinition isComment ifTrue: [^false].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    ^(self selector < aRGMethodDefinition selector) 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
 		  or: [ (self selector == aRGMethodDefinition selector) and: [
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    			  self timeStamp <= aRGMethodDefinition timeStamp ]]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
= aRGMethodDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    "This method look for equality of the key properties of the receiver"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    ^(super = aRGMethodDefinition)
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
        and: [ self selector == aRGMethodDefinition selector]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
hash
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    ^super hash bitXor: self selector hash
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
!RGMethodDefinition methodsFor:'managing container'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
addInContainer: aRGContainer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    aRGContainer addMethod: self
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
isIncludedInContainer: aRGContainer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    ^aRGContainer includesMethod: self
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
removeFromContainer: aRGContainer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    aRGContainer removeMethod: self
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
!RGMethodDefinition methodsFor:'metrics'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
numberOfLinesOfCode
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    ^ self annotationNamed: #numberOfLinesOfCode ifAbsentPut: [ self sourceCode lineCount ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
!RGMethodDefinition methodsFor:'operations'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
recompile
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
    self method recompile
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
!RGMethodDefinition methodsFor:'printing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
printOn: aStream 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
    self parentName ifNotNil: [
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
        aStream nextPutAll: self parentName;
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
                  nextPutAll: '>>' ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
    aStream print: self selector
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
!RGMethodDefinition methodsFor:'source pointers'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
getPreambleFrom: aFileStream at: position
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
    ^ SourceFiles getPreambleFrom: aFileStream at: position
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
protocolAtPointer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
    "A RGMethodDefinition that was set as historical will retrieve the protocol using the sourcePointer"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   400
    self shouldNotImplement. "/ No source pointers in Smalltalk/X    
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   401
"/    ^ self sourcePointer notNil
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   402
"/        ifTrue: [ SourceFiles protocolAt: self sourcePointer ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   403
"/        ifFalse:[ nil ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   404
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   405
    "Modified: / 29-08-2015 / 08:02:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
sourceCodeAtPointer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
    "A RGMethodDefinition that was set as historical will retrieve the sourceCode using the sourcePointer"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   411
    self shouldNotImplement. "/ No source pointers in Smalltalk/X
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   412
"/    ^ self sourcePointer notNil
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   413
"/        ifTrue: [ SourceFiles sourceCodeAt: self sourcePointer ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   414
"/        ifFalse:[ nil ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   415
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   416
    "Modified: / 29-08-2015 / 08:02:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
sourcePointer
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
    "Retrieves the sourcePointer for this definition if exists"
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   421
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   422
    self shouldNotImplement. "/ No source pointers in Smalltalk/X    
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   423
"/    ^self annotationNamed:  self class sourcePointerKey
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   424
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   425
    "Modified: / 29-08-2015 / 08:02:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
sourcePointer: aNumber
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   430
    self shouldNotImplement. "/ No source pointers in Smalltalk/X
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   431
"/    self annotationNamed:  self class sourcePointerKey put: aNumber
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   432
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   433
    "Modified: / 29-08-2015 / 08:02:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   436
stampAtPointer  
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
    "A RGMethodDefinition that was set as historical will retrieve the stamp using the sourcePointer"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   439
    self shouldNotImplement. "/ No source pointers in Smalltalk/X
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   440
"/    ^ self sourcePointer notNil
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   441
"/        ifTrue: [ SourceFiles timeStampAt: self sourcePointer ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   442
"/        ifFalse:[ nil ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   443
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   444
    "Modified: / 29-08-2015 / 08:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
!RGMethodDefinition methodsFor:'stamp values'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
author 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    ^self 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
        annotationNamed: self class authorKey
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
        ifAbsentPut: [ self class parseAuthorAliasFrom: self stamp ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
author: aString 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    self annotationNamed: self class authorKey put: aString 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
timeStamp 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    ^self annotationNamed: self class timeStampKey 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
        ifAbsentPut: [ self class 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
                            parseTimestampFrom: self stamp 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
                            default: (DateAndTime epoch) ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
timeStamp: aTimestamp 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    self annotationNamed: self class timeStampKey put: aTimestamp 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
!RGMethodDefinition methodsFor:'testing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
hasStamp
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
    ^stamp isEmptyOrNil not
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
isAbstract
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
    ^ self compiledMethod isAbstract
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
isDefined
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
    "Answer whether the receiver exists in the environment"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
    | rClass |
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    self selector isDoIt ifTrue:[ ^false ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
    rClass := self realClass.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    ^rClass notNil and: [ rClass includesSelector: self selector ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
isFromTrait
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    "Return true for methods that have been included from Traits"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    ^ self origin isTrait and: [ self origin ~= self methodClass ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
isLocalSelector
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
    "Answer whether the receiver exists in the environment as a local implementation"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
    | rClass |
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    rClass:= self realClass.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
    ^rClass notNil and: [ rClass includesLocalSelector: self selector ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
isMethod
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    ^true
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
isOverridden
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    ^ self compiledMethod isOverridden
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
isSameRevisionAs: aRGMethodDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
    "This method look for equality of the properties of the receiver"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    "Stamp is ignored as in many cases a method is saved without containing any change. However it appears as changed due to a different stamp"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
    self flag: 'needs to be evaluated'.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
    ^(super isSameRevisionAs: aRGMethodDefinition)
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
        and: [ self selector = aRGMethodDefinition selector 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
            and: [ self protocol = aRGMethodDefinition protocol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
                and: [ self sourceCode = aRGMethodDefinition sourceCode ] ] ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
!RGMethodDefinition methodsFor:'to remove as soon as possible'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
classIsMeta
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
    ^self isMetaSide
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
isValid
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
    "verifies that the receiver is locally defined in the class and that is not a DoIt"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
    ^self isDefined
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
!RGMethodDefinition methodsFor:'traits'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
argumentNames
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
    "Return an array with the argument names of the method's selector"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
    ^ self compiledMethod argumentNames
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
isBinarySelector
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
    ^self selector
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
        allSatisfy: [:each | each isSpecial]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
!RGMethodDefinition methodsFor:'type of methods'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
asActive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
    "Sets the receiver as active object, which will allow itself to retrieve its data from the compiled method"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
    self annotationNamed: self class statusKey put: #active
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
asHistorical
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
    "Sets the receiver as historical object, which will allow itself to retrieve its data using the sourcePointer"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
    self annotationNamed: self class statusKey put: #historical.
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   565
    sourceCode isNil ifTrue:[
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   566
        | compiledMethod |
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
        compiledMethod := self compiledMethod.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
        compiledMethod notNil ifTrue: [
2
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   569
            sourceCode := compiledMethod sourceCode 
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   570
        ].
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   571
    ]
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   572
e439b82dda7d Fixed some tests. Not all pass, though,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   573
    "Modified: / 29-08-2015 / 08:00:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
asPassive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
    "Sets the receiver as passive object, which will allow itself to retrieve its data that was assigned in its creation"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
    self annotationNamed: self class statusKey put: #passive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
fromActiveToHistorical
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
    "If the receiver was generated as an active method, it can be converted to a historical one by reading the data of the compiled method (if exists)"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
    self isActive ifTrue: [
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
        self asHistorical ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
fromActiveToPassive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
    "If the receiver was generated as an active method, it can be converted to a passive one by reading the data of the compiled method (if exists)"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
    | compiledMethod |
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
    self isActive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
        ifFalse: [ ^ self ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
    compiledMethod := self compiledMethod.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
    compiledMethod notNil
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
        ifTrue: [ 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
            self protocol: compiledMethod category.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
            self sourceCode: compiledMethod sourceCode.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
            self stamp: compiledMethod timeStamp ].
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
    self asPassive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
isActive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
    "A ring method isActive when it needs to access the compiledMethod for retrieving its data"
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   607
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   608
    | status |
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   609
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   610
    ^(status := self annotationNamed: self class statusKey) isNil
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   611
        ifTrue:[ false ] 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   612
        ifFalse:[ status == #active ]
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
isHistorical
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   616
    "A ring method can be used to point an old version of the receiver, in this case it will use the sourcePointer to retrieve its information"
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   617
   
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   618
    | status |
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   620
    ^(status := self annotationNamed: self class statusKey) isNil
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   621
        ifTrue:[ false ] 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   622
        ifFalse:[ status == #historical ]
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
isPassive
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
    "A ring method isPassive when it retrieves the data that was assigned in its creation.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
    By default is passive"
1
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   628
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   629
   | status |
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   630
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   631
    ^(status := self annotationNamed: self class statusKey) isNil
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   632
        ifTrue:[ false ] 
24b88532f6ef Fixes to make it stc-compilable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   633
        ifFalse:[ status == #passive ]
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
3
ed5aae792d24 More Smalltalk/X API methods. Better RGClassDefinition creation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   636