Reference.st
author Claus Gittinger <cg@exept.de>
Sun, 17 Jun 2018 08:31:51 +0200
changeset 4278 d756ed6a7120
parent 1450 8c466a8a125a
permissions -rw-r--r--
#FEATURE by cg class: ConstantNode added: #isConstantNumber
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1450
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     1
"
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     2
 COPYRIGHT (c) 2003 by eXept Software AG
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     3
              All Rights Reserved
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     4
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     5
 This software is furnished under a license and may be used
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     6
 only in accordance with the terms of that license and with the
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
     9
 other person.  No title to or ownership of the software is
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    10
 hereby transferred.
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    11
"
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    12
1264
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"{ Package: 'stx:libcomp' }"
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
Object variableSubclass:#Reference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	instanceVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	classVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	poolDictionaries:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	category:'Kernel-Methods'
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
Reference variableSubclass:#ContextVariableReference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	instanceVariableNames:'context index'
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	classVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	poolDictionaries:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	privateIn:Reference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
Reference::ContextVariableReference variableSubclass:#ArgumentReference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	instanceVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	classVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	poolDictionaries:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	privateIn:Reference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
Reference::ContextVariableReference variableSubclass:#LocalVariableReference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	instanceVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	classVariableNames:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	poolDictionaries:''
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	privateIn:Reference
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
!Reference class methodsFor:'documentation'!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
1450
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    45
copyright
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    46
"
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    47
 COPYRIGHT (c) 2003 by eXept Software AG
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    48
              All Rights Reserved
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    49
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    50
 This software is furnished under a license and may be used
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    51
 only in accordance with the terms of that license and with the
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    52
 inclusion of the above copyright notice.   This software may not
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    53
 be provided or otherwise made available to, or used by, any
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    54
 other person.  No title to or ownership of the software is
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    55
 hereby transferred.
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    56
"
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    57
!
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
    58
1264
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
example1
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    |foo ref|
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    ref := Reference forLocal:1 in:thisContext.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ref inspect
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    "
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
     self example1
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
example2
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
"/    |foo ref|
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
"/
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
"/    foo := 123.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
"/    ref := &foo.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
"/    ref inspect
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     self example2
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    "
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
! !
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!Reference class methodsFor:'instance creation'!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
forArgument:argIndex in:aContext
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    ^ ArgumentReference new
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
        context:aContext index:argIndex
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
forLocal:varIndex in:aContext
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ^ LocalVariableReference new
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        context:aContext index:varIndex
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
! !
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!Reference::ContextVariableReference methodsFor:'accessing'!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
context:contextArg index:indexArg 
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    context := contextArg.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    index := indexArg.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
! !
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!Reference::ArgumentReference methodsFor:'accessing'!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
value
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    ^ context argAt:index
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
value:newValue
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    self error:'write into argument ref'.
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    ^ newValue
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
! !
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!Reference::LocalVariableReference methodsFor:'accessing'!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
value
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    ^ context varAt:index
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
!
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
value:newValue
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    ^ context varAt:index put:newValue
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
! !
798e532a4c89 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
1450
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
   122
!Reference class methodsFor:'documentation'!
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
   123
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
   124
version
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
   125
    ^ '$Header: /cvs/stx/stx/libcomp/Reference.st,v 1.3 2003-08-29 19:21:52 cg Exp $'
8c466a8a125a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1265
diff changeset
   126
! !