JavaField.st
author cg
Tue, 16 Apr 1996 14:44:23 +0000
changeset 7 de8ce26e1f2c
parent 6 b23a6474754f
child 13 7075280c0cee
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
     1
JavaRef subclass:#JavaField
b23a6474754f intitial checkin
cg
parents:
diff changeset
     2
	instanceVariableNames:'accessFlags name signature constantValue'
b23a6474754f intitial checkin
cg
parents:
diff changeset
     3
	classVariableNames:''
b23a6474754f intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
b23a6474754f intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Reader-Support'
b23a6474754f intitial checkin
cg
parents:
diff changeset
     6
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
     7
b23a6474754f intitial checkin
cg
parents:
diff changeset
     8
7
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
     9
!JavaField methodsFor:'error handling'!
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    10
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    11
doesNotUnderstand:aMessage
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    12
    "this message is sent by the runtime system (VM) when
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    13
     a message is not understood by some object (i.e. there
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    14
     is no method for that selector). The original message has
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    15
     been packed into aMessage (i.e. the receiver, selector and
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    16
     any arguments) and the original receiver is then sent the
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    17
     #doesNotUnderstand: message.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    18
     Here, we raise another signal which usually enters the debugger.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    19
     You can of course redefine #doesNotUnderstand: in your classes
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    20
     to implement message delegation."
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    21
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    22
    |sel errorString cls sender|
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    23
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    24
    "/ handle the case of an error during early startup
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    25
    "/ (output streams not yet initialized)
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    26
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    27
    Stdout isNil ifTrue:[
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    28
	Smalltalk fatalAbort:'error during init: ' , aMessage selector , ' not understood'.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    29
    ].
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    30
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    31
    (sel := aMessage selector) isNil ifTrue:[
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    32
	"/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    33
	"/ happens when things go mad, or a method has been
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    34
	"/ called by valueWithReceiver: with a wrong receiver
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    35
	"/ to avoud later trouble (when concatenating strings),
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    36
	"/ replace the selector by some (nonNil) string
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    37
	"/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    38
	sel := '(nil)'
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    39
    ].
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    40
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    41
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    42
    "/ extract the class that should have implemented the message.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    43
    "/ (in case of a super-send, this is not the receivers class)
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    44
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    45
    sender := thisContext sender.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    46
    cls := sender searchClass.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    47
    cls isNil ifTrue:[
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    48
	"it was NOT a super or directed send ..."
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    49
	cls := self class
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    50
    ].
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    51
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    52
    cls notNil ifTrue:[
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    53
	"/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    54
	"/ displayString is better than 'cls name',
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    55
	"/ since it appends (obsolete) for outdated classes.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    56
	"/ (this happens if you send messages to old instances
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    57
	"/  after changing a classes definition)
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    58
	"/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    59
	errorString := cls displayString.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    60
    ] ifFalse:[    
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    61
	errorString := '(** nil-class **)'
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    62
    ].
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    63
    errorString := errorString , ' does not understand: ' , sel.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    64
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    65
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    66
    "/ this only happens, when YOU play around with my classvars ...
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    67
    "/ (or an error occurs during early startup, when signals are not yet set)
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    68
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    69
    MessageNotUnderstoodSignal isNil ifTrue:[
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    70
	^ self enterDebuggerWith:nil
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    71
			 message:'oops - MessageNotUnderstoodSignal is gone'.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    72
    ].
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    73
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    74
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    75
    "/ thats where we end up normally - raise a signal which (if unhandled) opens a debugger
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    76
    "/
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    77
    ^ MessageNotUnderstoodSignal
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    78
		raiseRequestWith:aMessage
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    79
		     errorString:errorString
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    80
			      in:sender
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    81
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    82
    "Modified: 9.12.1995 / 17:25:37 / cg"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    83
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    84
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    85
*** WARNING
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    86
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    87
*** this method has been automatically created,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    88
*** since all nil-subclasses should respond to some minimum required
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    89
*** protocol.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    90
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    91
*** Inspection and/or debugging of instances may not be possible,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    92
*** if you remove/change this method. 
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    93
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    94
! !
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
    95
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    96
!JavaField methodsFor:'private accessing'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
    97
b23a6474754f intitial checkin
cg
parents:
diff changeset
    98
setAccessFlags:flags
b23a6474754f intitial checkin
cg
parents:
diff changeset
    99
    accessFlags := flags.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   100
b23a6474754f intitial checkin
cg
parents:
diff changeset
   101
    "Created: 16.4.1996 / 13:04:25 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   102
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   103
b23a6474754f intitial checkin
cg
parents:
diff changeset
   104
setConstantValue:something
b23a6474754f intitial checkin
cg
parents:
diff changeset
   105
    constantValue := something.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   106
b23a6474754f intitial checkin
cg
parents:
diff changeset
   107
    "Created: 16.4.1996 / 13:04:58 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   108
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   109
b23a6474754f intitial checkin
cg
parents:
diff changeset
   110
setName:aString
b23a6474754f intitial checkin
cg
parents:
diff changeset
   111
    name := aString.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   112
b23a6474754f intitial checkin
cg
parents:
diff changeset
   113
    "Created: 16.4.1996 / 13:04:35 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   114
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   115
b23a6474754f intitial checkin
cg
parents:
diff changeset
   116
setSignature:aString
b23a6474754f intitial checkin
cg
parents:
diff changeset
   117
    signature := aString.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   118
b23a6474754f intitial checkin
cg
parents:
diff changeset
   119
    "Created: 16.4.1996 / 13:04:43 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   120
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   121
7
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   122
!JavaField methodsFor:'queries'!
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   123
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   124
class
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   125
    "return the receivers class"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   126
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   127
%{  /* NOCONTEXT */
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   128
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   129
    RETURN ( __Class(self) );
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   130
%}
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   131
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   132
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   133
*** WARNING
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   134
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   135
*** this method has been automatically created,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   136
*** since all nil-subclasses should respond to some minimum required
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   137
*** protocol.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   138
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   139
*** Inspection and/or debugging of instances may not be possible,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   140
*** if you remove/change this method. 
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   141
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   142
!
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   143
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   144
isBehavior
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   145
    "return true, if the receiver is some kind of class (i.e. behavior);
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   146
     false is returned here - the method is only redefined in Behavior."
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   147
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   148
    ^ false
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   149
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   150
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   151
*** WARNING
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   152
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   153
*** this method has been automatically created,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   154
*** since all nil-subclasses should respond to some minimum required
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   155
*** protocol.
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   156
***
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   157
*** Inspection and/or debugging of instances may not be possible,
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   158
*** if you remove/change this method. 
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   159
"
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   160
! !
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   161
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   162
!JavaField class methodsFor:'documentation'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   163
b23a6474754f intitial checkin
cg
parents:
diff changeset
   164
version
7
de8ce26e1f2c checkin from browser
cg
parents: 6
diff changeset
   165
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaField.st,v 1.2 1996/04/16 14:41:33 cg Exp $'
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   166
! !