Smalltalk.st
author Claus Gittinger <cg@exept.de>
Wed, 01 Nov 1995 15:44:26 +0100
changeset 468 72dfba4603b4
parent 457 41c73cbee305
child 477 8710aba7876b
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1988 by Claus Gittinger
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
     3
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
    13
'From Smalltalk/X, Version:2.10.8 on 29-oct-1995 at 20:01:13'                   !
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    14
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    15
Object subclass:#Smalltalk
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    16
	 instanceVariableNames:''
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    17
	 classVariableNames:'ExitBlocks CachedClasses SystemPath StartupClass StartupSelector
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
    18
		StartupArguments CachedAbbreviations SilentLoading Initializing
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
    19
		StandAlone LogDoits LoadBinaries RealSystemPath ResourcePath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
    20
		SourcePath BitmapPath BinaryPath FileInPath'
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    21
	 poolDictionaries:''
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    22
	 category:'System-Support'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    25
!Smalltalk class methodsFor:'documentation'!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    26
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    27
version
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    28
"
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
    29
$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.71 1995-10-29 19:27:04 cg Exp $
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    30
"
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    31
!
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    32
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    33
documentation
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    34
"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    35
    This is one of the central classes in the system;
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    36
    it provides all system-startup, shutdown and maintenance support.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    37
    Also global variables are kept here.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    38
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    39
    As you will notice, this is NOT a Dictionary
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    40
     - my implementation of globals is totally different
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    41
       (due to the need to be able to access globals from c-code as well).
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    42
    However, it provides the known enumeration protocol.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    43
    It may change to become a subclass of collection at some time ...
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    44
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    45
    Instance variables:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    46
					none - all handling is done in the VM
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    47
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    48
    Class variables:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    49
	ExitBlocks      <Collection>    blocks to evaluate before system is
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    50
					left. Not currently used.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    51
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    52
	CachedClasses   <Collection>    known classes (cached for faster enumeration)
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    53
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    54
	SystemPath      <Collection>    path to search for system files (sources, bitmaps etc)
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    55
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    56
	StartupClass    <Class>         class, which gets initial message 
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    57
					(right after VM initialization)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    58
	StartupSelector <Symbol>        message sent to StartupClass
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    59
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    60
	CachedAbbreviations
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    61
			<Dictionary>    className to filename mappings
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    62
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    63
	SilentLoading   <Boolean>       suppresses messages during fileIn and in compiler
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    64
					(can be set to true from a customized main)
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
    65
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    66
	LogDoits        <Boolean>       if true, doits are also logged in the changes
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    67
					file. Default is false, since the changes file
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
    68
					may become huge ...
329
claus
parents: 326
diff changeset
    69
400
claus
parents: 396
diff changeset
    70
	LoadBinaries    <Boolean>       if true, we attempt to load classes rom a binary
390
claus
parents: 384
diff changeset
    71
					file, if present. If false, this is always suppressed.
claus
parents: 384
diff changeset
    72
329
claus
parents: 326
diff changeset
    73
	SourcePath      <Collection>    cached names of really existing directories
claus
parents: 326
diff changeset
    74
	BitmapPath                      These are remembered, since in NFS systems,
claus
parents: 326
diff changeset
    75
	ResourcePath                    the time to lookup files may become long
claus
parents: 326
diff changeset
    76
	BinaryPath                      (especially, if some directories are on machines
claus
parents: 326
diff changeset
    77
	FileInPath                      which are not up ...). Therefore, the set of really
claus
parents: 326
diff changeset
    78
					existing directories is cached when the SystemPath
claus
parents: 326
diff changeset
    79
					is walked the first time.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
    80
"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    81
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    82
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    83
copyright
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    84
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    85
 COPYRIGHT (c) 1988 by Claus Gittinger
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    86
	      All Rights Reserved
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    87
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    88
 This software is furnished under a license and may be used
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    89
 only in accordance with the terms of that license and with the
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    90
 inclusion of the above copyright notice.   This software may not
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    91
 be provided or otherwise made available to, or used by, any
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    92
 other person.  No title to or ownership of the software is
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    93
 hereby transferred.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
    94
"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    95
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    96
a27a279701f8 Initial revision
claus
parents:
diff changeset
    97
!Smalltalk class methodsFor:'initialization'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    98
325
claus
parents: 324
diff changeset
    99
initializeSystem
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
   100
    "initialize all other classes; setup dispatcher processes etc.
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   101
     This one is the first entry into the smalltalk world right after startup,
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   102
     ususally followed by Smalltalk>>start.
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   103
     Notice: this is not called when an image is restarted; in this
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   104
     case the show starts in Smalltalk>>restart."
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   105
348
claus
parents: 345
diff changeset
   106
    SilentLoading := false.
claus
parents: 345
diff changeset
   107
    Initializing := true.
claus
parents: 345
diff changeset
   108
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   109
    "
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   110
     define low-level debugging tools - graphical classes are not prepared yet
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   111
     to handle things. 
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   112
     This will bring us into the MiniDebugger when an error occurs
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   113
     during startup
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   114
    "
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   115
    Inspector := MiniInspector.
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   116
    Debugger := MiniDebugger.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   117
a27a279701f8 Initial revision
claus
parents:
diff changeset
   118
    self initGlobalsFromEnvironment.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   119
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   120
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   121
     sorry - there are some, which MUST be initialized before ..
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   122
     reason: if any error happens during init, we need Signals, Stdout etc. to be there
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   123
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   124
    Object initialize.
423
claus
parents: 421
diff changeset
   125
    Signal initialize.
326
d2902942491d *** empty log message ***
claus
parents: 325
diff changeset
   126
    ObjectMemory initialize.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   127
    ExternalStream initialize.
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   128
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   129
    self initStandardStreams.    "/ setup Stdin, Stdout etc.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   130
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   131
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   132
     sorry, path must be set before ...
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   133
     reason: some classes need it during initialize (they might need resources, bitmaps etc)
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   134
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   135
    self initSystemPath.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   136
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   137
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   138
     must init display here - some classes (Color, Form) need it during initialize
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   139
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   140
    Workstation notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   141
	Workstation initialize
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   142
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   143
a27a279701f8 Initial revision
claus
parents:
diff changeset
   144
    Compiler := ByteCodeCompiler.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   145
    Compiler isNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   146
	"
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   147
	 ByteCodeCompiler is not in the system (i.e. has not been linked in)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   148
	 this allows at least immediate evaluations for runtime systems without compiler
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   149
	 NOTICE: a parser is always needed, otherwise we cannot read resource files etc.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   150
	"
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   151
	Compiler := Parser
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   152
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   153
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   154
    "
325
claus
parents: 324
diff changeset
   155
     now, finally, initialize all other classes
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   156
    "
325
claus
parents: 324
diff changeset
   157
    self initializeModules.
claus
parents: 324
diff changeset
   158
claus
parents: 324
diff changeset
   159
"/    self allBehaviorsDo:[:aClass |
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   160
"/ 'init ' print. aClass name printNL.
329
claus
parents: 326
diff changeset
   161
"/      aClass initialize
325
claus
parents: 324
diff changeset
   162
"/    ].
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   163
321
5472c14f6ef5 *** empty log message ***
claus
parents: 314
diff changeset
   164
    Display notNil ifTrue:[
329
claus
parents: 326
diff changeset
   165
	Display initialize.
321
5472c14f6ef5 *** empty log message ***
claus
parents: 314
diff changeset
   166
    ].
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   167
    self initInterrupts.
325
claus
parents: 324
diff changeset
   168
    self initUserPreferences.    
claus
parents: 324
diff changeset
   169
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   170
325
claus
parents: 324
diff changeset
   171
initializeModules
claus
parents: 324
diff changeset
   172
    "perform module specific initialization and
claus
parents: 324
diff changeset
   173
     send #initialize to all classes.
claus
parents: 324
diff changeset
   174
     Notice: this is not called when an image is restarted"
claus
parents: 324
diff changeset
   175
%{
claus
parents: 324
diff changeset
   176
    init_registered_modules(3 COMMA_CON);
claus
parents: 324
diff changeset
   177
%}
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   178
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   179
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
   180
initUserPreferences
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
   181
    "setup other stuff"
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
   182
390
claus
parents: 384
diff changeset
   183
    LogDoits := false.
claus
parents: 384
diff changeset
   184
    LoadBinaries := false.
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
   185
!
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
   186
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   187
initGlobalsFromEnvironment
a27a279701f8 Initial revision
claus
parents:
diff changeset
   188
    "setup globals from the shell-environment"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   189
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   190
    |envString i langString terrString|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   191
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   192
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   193
     extract Language and LanguageTerritory from LANG variable.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   194
     the language and territory must not be abbreviated,
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   195
     valid are for example: english_usa
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   196
			    english
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   197
			    german
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   198
			    german_austria
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   199
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   200
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   201
    Language := #english.
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   202
    LanguageTerritory := #usa.
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   203
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   204
    envString := OperatingSystem getEnvironment:'LANG'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   205
    envString notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   206
	i := envString indexOf:$_.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   207
	(i == 0) ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   208
	    langString := envString.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   209
	    terrString := envString
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   210
	] ifFalse:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   211
	    langString := envString copyTo:(i - 1).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   212
	    terrString := envString copyFrom:(i + 1)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   213
	].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   214
	Language := langString asSymbol.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   215
	LanguageTerritory := terrString asSymbol
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   216
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   217
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   218
    "
211
58bb873aa83c *** empty log message ***
claus
parents: 202
diff changeset
   219
     Smalltalk initGlobalsFromEnvironment
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   220
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   221
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   222
a27a279701f8 Initial revision
claus
parents:
diff changeset
   223
initStandardTools
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   224
    "predefine some tools which we will need later
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   225
     - if the view-classes exist,
a27a279701f8 Initial revision
claus
parents:
diff changeset
   226
       they will redefine Inspector and Debugger for graphical interfaces"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   227
a27a279701f8 Initial revision
claus
parents:
diff changeset
   228
    "redefine debug-tools, if view-classes exist"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   229
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   230
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   231
	InspectorView notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   232
	    Inspector := InspectorView
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   233
	].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   234
	DebugView notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   235
	    Debugger := DebugView
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   236
	].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   237
	Display initialize
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   238
    ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   239
    "Smalltalk initStandardTools"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   240
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   241
a27a279701f8 Initial revision
claus
parents:
diff changeset
   242
initStandardStreams
a27a279701f8 Initial revision
claus
parents:
diff changeset
   243
    "initialize some well-known streams"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   244
a27a279701f8 Initial revision
claus
parents:
diff changeset
   245
    Stdout := NonPositionableExternalStream forStdout.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   246
    Stderr := NonPositionableExternalStream forStderr.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   247
    Stdin := NonPositionableExternalStream forStdin.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   248
    Printer := PrinterStream.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   249
    Transcript := Stderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
   250
a27a279701f8 Initial revision
claus
parents:
diff changeset
   251
    "Smalltalk initStandardStreams"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   252
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   253
a27a279701f8 Initial revision
claus
parents:
diff changeset
   254
initInterrupts
a27a279701f8 Initial revision
claus
parents:
diff changeset
   255
    "initialize interrupts"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   256
a27a279701f8 Initial revision
claus
parents:
diff changeset
   257
    OperatingSystem enableUserInterrupts.
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
   258
    OperatingSystem enableHardSignalInterrupts.
2
claus
parents: 1
diff changeset
   259
    OperatingSystem enableFpExceptionInterrupts.
claus
parents: 1
diff changeset
   260
claus
parents: 1
diff changeset
   261
    ObjectMemory userInterruptHandler:self.
13
62303f84ff5f *** empty log message ***
claus
parents: 10
diff changeset
   262
    ObjectMemory signalInterruptHandler:self.
62303f84ff5f *** empty log message ***
claus
parents: 10
diff changeset
   263
    ObjectMemory recursionInterruptHandler:self.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   264
a27a279701f8 Initial revision
claus
parents:
diff changeset
   265
    "Smalltalk initInterrupts"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   266
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   267
a27a279701f8 Initial revision
claus
parents:
diff changeset
   268
initSystemPath
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   269
    "setup path where system files are searched for.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
   270
     the default path is set to:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   271
	    .
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   272
	    ..
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   273
	    $HOME                    (if defined)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   274
	    $HOME/.smalltalk         (if defined & existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   275
	    $SMALLTALK_LIBDIR        (if defined & existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   276
	    /usr/local/lib/smalltalk (if existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   277
	    /usr/lib/smalltalk       (if existing)
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   278
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   279
     of course, it is possible to add entries from the 'smalltalk.rc'
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   280
     startup file; add expressions such as:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   281
	    Smalltalk systemPath addFirst:'/foo/bar/baz'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   282
	or: 
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   283
	    Smalltalk systemPath addLast:'/fee/foe/foo'.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
   284
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   285
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   286
    |p homePath|
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   287
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   288
    homePath := OperatingSystem getHomeDirectory.
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   289
    homePath isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   290
	homePath := '.'
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   291
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   292
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   293
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   294
     the path is set to search files first locally
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   295
     - this allows private stuff to override global stuff
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   296
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   297
    SystemPath := OrderedCollection new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   298
    SystemPath add:'.'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   299
    SystemPath add:'..'.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   300
    SystemPath add:homePath.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   301
    (OperatingSystem isDirectory:(p := homePath , '/.smalltalk')) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   302
	SystemPath add:p
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   303
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   304
    p := OperatingSystem getEnvironment:'SMALLTALK_LIBDIR'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   305
    p notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   306
	SystemPath add:p
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   307
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   308
    (OperatingSystem isDirectory:'/usr/local/lib/smalltalk') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   309
	SystemPath add:'/usr/local/lib/smalltalk'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   310
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   311
    (OperatingSystem isDirectory:'/usr/lib/smalltalk') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   312
	SystemPath add:'/usr/lib/smalltalk'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   313
    ].
329
claus
parents: 326
diff changeset
   314
    self flushPathCaches
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   315
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   316
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   317
     Smalltalk initSystemPath
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   318
     Smalltalk systemPath
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   319
    "
162
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   320
!
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   321
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   322
isInitialized
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   323
    "this returns true, if the system is properly initialized;
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   324
     i.e. false during startup. Especially, the whole viewing stuff is
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   325
     not working correctly until initialized."
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   326
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   327
    ^ Initializing not
161
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
   328
! !
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
   329
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   330
!Smalltalk class methodsFor:'accessing'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   331
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   332
at:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   333
    "retrieve the value stored under aKey, a symbol. 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   334
     Return nil if not present (this will be changed to trigger an error)"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   335
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   336
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   337
    extern OBJ __GLOBAL_GET();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   338
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   339
    RETURN ( __GLOBAL_GET(aKey) );
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   340
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   341
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   342
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   343
includesKey:aKey
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   344
    "return true, if the key is known"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   345
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   346
%{  /* NOCONTEXT */
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   347
    extern OBJ __GLOBAL_KEYKNOWN();
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   348
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   349
    RETURN ( __GLOBAL_KEYKNOWN(aKey) );
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   350
%}
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   351
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   352
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   353
at:aKey ifAbsent:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   354
    "retrieve the value stored at aKey.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   355
     If there is nothing stored under this key, return the value of
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   356
     the evaluation of aBlock."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   357
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   358
    (self includesKey:aKey) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   359
	^ self at:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   360
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   361
    ^ aBlock value
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   362
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   363
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   364
     Smalltalk at:#fooBar                       <- returns nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   365
     Smalltalk at:#fooBar ifAbsent:['sorry']    <- no error
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   366
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   367
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   368
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   369
at:aKey put:aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   370
    "store the argument aValue under aKey, a symbol"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   371
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   372
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   373
    |oldValue|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   374
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   375
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   376
    extern OBJ __GLOBAL_SET();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   377
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   378
    oldValue = __GLOBAL_SET(aKey, aValue, (OBJ *)0);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   379
%}.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   380
    CachedClasses notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   381
	oldValue isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   382
	    CachedClasses remove:oldValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   383
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   384
	aValue isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   385
	    CachedClasses add:aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   386
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   387
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   388
    ^ aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   389
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   390
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   391
    extern OBJ __GLOBAL_SET();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   392
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   393
    (void) __GLOBAL_SET(aKey, aValue, (OBJ *)0);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   394
%}.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   395
    CachedClasses := nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   396
    ^ aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   397
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   398
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   399
removeKey:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   400
    "remove the argument from the globals dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   401
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   402
    CachedClasses := nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   403
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   404
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   405
    extern OBJ __GLOBAL_REMOVE();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   406
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   407
    RETURN ( __GLOBAL_REMOVE(aKey) );
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   408
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   409
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   410
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   411
keyAtValue:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   412
    "return the symbol under which anObject is stored - or nil"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   413
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   414
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   415
	(self at:aKey) == anObject ifTrue:[^ aKey]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   416
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   417
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   418
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   419
    "Smalltalk keyAtValue:Object"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   420
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   421
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   422
keys
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   423
    "return a collection with all keys in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   424
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   425
    |keys|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   426
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   427
    keys := IdentitySet new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   428
    self keysDo:[:k | keys add:k].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   429
    ^ keys
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   430
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   431
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   432
!Smalltalk class methodsFor:'binary storage'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   433
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   434
addGlobalsTo: globalDictionary manager: manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   435
    |pools|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   436
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   437
    pools := Set new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   438
    self associationsDo:[:assoc |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   439
	assoc value == self ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   440
	    assoc value isClass ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   441
		assoc value addGlobalsTo:globalDictionary manager:manager.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   442
		pools addAll:assoc value sharedPools
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   443
	    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   444
		globalDictionary at:assoc put:self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   445
	    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   446
	    assoc value isNil ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   447
		globalDictionary at:assoc value put:self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   448
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   449
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   450
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   451
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   452
    pools do:[:poolDictionary|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   453
	poolDictionary addGlobalsTo:globalDictionary manager:manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   454
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   455
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   456
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   457
storeBinaryDefinitionOf: anObject on: stream manager: manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   458
    |string|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   459
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   460
    anObject class == Association ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   461
	string := 'Smalltalk associationAt: ', anObject key storeString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   462
    ] ifFalse: [
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   463
	string := 'Smalltalk at: ', (self keyAtValue: anObject) storeString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   464
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   465
    stream nextNumber:2 put:string size.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   466
    string do:[:char | stream nextPut:char asciiValue]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   467
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   468
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   469
!Smalltalk class methodsFor:'browsing'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   470
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   471
browseChanges
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   472
    "startup a changes browser"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   473
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   474
    ChangesBrowser notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   475
	ChangesBrowser open
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   476
    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   477
	self warn:'no ChangesBrowser built in'
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   478
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   479
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   480
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   481
     Smalltalk browseChanges
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   482
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   483
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   484
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   485
browseAllSelect:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   486
    "startup a browser for all methods for which aBlock returns true"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   487
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   488
    SystemBrowser browseAllSelect:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   489
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   490
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   491
     Smalltalk browseAllSelect:[:m | m literals isNil]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   492
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   493
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   494
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   495
browseImplementorsOf:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   496
    "startup a browser for all methods implementing a particular message"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   497
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   498
    SystemBrowser browseImplementorsOf:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   499
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   500
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   501
     Smalltalk browseImplementorsOf:#at:put: 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   502
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   503
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   504
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   505
browseAllCallsOn:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   506
    "startup a browser for all methods sending a particular message"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   507
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   508
    SystemBrowser browseAllCallsOn:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   509
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   510
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   511
     Smalltalk browseAllCallsOn:#at:put: 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   512
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   513
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   514
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   515
!Smalltalk class methodsFor:'class management'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   516
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   517
flushCachedClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   518
    CachedClasses := nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   519
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   520
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   521
renameClass:aClass to:newName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   522
    "rename aClass to newName"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   523
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   524
    |oldName oldSym newSym names cSym value|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   525
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   526
    oldName := aClass name.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   527
    oldSym := oldName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   528
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   529
    ((self at:oldSym) == aClass) ifFalse:[^ self].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   530
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   531
    "rename the class"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   532
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   533
    aClass setName:newName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   534
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   535
    "and its meta"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   536
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   537
    aClass class setName:(newName , 'class').
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   538
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   539
    "store it in Smalltalk"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   540
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   541
    newSym := newName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   542
    self at:oldSym put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   543
    self removeKey:oldSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   544
    self at:newSym put:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   545
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   546
    "rename class variables"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   547
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   548
    names := aClass classVariableString asCollectionOfWords.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   549
    names do:[:name |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   550
	cSym := (oldSym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   551
	value := self at:cSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   552
	self at:cSym put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   553
	self removeKey:cSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   554
	cSym := (newSym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   555
	self at:cSym put:value.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   556
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   557
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   558
    aClass updateVersionString.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   559
    aClass addChangeRecordForClassRename:oldName to:newName
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   560
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   561
    "Created: 29.10.1995 / 19:58:32 / cg"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   562
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   563
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   564
removeClass:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   565
    "remove the argument, aClass from the smalltalk dictionary;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   566
     we have to flush the caches since these methods are now void.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   567
     Also, class variables of aClass are removed."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   568
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   569
    |sym cSym names oldName|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   570
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   571
    oldName := aClass name.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   572
    sym := oldName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   573
    ((self at:sym) == aClass) ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   574
	"check other name ..."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   575
	(self includes:aClass) ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   576
	    'SMALLTALK: no such class: ' errorPrint. oldName errorPrintNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   577
	    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   578
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   579
	"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   580
	 the class has changed its name - without telling me ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   581
	 what should be done in this case ?
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   582
	"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   583
	'SMALLTALK: class ' errorPrint. oldName errorPrint.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   584
	' has changed its name' errorPrintNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   585
	^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   586
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   587
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   588
    self at:sym put:nil.    "nil it out for compiled accesses"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   589
    self removeKey:sym.     "remove key - this actually fails, if there are
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   590
			     still compiled code references."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   591
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   592
    "remove class variables"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   593
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   594
    names := aClass classVariableString asCollectionOfWords.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   595
    names do:[:name |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   596
	cSym := (sym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   597
	self at:cSym asSymbol put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   598
	self removeKey:cSym
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   599
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   600
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   601
    actually could get along with less flushing
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   602
    (entries for aClass and subclasses only)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   603
    but we have to delay this, until we have the set of subclasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   604
    at hand - for now, searching for all subclasses is way more
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   605
    expensive then cache flushing.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   606
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   607
    aClass allSubclassesDo:[:aSubclass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   608
	ObjectMemory flushInlineCachesForClass:aSubclass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   609
	ObjectMemory flushMethodCacheFor:aSubclass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   610
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   611
    ObjectMemory flushInlineCachesForClass:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   612
    ObjectMemory flushMethodCacheFor:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   613
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   614
    ObjectMemory flushInlineCaches.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   615
    ObjectMemory flushMethodCache.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   616
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   617
    aClass addChangeRecordForClassRemove:oldName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   618
    self changed:#classRemove with:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   619
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   620
    aClass category:#removed.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   621
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   622
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   623
!Smalltalk class methodsFor:'copying'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   624
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   625
shallowCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   626
    "redefine copy - there is only one Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   627
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   628
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   629
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   630
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   631
simpleDeepCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   632
    "redefine copy - there is only one Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   633
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   634
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   635
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   636
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   637
deepCopyUsing:aDictionary
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   638
    "redefine copy - there is only one Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   639
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   640
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   641
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   642
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   643
deepCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   644
    "redefine copy - there is only one Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   645
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   646
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   647
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   648
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   649
!Smalltalk class methodsFor:'debugging ST/X'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   650
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   651
debugBreakPoint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   652
    "call the dummy debug function, on which a breakpoint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   653
     can be put in adb, sdb, dbx or gdb.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   654
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   655
	      it will be removed without notice."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   656
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   657
    _PATCHUPCONTEXTS(__context);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   658
    debugBreakPoint();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   659
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   660
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   661
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   662
printPolyCaches
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   663
    "dump poly caches.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   664
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   665
	      it will be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   666
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   667
    __dumpILCCaches();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   668
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   669
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   670
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   671
printStackBacktrace
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   672
    "print a stack backtrace - then continue.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   673
     (You may turn off the stack print with debugPrinting:false)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   674
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   675
	      it will be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   676
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   677
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   678
    __printStack(__context);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   679
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   680
    "Smalltalk printStackBacktrace"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   681
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   682
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   683
printSymbols
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   684
    "dump the internal symbol table.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   685
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   686
	      it will be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   687
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   688
    __dumpSymbols();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   689
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   690
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   691
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   692
fatalAbort:aMessage
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   693
    "report a fatal-error; print a stack backtrace and exit with core dump
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   694
     (You may turn off the stack print with debugPrinting:false)"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   695
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   696
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   697
    char *msg;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   698
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   699
    if (__isString(aMessage))
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   700
	msg = (char *) _stringVal(aMessage);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   701
    else
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   702
	msg = "fatalAbort";
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   703
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   704
    __fatal0(__context, msg);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   705
    /* NEVER RETURNS */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   706
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   707
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   708
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   709
fatalAbort
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   710
    "report a fatal-error, print a stack backtrace and exit with core dump.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   711
     (You may turn off the stack print with debugPrinting:false)"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   712
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   713
    __fatal0(__context, "fatalAbort");
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   714
    /* NEVER RETURNS */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   715
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   716
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   717
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   718
exitWithCoreDump
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   719
    "abort program and dump core"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   720
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   721
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   722
    abort();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   723
    /* NEVER RETURNS */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   724
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   725
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   726
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   727
statistic
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   728
    "print some statistic data.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   729
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   730
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   731
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   732
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   733
    __STATISTIC__();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   734
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   735
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   736
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   737
debugOn
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   738
    "turns some tracing on.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   739
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   740
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   741
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   742
    "LookupTrace := true.   "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   743
    "AllocTrace := true.     "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   744
    ObjectMemory flushCaches
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   745
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   746
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   747
debugOff
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   748
    "turns tracing off.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   749
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   750
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   751
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   752
    LookupTrace := nil.    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   753
    ". AllocTrace := nil     "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   754
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   755
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   756
executionDebugOn
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   757
    "turns tracing of interpreter on.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   758
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   759
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   760
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   761
    ExecutionTrace := true
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   762
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   763
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   764
executionDebugOff
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   765
    "turns tracing of interpreter off.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   766
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   767
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   768
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   769
    ExecutionTrace := nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   770
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   771
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   772
!Smalltalk class methodsFor:'enumerating'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   773
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   774
do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   775
    "evaluate the argument, aBlock for all values in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   776
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   777
    |work|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   778
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   779
%{  /* NOREGISTER - work may not be placed into a register here */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   780
    __GLOBALS_DO(&aBlock, &work COMMA_CON);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   781
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   782
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   783
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   784
allBehaviorsDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   785
    "evaluate the argument, aBlock for all classes in the system"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   786
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   787
    CachedClasses isNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   788
	self allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   789
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   790
    CachedClasses do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   791
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   792
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   793
     Smalltalk allBehaviorsDo:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   794
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   795
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   796
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   797
keysDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   798
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   799
    |work|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   800
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   801
%{  /* NOREGISTER - work may not be placed into a register here */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   802
    __GLOBALKEYS_DO(&aBlock, &work COMMA_CON);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   803
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   804
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   805
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   806
allKeysDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   807
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   808
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   809
    ^ self keysDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   810
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   811
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   812
associationsDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   813
    "evaluate the argument, aBlock for all key/value pairs 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   814
     in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   815
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   816
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   817
	aBlock value:(aKey -> (self at:aKey))
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   818
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   819
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   820
    "Smalltalk associationsDo:[:assoc | assoc printNL]"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   821
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   822
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   823
keysAndValuesDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   824
    "evaluate the two-arg block, aBlock for all keys and values"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   825
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   826
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   827
	aBlock value:aKey value:(self at:aKey)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   828
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   829
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   830
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   831
allClassesDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   832
    "evaluate the argument, aBlock for all classes in the system.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   833
     Backward compatibility - use #allBehaviorsDo: for ST-80 compatibility."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   834
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   835
    ^ self allBehaviorsDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   836
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   837
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   838
     Smalltalk allClassesDo:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   839
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   840
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   841
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   842
allClassesInCategory:aCategory do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   843
    "evaluate the argument, aBlock for all classes in the aCategory;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   844
     The order of the classes is not defined."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   845
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   846
    aCategory notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   847
	self allBehaviorsDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   848
	    aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   849
		(aClass category = aCategory) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   850
		    aBlock value:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   851
		]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   852
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   853
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   854
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   855
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   856
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   857
     Smalltalk allClassesInCategory:'Views-Basic' do:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   858
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   859
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   860
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   861
allClassesInCategory:aCategory inOrderDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   862
    "evaluate the argument, aBlock for all classes in aCategory;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   863
     superclasses come first - then subclasses"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   864
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   865
    |classes|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   866
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   867
    aCategory notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   868
	classes := OrderedCollection new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   869
	self allBehaviorsDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   870
	    aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   871
		(aClass category = aCategory) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   872
		    classes add:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   873
		]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   874
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   875
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   876
	classes topologicalSort:[:a :b | b isSubclassOf:a].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   877
	classes do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   878
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   879
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   880
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   881
     Smalltalk allClassesInCategory:'Views-Basic' inOrderDo:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   882
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   883
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   884
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   885
!Smalltalk class methodsFor:'inspecting'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   886
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   887
inspectorClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   888
    "redefined to launch a DictionaryInspector
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   889
     (instead of the default Inspector)."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   890
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   891
    ^ DictionaryInspectorView
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   892
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   893
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   894
!Smalltalk class methodsFor:'message control'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   895
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   896
silentLoading
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   897
    "returns the Silentloading class variable."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   898
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   899
     ^ SilentLoading
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   900
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   901
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   902
silentLoading:aBoolean
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   903
    "allows access to the Silentloading class variable, which controls
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   904
     messages from all kinds of system onto the transcript.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   905
     You can save a snapshot with this flag set to true, which makes
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   906
     the image come up silent. Can also be set, to read in files unlogged."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   907
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   908
    |prev|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   909
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   910
    prev := SilentLoading.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   911
    SilentLoading := aBoolean.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   912
    ^ prev
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   913
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   914
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   915
!Smalltalk class methodsFor:'misc stuff'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   916
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   917
exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   918
    "finish Smalltalk system"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   919
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   920
    ObjectMemory changed:#aboutToQuit.  "/ for ST-80 compatibility
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   921
    ExitBlocks notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   922
	ExitBlocks do:[:aBlock |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   923
	    aBlock value
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   924
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   925
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   926
    OperatingSystem exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   927
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   928
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   929
     Smalltalk exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   930
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   931
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   932
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   933
addExitBlock:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   934
    "add a block to be executed when Smalltalk finishes.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   935
     This feature is currently not used anywhere - but could be useful for
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   936
     cleanup in stand alone applications."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   937
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   938
    ExitBlocks isNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   939
	ExitBlocks := OrderedCollection with:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   940
    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   941
	ExitBlocks add:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   942
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   943
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   944
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   945
sleep:aDelay
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   946
    "wait for aDelay seconds.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   947
     OBSOLETE: this is historical leftover and will be removed"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   948
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   949
    OperatingSystem sleep:aDelay
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   950
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   951
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   952
!Smalltalk class methodsFor:'queries'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   953
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   954
allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   955
    "return an unordered collection of all classes in the system.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   956
     Only globally anchored classes are returned 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   957
     (i.e. anonymous ones have to be aquired by Behavior allSubInstances)"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   958
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   959
    |classes|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   960
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   961
    "/ you may wander, what this while is for, here ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   962
    "/ the reason is that if we modify the class hierarchy in
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   963
    "/ anothe view (background fileIn), while building up the
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   964
    "/ cachedClasses set, this may be flushed (invalidated) by the
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   965
    "/ other process in the meanwhile.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   966
    "/ If that happens, we restart the set-building here
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   967
    "/
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   968
    [(classes := CachedClasses) isNil] whileTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   969
	CachedClasses := classes := IdentitySet new:800. 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   970
	self do:[:anObject |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   971
	    anObject notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   972
		anObject isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   973
		    classes add:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   974
		]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   975
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   976
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   977
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   978
    ^ classes
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   979
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   980
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   981
     Smalltalk allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   982
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   983
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   984
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   985
classNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   986
    "return the class with name aString, or nil if absent.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   987
     To get to the metaClass, append 'class' to the string."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   988
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   989
    |cls str sym|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   990
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   991
    "be careful, to not invent new symbols ..."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   992
    sym := aString asSymbolIfInterned.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   993
    sym notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   994
	cls := self at:sym ifAbsent:[].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   995
	cls isNil ifTrue:[^ nil].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   996
	cls isBehavior ifTrue:[^ cls]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   997
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   998
    (aString endsWith:'class') ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   999
	str := aString copyTo:(aString size - 5).
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1000
	sym := str asSymbolIfInterned.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1001
	sym notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1002
	    cls := self at:sym ifAbsent:[].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1003
	    cls isNil ifTrue:[^ nil].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1004
	    cls isBehavior ifTrue:[^ cls]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1005
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1006
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1007
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1008
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1009
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1010
     Smalltalk classNamed:'Object'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1011
     Smalltalk classNamed:'fooBar' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1012
     Smalltalk classNamed:'true'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1013
     Smalltalk classNamed:'Objectclass'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1014
     Smalltalk classNamed:'Metaclass'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1015
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1016
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1017
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1018
numberOfGlobals
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1019
    "return the number of global variables in the system"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1020
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1021
    |tally "{ Class: SmallInteger }" |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1022
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1023
    tally := 0.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1024
    self do:[:obj | tally := tally + 1].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1025
    ^ tally
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1026
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1027
    "Smalltalk numberOfGlobals"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1028
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1029
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1030
cellAt:aName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1031
    "return the address of a global cell
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1032
     - used internally for compiler only"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1033
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1034
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1035
    extern OBJ __GLOBAL_GETCELL();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1036
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1037
    RETURN ( __GLOBAL_GETCELL(aName) );
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1038
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1039
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1040
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1041
classNames
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1042
    "return a collection of all classNames in the system"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1043
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1044
    ^ self allClasses collect:[:aClass | aClass name]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1045
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1046
    "Smalltalk classNames"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1047
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1048
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1049
classnameCompletion:aPartialClassName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1050
    "given a partial classname, return an array consisting of
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1051
     2 entries: 1st: collection consisting of matching names
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1052
		2nd: the longest match"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1053
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1054
    |matches best|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1055
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1056
    matches := SortedCollection new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1057
    self allClassesDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1058
	aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1059
	    (aClass name startsWith:aPartialClassName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1060
		matches add:aClass name
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1061
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1062
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1063
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1064
    matches isEmpty ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1065
	^ Array with:aPartialClassName with:(Array with:aPartialClassName)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1066
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1067
    matches size == 1 ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1068
	^ Array with:matches first with:(matches asArray)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1069
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1070
    best := matches longestCommonPrefix.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1071
    ^ Array with:best with:matches asArray
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1072
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1073
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1074
     Smalltalk classnameCompletion:'Arr' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1075
     Smalltalk classnameCompletion:'Arra' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1076
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1077
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1078
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1079
selectorCompletion:aPartialSymbolName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1080
    "given a partial selector, return an array consisting of
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1081
     2 entries: 1st: collection consisting of matching implemented selectors
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1082
		2nd: the longest match"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1083
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1084
    |matches best|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1085
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1086
    matches := IdentitySet new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1087
    self allClassesDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1088
	aClass selectorArray do:[:aSelector |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1089
	    (aSelector startsWith:aPartialSymbolName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1090
		matches add:aSelector
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1091
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1092
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1093
	aClass class selectorArray do:[:aSelector |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1094
	    (aSelector startsWith:aPartialSymbolName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1095
		matches add:aSelector
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1096
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1097
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1098
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1099
    matches := matches asSortedCollection.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1100
    matches isEmpty ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1101
	^ Array with:aPartialSymbolName with:(Array with:aPartialSymbolName)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1102
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1103
    matches size == 1 ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1104
	^ Array with:matches first with:(matches asArray)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1105
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1106
    best := matches longestCommonPrefix.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1107
    ^ Array with:best with:matches asArray
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1108
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1109
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1110
     Smalltalk selectorCompletion:'at:p'  
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1111
     Smalltalk selectorCompletion:'nextP' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1112
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1113
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1114
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1115
includes:something
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1116
    "this should come from Collection.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1117
     will change the inheritance - Smalltalk is actually a collection"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1118
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1119
    self do:[:element | element = something ifTrue:[^ true]].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1120
    ^ false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1121
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1122
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1123
references:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1124
    "redefined, since the references are only kept in the VM's symbol table"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1125
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1126
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1127
	(key == anObject) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1128
	(val == anObject ) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1129
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1130
    ^ super references:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1131
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1132
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1133
referencesDerivedInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1134
    "redefined, since the references are only kept in the VM's symbol table"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1135
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1136
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1137
	(key isKindOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1138
	(val isKindOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1139
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1140
    ^ super referencesDerivedInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1141
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1142
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1143
referencesInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1144
    "redefined, since the references are only kept in the VM's symbol table"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1145
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1146
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1147
	(key isMemberOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1148
	(val isMemberOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1149
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1150
    ^ super referencesInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1151
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1152
161
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
  1153
!Smalltalk class methodsFor:'startup'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1154
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1155
start
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1156
    "main startup, if there is a Display, initialize it
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1157
     and start dispatching; otherwise go into a read-eval-print loop."
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1158
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1159
    |idx haveStartupFile|
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1160
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1161
    haveStartupFile := true.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1162
    Initializing := true.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1163
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1164
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1165
     while reading patches- and rc-file, do not add things into change-file
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1166
    "
421
claus
parents: 419
diff changeset
  1167
    Class withoutUpdatingChangesDo:[
423
claus
parents: 421
diff changeset
  1168
	"
claus
parents: 421
diff changeset
  1169
	 look for a '-e filename' argument - this will force evaluation of
claus
parents: 421
diff changeset
  1170
	 filename only, no standard startup
claus
parents: 421
diff changeset
  1171
	"
claus
parents: 421
diff changeset
  1172
	idx := Arguments indexOf:'-e'.
claus
parents: 421
diff changeset
  1173
	idx ~~ 0 ifTrue:[
421
claus
parents: 419
diff changeset
  1174
	    self fileIn:(Arguments at:idx + 1).
claus
parents: 419
diff changeset
  1175
	    self exit
423
claus
parents: 421
diff changeset
  1176
	].
claus
parents: 421
diff changeset
  1177
claus
parents: 421
diff changeset
  1178
	self secureFileIn:'patches'.
claus
parents: 421
diff changeset
  1179
claus
parents: 421
diff changeset
  1180
	(self secureFileIn:((Arguments at:1) , '.rc')) ifFalse:[
421
claus
parents: 419
diff changeset
  1181
	    "no .rc file where executable is; try default smalltalk.rc"
claus
parents: 419
diff changeset
  1182
	    (self secureFileIn:'smalltalk.rc') ifFalse:[
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1183
		Transcript showCr:'SMALLTALK: no startup rc-file found. Going into line-by-line interpreter.'.
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1184
		haveStartupFile := false.
421
claus
parents: 419
diff changeset
  1185
	    ]
423
claus
parents: 421
diff changeset
  1186
	].
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1187
    ].
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1188
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1189
    (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false" 
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1190
	Transcript showCr:(self hello).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1191
	Transcript showCr:(self copyrightString).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1192
	Transcript cr.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1193
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1194
	DemoMode ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1195
	    Transcript showCr:'*** Restricted use:                              ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1196
	    Transcript showCr:'*** This program may be used for education only. ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1197
	    Transcript showCr:'*** Please read the files COPYRIGHT and LICENSE  ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1198
	    Transcript showCr:'*** for more details.                            ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1199
	    Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1200
	].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1201
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1202
85
claus
parents: 77
diff changeset
  1203
    "
357
claus
parents: 356
diff changeset
  1204
     enable the graphical debugger/inspector 
claus
parents: 356
diff changeset
  1205
     (they could have been (re)defined as autoloaded in the patches file)
85
claus
parents: 77
diff changeset
  1206
    "
claus
parents: 77
diff changeset
  1207
    self initStandardTools.
claus
parents: 77
diff changeset
  1208
claus
parents: 77
diff changeset
  1209
    "
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1210
     if there is a display, start its event dispatcher 
85
claus
parents: 77
diff changeset
  1211
    "
8
639f407faddd last version before big change in dispatch
claus
parents: 7
diff changeset
  1212
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1213
	Display startDispatch.
8
639f407faddd last version before big change in dispatch
claus
parents: 7
diff changeset
  1214
    ].
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1215
162
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
  1216
    Initializing := false.
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
  1217
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1218
    (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1219
	StartupClass perform:StartupSelector withArguments:StartupArguments.
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1220
    ].
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1221
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1222
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1223
     if view-classes exist, start dispatching;
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1224
     otherwise go into a read-eval-print loop
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1225
    "
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1226
    (Display notNil and:[haveStartupFile]) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1227
	Processor dispatchLoop
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1228
    ] ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1229
	self readEvalPrint
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1230
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1231
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1232
    "done"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1233
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1234
    self exit
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1235
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1236
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1237
readEvalPrint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1238
    "simple read-eval-print loop for non-graphical Minitalk"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1239
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1240
    |text|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1241
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1242
    'ST- ' print.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1243
    Stdin skipSeparators.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1244
    Stdin atEnd ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1245
	text := Stdin nextChunk.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1246
	[text notNil] whileTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1247
	    (Compiler evaluate:text) printNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1248
	    'ST- ' print.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1249
	    text := Stdin nextChunk
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1250
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1251
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1252
    '' printNL
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1253
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1254
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1255
restart
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1256
    "startup after an image has been loaded;
10
claus
parents: 8
diff changeset
  1257
     there are three change-notifications made to dependents of ObjectMemory,
claus
parents: 8
diff changeset
  1258
     which allow a stepwise re-init: #earlyRestart, #restarted and #returnFromSnapshot.
335
claus
parents: 329
diff changeset
  1259
10
claus
parents: 8
diff changeset
  1260
     #earlyRestart is send first, nothing has been setup yet.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1261
		   (should be used to flush all device dependent entries)
335
claus
parents: 329
diff changeset
  1262
10
claus
parents: 8
diff changeset
  1263
     #restarted is send right after.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1264
		   (should be used to recreate external resources (fds, bitmaps etc)
335
claus
parents: 329
diff changeset
  1265
10
claus
parents: 8
diff changeset
  1266
     #returnFromSnapshot is sent last
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1267
		   (should be used to restart processes, reOpen Streams which cannot
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1268
		    be automatically be reopened (i.e. Sockets, Pipes) and so on.
335
claus
parents: 329
diff changeset
  1269
		   (Notice that positionable fileStreams are already reopened and repositioned)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1270
     "
10
claus
parents: 8
diff changeset
  1271
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1272
    |deb insp imageName|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1273
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1274
    Initializing := true.
335
claus
parents: 329
diff changeset
  1275
claus
parents: 329
diff changeset
  1276
    "
claus
parents: 329
diff changeset
  1277
     flush cached path directories (may have changed in the meanwhile)
claus
parents: 329
diff changeset
  1278
    "
329
claus
parents: 326
diff changeset
  1279
    self flushPathCaches.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1280
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1281
    "temporary switch back to dumb interface - 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1282
     to handle errors while view-stuff is not yet reinitialized"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1283
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1284
    insp := Inspector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1285
    deb := Debugger.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1286
    Inspector := MiniInspector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1287
    Debugger := MiniDebugger.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1288
335
claus
parents: 329
diff changeset
  1289
    "
claus
parents: 329
diff changeset
  1290
     reinitialize the Processor
claus
parents: 329
diff changeset
  1291
    "
claus
parents: 329
diff changeset
  1292
    Processor reinitialize.
claus
parents: 329
diff changeset
  1293
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1294
    ObjectMemory changed:#earlyRestart.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1295
    ObjectMemory changed:#restarted.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1296
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1297
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1298
     some must be reinitialized before ...
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1299
     - sorry, but order is important
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1300
    "
62
e1b4369c61fb *** empty log message ***
claus
parents: 50
diff changeset
  1301
    Workstation notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1302
	Workstation reinitialize.
62
e1b4369c61fb *** empty log message ***
claus
parents: 50
diff changeset
  1303
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1304
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1305
    ObjectMemory changed:#returnFromSnapshot.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1306
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1307
    OperatingSystem enableUserInterrupts.
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1308
    OperatingSystem enableHardSignalInterrupts.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1309
335
claus
parents: 329
diff changeset
  1310
    "now, display and view-stuff works;
claus
parents: 329
diff changeset
  1311
     back to the previous debugging interface
claus
parents: 329
diff changeset
  1312
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1313
    Inspector := insp.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1314
    Debugger := deb.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1315
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1316
    Initializing := false.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1317
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1318
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1319
     if there is no Transcript, go to stderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1320
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1321
    Transcript isNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1322
	self initStandardStreams.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1323
	Transcript := Stderr
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1324
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1325
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1326
    (SilentLoading == true) ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1327
	Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1328
	Transcript showCr:('Smalltalk restarted from:' , ObjectMemory imageName).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1329
	Transcript cr.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1330
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1331
	DemoMode ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1332
	    Transcript showCr:'*** Restricted use:                              ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1333
	    Transcript showCr:'*** This program may be used for education only. ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1334
	    Transcript showCr:'*** Please read the files COPYRIGHT and LICENSE  ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1335
	    Transcript showCr:'*** for more details.                            ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1336
	    Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1337
	].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1338
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1339
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1340
    "
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1341
     give user a chance to re-customize things
335
claus
parents: 329
diff changeset
  1342
     reading if smalltalk_r.rc may be suppressed by the
claus
parents: 329
diff changeset
  1343
     -fastStart argument.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1344
    "
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1345
    (Arguments includes:'-faststart') ifFalse:[
423
claus
parents: 421
diff changeset
  1346
	Class withoutUpdatingChangesDo:[
421
claus
parents: 419
diff changeset
  1347
	    (self fileIn:((Arguments at:1) , '_r.rc')) ifFalse:[
423
claus
parents: 421
diff changeset
  1348
		"no _r.rc file where executable is; try default smalltalk_r.rc"
claus
parents: 421
diff changeset
  1349
		self fileIn:'smalltalk_r.rc'
421
claus
parents: 419
diff changeset
  1350
	    ].
claus
parents: 419
diff changeset
  1351
	]
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1352
    ].
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1353
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1354
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1355
     if there is a display, start its event dispatcher 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1356
    "
10
claus
parents: 8
diff changeset
  1357
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1358
	Display startDispatch.
10
claus
parents: 8
diff changeset
  1359
    ].
claus
parents: 8
diff changeset
  1360
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1361
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1362
     this allows firing an application by defining
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1363
     these two globals during snapshot ... or in main
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1364
    "
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1365
    (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
335
claus
parents: 329
diff changeset
  1366
	"
claus
parents: 329
diff changeset
  1367
	 allow more customization by reading an image specific rc-file
claus
parents: 329
diff changeset
  1368
	"
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1369
	imageName := ObjectMemory imageName.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1370
	imageName notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1371
	    (imageName endsWith:'.img') ifTrue:[
359
claus
parents: 357
diff changeset
  1372
		imageName := imageName copyWithoutLast:4
claus
parents: 357
diff changeset
  1373
	    ].
claus
parents: 357
diff changeset
  1374
	    self fileIn:(imageName , '.rc')
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1375
	].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1376
	StartupClass perform:StartupSelector withArguments:StartupArguments.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1377
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1378
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1379
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1380
     if view-classes exist, start dispatching;
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1381
     otherwise go into a read-eval-print loop
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1382
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1383
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1384
	Processor dispatchLoop
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1385
    ] ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1386
	self readEvalPrint
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1387
    ].
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1388
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1389
    self exit
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1390
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1391
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1392
startupClass:aClass selector:aSymbol arguments:anArrayOrNil
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1393
    "set the class, selector and arguments to be performed when smalltalk
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1394
     starts. Setting those before saving a snapshot, will make the saved
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1395
     image come up executing your application (instead of the normal mainloop)"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1396
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1397
    StartupClass := aClass.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1398
    StartupSelector := aSymbol.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1399
    StartupArguments := anArrayOrNil
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1400
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1401
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1402
startupClass
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1403
    "return the class, that will get the start message when smalltalk
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1404
     starts and its non-nil. Usually this is nil, but saving an image 
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1405
     with a non-nil StartupClass allows stand-alone applications"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1406
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1407
    ^ StartupClass
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1408
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1409
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1410
startupSelector
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1411
    "return the selector, that will be sent to StartupClass"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1412
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1413
    ^ StartupSelector
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1414
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1415
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1416
startupArguments
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1417
    "return the arguments passed to StartupClass"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1418
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1419
    ^ StartupArguments
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1420
! !
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1421
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1422
!Smalltalk class methodsFor:'system management'!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1423
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1424
searchPath:aPath for:aFileName in:aDirName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1425
    "search aPath for a subdirectory named aDirectory with a file
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1426
     named aFileName"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1427
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1428
    aPath do:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1429
	|realName|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1430
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1431
	(OperatingSystem isReadable:(realName := dirName , '/' , aDirName , '/' , aFileName)) ifTrue: [
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1432
	    ^ realName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1433
	]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1434
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1435
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1436
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1437
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1438
language
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1439
    "return the language setting"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1440
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1441
    ^ Language
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1442
!
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1443
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1444
languageTerritory
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1445
    "return the language territory setting"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1446
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1447
    ^ LanguageTerritory
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1448
!
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1449
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1450
logDoits
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1451
    "return true if doits should go into the changes file
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1452
     as well as changes - by default, this is off, since
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1453
     it can blow up the changes file enormously ...
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1454
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1455
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1456
    ^ LogDoits
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1457
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1458
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1459
     LogDoits := false
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1460
     LogDoits := true
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1461
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1462
!
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1463
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1464
loadBinaries:aBoolean
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1465
    "turn on/off loading of binary objects"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1466
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1467
    LoadBinaries := aBoolean
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1468
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1469
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1470
logDoits:aBoolean
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1471
    "turn on/off logging of doits in the changes file.
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1472
     By default, this is off, since it can blow up the 
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1473
     changes file enormously ...
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1474
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1475
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1476
    LogDoits := aBoolean
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1477
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1478
!
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1479
329
claus
parents: 326
diff changeset
  1480
getSourceFileName:aFileName
claus
parents: 326
diff changeset
  1481
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1482
     (subdirectories named 'source' in SystemPath);
claus
parents: 326
diff changeset
  1483
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1484
claus
parents: 326
diff changeset
  1485
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1486
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1487
claus
parents: 326
diff changeset
  1488
	^ aFileName
claus
parents: 326
diff changeset
  1489
    ].
claus
parents: 326
diff changeset
  1490
claus
parents: 326
diff changeset
  1491
    SourcePath isNil ifTrue:[
claus
parents: 326
diff changeset
  1492
	SourcePath := self constructPathFor:'source'
claus
parents: 326
diff changeset
  1493
    ].
claus
parents: 326
diff changeset
  1494
claus
parents: 326
diff changeset
  1495
    ^ self searchPath:SourcePath for:aFileName in:'source' 
claus
parents: 326
diff changeset
  1496
claus
parents: 326
diff changeset
  1497
    "
claus
parents: 326
diff changeset
  1498
     Smalltalk getSourceFileName:'Smalltalk.st'
claus
parents: 326
diff changeset
  1499
    "
claus
parents: 326
diff changeset
  1500
!
claus
parents: 326
diff changeset
  1501
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1502
systemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1503
    "return a collection of directorynames, where smalltalk
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1504
     looks for system files 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1505
     (usually in subdirs such as resources, bitmaps, source etc.)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1506
     see comment in Smalltalk>>initSystemPath."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1507
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1508
    ^ SystemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1509
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1510
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1511
     Smalltalk systemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1512
     Smalltalk systemPath addLast:'someOtherDirectoryPath'
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1513
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1514
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1515
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1516
realSystemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1517
    "return the realSystemPath - thats the directorynames from
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1518
     SystemPath which exist and are readable"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1519
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1520
    RealSystemPath isNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1521
	RealSystemPath := SystemPath select:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1522
	    (OperatingSystem isDirectory:dirName)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1523
	    and:[OperatingSystem isReadable:dirName]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1524
	].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1525
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1526
    ^ RealSystemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1527
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1528
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1529
constructPathFor:aDirectoryName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1530
    "search for aDirectory in SystemPath"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1531
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1532
    ^ self realSystemPath select:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1533
	OperatingSystem isDirectory:(dirName , '/' , aDirectoryName)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1534
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1535
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1536
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1537
loadBinaries
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1538
    "return true, if binaries should be loaded into the system,
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1539
     false if this should be suppressed. The default is false (for now)."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1540
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1541
    ^ LoadBinaries
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1542
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1543
329
claus
parents: 326
diff changeset
  1544
getResourceFileName:aFileName
claus
parents: 326
diff changeset
  1545
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1546
     (subdirectories named 'resource' in SystemPath);
claus
parents: 326
diff changeset
  1547
     return the absolute filename or nil if none is found."
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1548
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1549
    (aFileName startsWith:'/') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1550
	"dont use path for absolute file names"
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1551
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1552
	^ aFileName
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1553
    ].
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1554
329
claus
parents: 326
diff changeset
  1555
    ResourcePath isNil ifTrue:[
claus
parents: 326
diff changeset
  1556
	ResourcePath := self constructPathFor:'resources'
claus
parents: 326
diff changeset
  1557
    ].
claus
parents: 326
diff changeset
  1558
claus
parents: 326
diff changeset
  1559
    ^ self searchPath:ResourcePath for:aFileName in:'resources' 
claus
parents: 326
diff changeset
  1560
claus
parents: 326
diff changeset
  1561
    "
claus
parents: 326
diff changeset
  1562
     Smalltalk getResourceFileName:'SBrowser.rs'
claus
parents: 326
diff changeset
  1563
    "
claus
parents: 326
diff changeset
  1564
!
claus
parents: 326
diff changeset
  1565
claus
parents: 326
diff changeset
  1566
getBitmapFileName:aFileName
claus
parents: 326
diff changeset
  1567
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1568
     (subdirectories named 'bitmaps' in SystemPath);
claus
parents: 326
diff changeset
  1569
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1570
claus
parents: 326
diff changeset
  1571
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1572
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1573
claus
parents: 326
diff changeset
  1574
	^ aFileName
claus
parents: 326
diff changeset
  1575
    ].
claus
parents: 326
diff changeset
  1576
claus
parents: 326
diff changeset
  1577
    BitmapPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1578
	BitmapPath := self constructPathFor:'bitmaps'
claus
parents: 326
diff changeset
  1579
    ].
claus
parents: 326
diff changeset
  1580
claus
parents: 326
diff changeset
  1581
    ^ self searchPath:BitmapPath for:aFileName in:'bitmaps' 
claus
parents: 326
diff changeset
  1582
claus
parents: 326
diff changeset
  1583
    "
claus
parents: 326
diff changeset
  1584
     Smalltalk getBitmapFileName:'SBrowser.xbm'
claus
parents: 326
diff changeset
  1585
    "
claus
parents: 326
diff changeset
  1586
!
claus
parents: 326
diff changeset
  1587
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1588
flushPathCaches
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1589
    RealSystemPath := ResourcePath := SourcePath := BitmapPath := BinaryPath := FileInPath := nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1590
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1591
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1592
bitmapFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1593
    "search aFileName in some standard places;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1594
     return a readonly fileStream or nil if not found.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1595
     Searches in subdirectories named 'bitmaps' in SystemPath"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1596
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1597
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1598
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1599
    aString := self getBitmapFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1600
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1601
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1602
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1603
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1604
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1605
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1606
getSystemFileName:aFileName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1607
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1608
     return the absolute filename or nil if none is found.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1609
     see comment in Smalltalk>>initSystemPath."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1610
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1611
    "credits for this method go to Markus ...."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1612
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1613
    (aFileName startsWith:'/') ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1614
	"dont use path for absolute file names"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1615
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1616
	^ aFileName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1617
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1618
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1619
    self realSystemPath do:[:dirName |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1620
	|realName|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1621
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1622
	realName := dirName , '/' , aFileName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1623
	(OperatingSystem isReadable:realName) ifTrue: [
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1624
	    ^ realName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1625
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1626
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1627
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1628
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1629
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1630
systemFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1631
    "search aFileName in some standard places;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1632
     return a readonly fileStream or nil if not found.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1633
     see comment in Smalltalk>>initSystemPath"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1634
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1635
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1636
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1637
    aString := self getSystemFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1638
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1639
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1640
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1641
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1642
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1643
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1644
systemPath:aPath
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1645
    "set the collection of directorynames, where smalltalk
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1646
     looks for system files 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1647
     (usually in subdirs such as resources, bitmaps, source etc.)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1648
     see comment in Smalltalk>>initSystemPath."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1649
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1650
    SystemPath := aPath.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1651
    self flushPathCaches
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1652
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1653
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1654
     Smalltalk systemPath
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1655
     Smalltalk systemPath:(Smalltalk systemPath copy addLast:'someOtherDirectoryPath')
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1656
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1657
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1658
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1659
resourceFileStreamFor:aFileName
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1660
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1661
     return a readonly fileStream or nil if not found.
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1662
     Searches in subdirectories named 'resource' in SystemPath"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1663
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1664
    |aString|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1665
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1666
    aString := self getResourceFileName:aFileName.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1667
    aString notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1668
	^ FileStream readonlyFileNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1669
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1670
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1671
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1672
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1673
sourceFileStreamFor:aFileName
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1674
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1675
     return a readonly fileStream or nil if not found.
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1676
     Searches in subdirectories named 'source' in SystemPath"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1677
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1678
    |aString|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1679
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1680
    aString := self getSourceFileName:aFileName.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1681
    aString notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1682
	^ FileStream readonlyFileNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1683
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1684
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1685
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1686
329
claus
parents: 326
diff changeset
  1687
getFileInFileName:aFileName
claus
parents: 326
diff changeset
  1688
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1689
     (subdirectories named 'fileIn' in SystemPath);
claus
parents: 326
diff changeset
  1690
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1691
claus
parents: 326
diff changeset
  1692
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1693
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1694
claus
parents: 326
diff changeset
  1695
	^ aFileName
claus
parents: 326
diff changeset
  1696
    ].
claus
parents: 326
diff changeset
  1697
claus
parents: 326
diff changeset
  1698
    FileInPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1699
	FileInPath := self constructPathFor:'fileIn'
claus
parents: 326
diff changeset
  1700
    ].
claus
parents: 326
diff changeset
  1701
claus
parents: 326
diff changeset
  1702
    ^ self searchPath:FileInPath for:aFileName in:'fileIn' 
claus
parents: 326
diff changeset
  1703
claus
parents: 326
diff changeset
  1704
!
claus
parents: 326
diff changeset
  1705
claus
parents: 326
diff changeset
  1706
getBinaryFileName:aFileName
claus
parents: 326
diff changeset
  1707
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1708
     (subdirectories named 'binary' in SystemPath);
claus
parents: 326
diff changeset
  1709
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1710
claus
parents: 326
diff changeset
  1711
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1712
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1713
claus
parents: 326
diff changeset
  1714
	^ aFileName
claus
parents: 326
diff changeset
  1715
    ].
claus
parents: 326
diff changeset
  1716
claus
parents: 326
diff changeset
  1717
    BinaryPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1718
	BinaryPath := self constructPathFor:'binary'
claus
parents: 326
diff changeset
  1719
    ].
claus
parents: 326
diff changeset
  1720
claus
parents: 326
diff changeset
  1721
    ^ self searchPath:BinaryPath for:aFileName in:'binary' 
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1722
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1723
10
claus
parents: 8
diff changeset
  1724
readAbbreviations
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1725
    "read classname to filename mappings from include/abbrev.stc.
329
claus
parents: 326
diff changeset
  1726
     sigh - all for those poor sys5.3 or MSDOS people with short filenames ..."
10
claus
parents: 8
diff changeset
  1727
345
claus
parents: 335
diff changeset
  1728
    |aStream line words|
10
claus
parents: 8
diff changeset
  1729
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1730
    CachedAbbreviations := IdentityDictionary new.
329
claus
parents: 326
diff changeset
  1731
    aStream := self systemFileStreamFor:'include/abbrev.stc'.
10
claus
parents: 8
diff changeset
  1732
    aStream notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1733
	[aStream atEnd] whileFalse:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1734
	    line := aStream nextLine.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1735
	    line notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1736
		(line startsWith:'#') ifFalse:[
345
claus
parents: 335
diff changeset
  1737
		    words := line asCollectionOfWords.
claus
parents: 335
diff changeset
  1738
		    words size >= 2 ifTrue:[
claus
parents: 335
diff changeset
  1739
			CachedAbbreviations     
claus
parents: 335
diff changeset
  1740
				at:(words at:1) withoutSeparators asSymbol 
claus
parents: 335
diff changeset
  1741
				put:(words at:2) withoutSeparators.
claus
parents: 335
diff changeset
  1742
		    ]
claus
parents: 335
diff changeset
  1743
		]
claus
parents: 335
diff changeset
  1744
	    ]
claus
parents: 335
diff changeset
  1745
	].
claus
parents: 335
diff changeset
  1746
	aStream close
claus
parents: 335
diff changeset
  1747
    ]
claus
parents: 335
diff changeset
  1748
claus
parents: 335
diff changeset
  1749
    "
claus
parents: 335
diff changeset
  1750
     Smalltalk readAbbreviations
claus
parents: 335
diff changeset
  1751
    "
claus
parents: 335
diff changeset
  1752
!
claus
parents: 335
diff changeset
  1753
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1754
fileInFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1755
    "search aFileName in some standard places;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1756
     return a readonly fileStream or nil if not found.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1757
     Searches in subdirectories named 'fileIn' in SystemPath"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1758
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1759
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1760
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1761
    aString := self getFileInFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1762
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1763
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1764
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1765
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1766
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1767
345
claus
parents: 335
diff changeset
  1768
libraryFileNameOfClass:aClassName
354
claus
parents: 352
diff changeset
  1769
    "read the libinfo file 'liblist.stc' and the abbreviation file 
claus
parents: 352
diff changeset
  1770
     'abbrev.stc' for an entry for aClassName.
claus
parents: 352
diff changeset
  1771
     Search for aClassName in the first col, and return the value found in
claus
parents: 352
diff changeset
  1772
     the 2nd (for the libinfo file) or the 3rd (for the abbrev file) col.
claus
parents: 352
diff changeset
  1773
     Return nil if no entry is found.
claus
parents: 352
diff changeset
  1774
345
claus
parents: 335
diff changeset
  1775
     A nil returns means that this class is either built-in or not present
claus
parents: 335
diff changeset
  1776
     in a package-class library (i.e. either as separate .o or separate .st file).
354
claus
parents: 352
diff changeset
  1777
     Otherwise, the returned name is the classLibrary object of that class."
345
claus
parents: 335
diff changeset
  1778
claus
parents: 335
diff changeset
  1779
    |aStream line words n|
claus
parents: 335
diff changeset
  1780
354
claus
parents: 352
diff changeset
  1781
    #('include/liblist.stc' 'include/abbrev.stc')
claus
parents: 352
diff changeset
  1782
    with:#(2 3) do:[:fileName :col |
claus
parents: 352
diff changeset
  1783
claus
parents: 352
diff changeset
  1784
	aStream := self systemFileStreamFor:fileName.
claus
parents: 352
diff changeset
  1785
	aStream notNil ifTrue:[
claus
parents: 352
diff changeset
  1786
	    [aStream atEnd] whileFalse:[
claus
parents: 352
diff changeset
  1787
		line := aStream nextLine.
claus
parents: 352
diff changeset
  1788
		line notNil ifTrue:[
claus
parents: 352
diff changeset
  1789
		    (line startsWith:'#') ifFalse:[
claus
parents: 352
diff changeset
  1790
			words := line asCollectionOfWords.
claus
parents: 352
diff changeset
  1791
			(n := words size) > 1 ifTrue:[
claus
parents: 352
diff changeset
  1792
			    (words at:1) = aClassName ifTrue:[
claus
parents: 352
diff changeset
  1793
				n >= col ifTrue:[
claus
parents: 352
diff changeset
  1794
				    ^ (words at:col) withoutSeparators
claus
parents: 352
diff changeset
  1795
				]
345
claus
parents: 335
diff changeset
  1796
			    ]
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1797
			]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1798
		    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1799
		]
357
claus
parents: 356
diff changeset
  1800
	    ].
claus
parents: 356
diff changeset
  1801
	    aStream close
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1802
	].
345
claus
parents: 335
diff changeset
  1803
    ].
354
claus
parents: 352
diff changeset
  1804
345
claus
parents: 335
diff changeset
  1805
    ^ nil
claus
parents: 335
diff changeset
  1806
claus
parents: 335
diff changeset
  1807
    "
claus
parents: 335
diff changeset
  1808
     Smalltalk libraryFileNameOfClass:'ClockView' 
claus
parents: 335
diff changeset
  1809
     Smalltalk libraryFileNameOfClass:'Bag' 
claus
parents: 335
diff changeset
  1810
    "
10
claus
parents: 8
diff changeset
  1811
!
claus
parents: 8
diff changeset
  1812
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1813
filenameAbbreviations
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1814
    "return a dictionary containing the classname-to-filename
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1815
     mappings. (needed for sys5.3 users, where filenames are limited
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1816
     to 14 chars)"
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1817
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1818
    CachedAbbreviations isNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1819
	self readAbbreviations
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1820
    ].
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1821
    ^ CachedAbbreviations
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1822
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1823
    "flush with:
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1824
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1825
     CachedAbbreviations := nil
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1826
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1827
    "
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1828
     Smalltalk filenameAbbreviations
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1829
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1830
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1831
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1832
fileNameForClass:aClassName
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1833
    "return a good filename for aClassName -
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1834
     using abbreviation file if there is one"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1835
10
claus
parents: 8
diff changeset
  1836
    |fileName abbrev|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1837
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1838
    fileName := aClassName.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1839
10
claus
parents: 8
diff changeset
  1840
    "first look, if the class exists and has a fileName"
claus
parents: 8
diff changeset
  1841
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1842
" later ... - compiler should put the source file name into the class
10
claus
parents: 8
diff changeset
  1843
    Symbol hasInterned:aClassName ifTrue:[:sym |
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1844
	|class|
10
claus
parents: 8
diff changeset
  1845
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1846
	(Smalltalk includesKey:sym) ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1847
	    class := Smalltalk at:sym.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1848
	    class isClass ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1849
		abbrev := class classFileName.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1850
	    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1851
	]
10
claus
parents: 8
diff changeset
  1852
    ].
claus
parents: 8
diff changeset
  1853
"
claus
parents: 8
diff changeset
  1854
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1855
    "look for abbreviation"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1856
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1857
    abbrev := self filenameAbbreviations at:fileName ifAbsent:[nil].
10
claus
parents: 8
diff changeset
  1858
    abbrev notNil ifTrue:[^ abbrev].
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1859
10
claus
parents: 8
diff changeset
  1860
    "no abbreviation found - if its a short name, take it"
claus
parents: 8
diff changeset
  1861
claus
parents: 8
diff changeset
  1862
    OperatingSystem maxFileNameLength < (fileName size + 3) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1863
	"this will only be triggered on sys5.3 type systems"
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  1864
	self warn:'cant find short for ' , fileName , ' in abbreviation file'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1865
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1866
    ^ fileName
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1867
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1868
2
claus
parents: 1
diff changeset
  1869
classNameForFile:aFileName
10
claus
parents: 8
diff changeset
  1870
    "return the className which corresponds to an abbreviated fileName,
claus
parents: 8
diff changeset
  1871
     or nil if no special translation applies. The given filename arg should
claus
parents: 8
diff changeset
  1872
     NOT include any suffix such as '.st'."
2
claus
parents: 1
diff changeset
  1873
357
claus
parents: 356
diff changeset
  1874
    ^ self filenameAbbreviations keyAtEqualValue:aFileName ifAbsent:[aFileName].
2
claus
parents: 1
diff changeset
  1875
329
claus
parents: 326
diff changeset
  1876
    "
claus
parents: 326
diff changeset
  1877
     Smalltalk classNameForFile:'DrawObj'
claus
parents: 326
diff changeset
  1878
    "
2
claus
parents: 1
diff changeset
  1879
!
claus
parents: 1
diff changeset
  1880
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1881
secureFileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1882
    "read in the named file, looking for it at standard places.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1883
     Catch any error during fileIn. Return true if ok, false if failed"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1884
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1885
    (SignalSet 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1886
	with:AbortSignal
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1887
	with:Process terminateSignal)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1888
    handle:[:ex |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1889
	ex return
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1890
    ] do:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1891
	^ self fileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1892
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1893
    ^ false
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1894
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1895
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1896
fileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1897
    "read in the named file - look for it in some standard places;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1898
     return true if ok, false if failed"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1899
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1900
    ^ self fileIn:aFileName lazy:nil silent:nil logged:false 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1901
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1902
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1903
     Smalltalk fileIn:'source/TicTacToe.st'
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1904
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1905
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1906
    "Created: 28.10.1995 / 17:06:28 / cg"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1907
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1908
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1909
silentFileIn:aFilename
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1910
    "same as fileIn:, but do not output 'compiled...'-messages on Transcript.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1911
     Main use is during startup."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1912
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1913
    |wasSilent|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1914
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1915
    wasSilent := self silentLoading:true.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1916
    [
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1917
	self fileIn:aFilename
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1918
    ] valueNowOrOnUnwindDo:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1919
	self silentLoading:wasSilent
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1920
    ]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1921
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1922
345
claus
parents: 335
diff changeset
  1923
fileInClass:aClassName fromObject:aFileName
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1924
    "read in the named object file and dynamic-link it into the system
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1925
     - look for it in some standard places;
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1926
     return true if ok, false if failed."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1927
356
claus
parents: 354
diff changeset
  1928
    |path ok|
329
claus
parents: 326
diff changeset
  1929
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1930
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1931
     check if the dynamic loader class is in
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1932
    "
390
claus
parents: 384
diff changeset
  1933
    (LoadBinaries not or:[ObjectFileLoader isNil]) ifTrue:[^ false].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1934
329
claus
parents: 326
diff changeset
  1935
    (path := self getBinaryFileName:aFileName) isNil ifTrue:[^ false].
356
claus
parents: 354
diff changeset
  1936
    ok := (ObjectFileLoader loadClass:aClassName fromObjectFile:path) notNil.
claus
parents: 354
diff changeset
  1937
    ok ifTrue:[
claus
parents: 354
diff changeset
  1938
	Transcript show:'  loaded ' , aClassName , ' from ' ; showCr:aFileName.
claus
parents: 354
diff changeset
  1939
    ].
claus
parents: 354
diff changeset
  1940
    ^ ok
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1941
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1942
    "
345
claus
parents: 335
diff changeset
  1943
     Smalltalk fileInClass:'AbstractPath' fromObject:'../../goodies/Paths/AbstrPath.so' 
claus
parents: 335
diff changeset
  1944
     Smalltalk fileInClass:'ClockView' fromObject:'../../libwidg3/libwidg3.so' 
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1945
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1946
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1947
400
claus
parents: 396
diff changeset
  1948
fileIn:aFileName logged:logged
claus
parents: 396
diff changeset
  1949
    "read in the named file - look for it in some standard places;
claus
parents: 396
diff changeset
  1950
     return true if ok, false if failed.
claus
parents: 396
diff changeset
  1951
     The argument logged controls, if the changefile is to be updated."
claus
parents: 396
diff changeset
  1952
claus
parents: 396
diff changeset
  1953
    ^ self fileIn:aFileName lazy:nil silent:nil logged:logged 
claus
parents: 396
diff changeset
  1954
claus
parents: 396
diff changeset
  1955
    "
claus
parents: 396
diff changeset
  1956
     Smalltalk fileIn:'source/TicTacToe.st' logged:false
claus
parents: 396
diff changeset
  1957
    "
claus
parents: 396
diff changeset
  1958
!
claus
parents: 396
diff changeset
  1959
claus
parents: 396
diff changeset
  1960
fileIn:aFileName lazy:lazy silent:silent logged:logged
claus
parents: 396
diff changeset
  1961
    "read in the named file - look for it in some standard places;
claus
parents: 396
diff changeset
  1962
     return true if ok, false if failed.
claus
parents: 396
diff changeset
  1963
     If lazy is true, no code is generated for methods, instead stups
claus
parents: 396
diff changeset
  1964
     are created which compile themself when first executed. This allows
claus
parents: 396
diff changeset
  1965
     for much faster fileIn (but slows down the first execution later).
claus
parents: 396
diff changeset
  1966
     Since no syntax checks are done when doing lazy fileIn, use this only for
claus
parents: 396
diff changeset
  1967
     code which is known to be syntactically correct.
claus
parents: 396
diff changeset
  1968
     If silent is true, no compiler messages are output to the transcript.
claus
parents: 396
diff changeset
  1969
     Giving nil for silent/lazy will use the current settings."
claus
parents: 396
diff changeset
  1970
421
claus
parents: 419
diff changeset
  1971
    |aStream path wasLazy wasSilent morePath oldSystemPath oldRealPath|
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1972
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1973
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1974
     an object or shared object ?
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1975
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1976
    ((aFileName endsWith:'.o')
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1977
    or:[(aFileName endsWith:'.obj')
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1978
    or:[aFileName endsWith:'.so']]) ifTrue:[
390
claus
parents: 384
diff changeset
  1979
	(LoadBinaries not or:[ObjectFileLoader isNil]) ifTrue:[^ false].
329
claus
parents: 326
diff changeset
  1980
	path := self getBinaryFileName:aFileName.
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1981
	path isNil ifTrue:[^ false].
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1982
	^ ObjectFileLoader loadObjectFile:aFileName
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1983
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1984
329
claus
parents: 326
diff changeset
  1985
    (aFileName startsWith:'source/') ifTrue:[
claus
parents: 326
diff changeset
  1986
	aStream := self sourceFileStreamFor:(aFileName copyFrom:8)
claus
parents: 326
diff changeset
  1987
    ] ifFalse:[
claus
parents: 326
diff changeset
  1988
	(aFileName startsWith:'fileIn/') ifTrue:[
claus
parents: 326
diff changeset
  1989
	    aStream := self fileInFileStreamFor:(aFileName copyFrom:8)
claus
parents: 326
diff changeset
  1990
	] ifFalse:[
claus
parents: 326
diff changeset
  1991
	    aStream := self systemFileStreamFor:aFileName.
375
claus
parents: 366
diff changeset
  1992
	    (aStream notNil and:[aFileName includes:$/]) ifTrue:[
362
claus
parents: 360
diff changeset
  1993
		"/ temporarily prepend the files directory
claus
parents: 360
diff changeset
  1994
		"/ to the searchPath.
claus
parents: 360
diff changeset
  1995
		"/ This allows fileIn-driver files to refer to local
claus
parents: 360
diff changeset
  1996
		"/ files via a relative path, and drivers to fileIn other
claus
parents: 360
diff changeset
  1997
		"/ drivers ...
claus
parents: 360
diff changeset
  1998
		morePath := aStream pathName asFilename directoryName.
claus
parents: 360
diff changeset
  1999
	    ]
329
claus
parents: 326
diff changeset
  2000
	]
claus
parents: 326
diff changeset
  2001
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2002
    aStream isNil ifTrue:[^ false].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2003
329
claus
parents: 326
diff changeset
  2004
    lazy notNil ifTrue:[wasLazy := Compiler compileLazy:lazy].
claus
parents: 326
diff changeset
  2005
    silent notNil ifTrue:[wasSilent := self silentLoading:silent].
claus
parents: 326
diff changeset
  2006
    [
423
claus
parents: 421
diff changeset
  2007
	Class updateChangeFileQuerySignal handle:[:ex |
421
claus
parents: 419
diff changeset
  2008
	    ex proceedWith:logged
423
claus
parents: 421
diff changeset
  2009
	] do:[
421
claus
parents: 419
diff changeset
  2010
	    oldSystemPath := SystemPath copy.
claus
parents: 419
diff changeset
  2011
	    morePath notNil ifTrue:[
423
claus
parents: 421
diff changeset
  2012
		SystemPath addFirst:morePath.
claus
parents: 421
diff changeset
  2013
		oldRealPath := RealSystemPath.
claus
parents: 421
diff changeset
  2014
		RealSystemPath := nil.
421
claus
parents: 419
diff changeset
  2015
	    ].
claus
parents: 419
diff changeset
  2016
	    aStream fileIn
claus
parents: 419
diff changeset
  2017
	]
329
claus
parents: 326
diff changeset
  2018
    ] valueNowOrOnUnwindDo:[
362
claus
parents: 360
diff changeset
  2019
	morePath notNil ifTrue:[
claus
parents: 360
diff changeset
  2020
	    SystemPath := oldSystemPath.
claus
parents: 360
diff changeset
  2021
	    RealSystemPath := oldRealPath.
claus
parents: 360
diff changeset
  2022
	].
329
claus
parents: 326
diff changeset
  2023
	lazy notNil ifTrue:[Compiler compileLazy:wasLazy]. 
claus
parents: 326
diff changeset
  2024
	silent notNil ifTrue:[self silentLoading:wasSilent].
claus
parents: 326
diff changeset
  2025
	aStream close
claus
parents: 326
diff changeset
  2026
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2027
    ^ true
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2028
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2029
    "
329
claus
parents: 326
diff changeset
  2030
     Smalltalk fileIn:'source/TicTacToe.st' lazy:true silent:true
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2031
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2032
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2033
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2034
fileIn:aFileName lazy:lazy
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2035
    "read in the named file - look for it in some standard places;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2036
     return true if ok, false if failed.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2037
     If lazy is true, no code is generated for methods, instead stups
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2038
     are created which compile themself when first executed. This allows
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2039
     for much faster fileIn (but slows down the first execution later).
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2040
     Since no syntax checks are done when doing lazy fileIn, use this only for
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2041
     code which is known to be syntactically correct."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2042
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2043
    ^ self fileIn:aFileName lazy:lazy silent:nil logged:false 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2044
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2045
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2046
     Smalltalk fileIn:'source/TicTacToe.st' lazy:true
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2047
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2048
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2049
    "Created: 28.10.1995 / 17:06:36 / cg"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2050
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2051
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2052
fileIn:aFileName lazy:lazy silent:silent
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2053
    "read in the named file - look for it in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2054
     return true if ok, false if failed.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2055
     If lazy is true, no code is generated for methods, instead stups
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2056
     are created which compile themself when first executed. This allows
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2057
     for much faster fileIn (but slows down the first execution later).
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2058
     Since no syntax checks are done when doing lazy fileIn, use this only for
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2059
     code which is known to be syntactically correct.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2060
     If silent is true, no compiler messages are output to the transcript.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2061
     Giving nil for silent/lazy will use the current settings."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2062
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2063
    ^ self fileIn:aFileName lazy:lazy silent:silent logged:false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2064
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2065
    "Created: 28.10.1995 / 17:06:41 / cg"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2066
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2067
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2068
fileInChanges
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2069
    "read in the last changes file - bringing the system to the state it
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2070
     had when left the last time.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2071
     WARNING: this method is rubbish: it should only read things after the
400
claus
parents: 396
diff changeset
  2072
	      last '**snapshot**' - entry 
claus
parents: 396
diff changeset
  2073
	      (instead of the complete changes file)."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2074
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2075
    "
400
claus
parents: 396
diff changeset
  2076
     do NOT update the changes file now ...
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2077
    "
400
claus
parents: 396
diff changeset
  2078
    self fileIn:'changes' logged:false
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2079
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2080
    "
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2081
     Smalltalk fileInChanges 
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2082
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2083
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2084
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2085
fileInClass:aClassName
10
claus
parents: 8
diff changeset
  2086
    "find a source/object file for aClassName and -if found - load it.
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  2087
     search is in some standard places trying driver-file (.ld), object-file (.o) and 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  2088
     finally source file (.st) in that order.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2089
     The file is first searched for using the class name, then the abbreviated name."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2090
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2091
    ^ self fileInClass:aClassName initialize:true lazy:false silent:false
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2092
!
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2093
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2094
fileInClass:aClassName initialize:doInit lazy:loadLazy silent:beSilent 
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2095
    "find a source/object file for aClassName and -if found - load it.
345
claus
parents: 335
diff changeset
  2096
     search is in some standard places, trying driver-file (.ld), object-file (.o) and 
claus
parents: 335
diff changeset
  2097
     finally source file (.st), in that order.
claus
parents: 335
diff changeset
  2098
     The file is first searched for using the class name, then the abbreviated name.
claus
parents: 335
diff changeset
  2099
     The argument doInit controlls if the class should be sent a #initialize after the
claus
parents: 335
diff changeset
  2100
     load; loadLazy tells if it should be loaded lazyly. beSilent tells if the compiler
claus
parents: 335
diff changeset
  2101
     should not send notes to the transcript."
claus
parents: 335
diff changeset
  2102
claus
parents: 335
diff changeset
  2103
    |shortName libName newClass ok wasLazy wasSilent|
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2104
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2105
    wasLazy := Compiler compileLazy:loadLazy.
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2106
    wasSilent := self silentLoading:beSilent.
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2107
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  2108
    [
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2109
	Class withoutUpdatingChangesDo:
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2110
	[
329
claus
parents: 326
diff changeset
  2111
	    ok := false.
claus
parents: 326
diff changeset
  2112
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2113
	    "
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2114
	     first, look for a loader-driver file (in fileIn/xxx.ld)
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2115
	    "
329
claus
parents: 326
diff changeset
  2116
	    (ok := self fileIn:('fileIn/' , aClassName , '.ld') lazy:loadLazy silent:beSilent)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2117
	    ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2118
		shortName := self fileNameForClass:aClassName.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2119
		"
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2120
		 try abbreviated driver-file (in fileIn/xxx.ld)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2121
		"
329
claus
parents: 326
diff changeset
  2122
		shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2123
		    ok := self fileIn:('fileIn/' , shortName , '.ld') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2124
		].
claus
parents: 326
diff changeset
  2125
		ok ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2126
		    "
345
claus
parents: 335
diff changeset
  2127
		     then, if dynamic linking is available, 
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2128
		    "
390
claus
parents: 384
diff changeset
  2129
		    (LoadBinaries and:[ObjectFileLoader notNil]) ifTrue:[
345
claus
parents: 335
diff changeset
  2130
			"
claus
parents: 335
diff changeset
  2131
			 first look for a class packages shared binary in binary/xxx.o
claus
parents: 335
diff changeset
  2132
			"
claus
parents: 335
diff changeset
  2133
			libName := self libraryFileNameOfClass:aClassName.
claus
parents: 335
diff changeset
  2134
			libName notNil ifTrue:[
claus
parents: 335
diff changeset
  2135
			    (ok := self fileInClass:aClassName fromObject:(libName, '.so'))
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2136
			    ifFalse:[
345
claus
parents: 335
diff changeset
  2137
				ok := self fileInClass:aClassName fromObject:(libName, '.o')
claus
parents: 335
diff changeset
  2138
			    ].
claus
parents: 335
diff changeset
  2139
			].
claus
parents: 335
diff changeset
  2140
claus
parents: 335
diff changeset
  2141
			"
claus
parents: 335
diff changeset
  2142
			 then, look for a shared binary in binary/xxx.o
claus
parents: 335
diff changeset
  2143
			"
claus
parents: 335
diff changeset
  2144
			ok ifFalse:[
claus
parents: 335
diff changeset
  2145
			    (ok := self fileInClass:aClassName fromObject:(aClassName, '.so'))
claus
parents: 335
diff changeset
  2146
			    ifFalse:[
claus
parents: 335
diff changeset
  2147
				(ok := self fileInClass:aClassName fromObject:(aClassName, '.o'))
claus
parents: 335
diff changeset
  2148
				ifFalse:[
claus
parents: 335
diff changeset
  2149
				    shortName ~= aClassName ifTrue:[
claus
parents: 335
diff changeset
  2150
					(ok := self fileInClass:aClassName fromObject:(shortName, '.so'))
claus
parents: 335
diff changeset
  2151
					ifFalse:[
claus
parents: 335
diff changeset
  2152
					    ok := self fileInClass:aClassName fromObject:(shortName, '.o')
claus
parents: 335
diff changeset
  2153
					]
claus
parents: 335
diff changeset
  2154
				    ].
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2155
				].
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2156
			    ].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2157
			].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2158
		    ].
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2159
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2160
		    "
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2161
		     if that did not work, look for an st-source file ...
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2162
		    "
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2163
		    ok ifFalse:[
329
claus
parents: 326
diff changeset
  2164
			(ok := self fileIn:(aClassName , '.st') lazy:loadLazy silent:beSilent)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2165
			ifFalse:[
329
claus
parents: 326
diff changeset
  2166
			    shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2167
				ok := self fileIn:(shortName , '.st') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2168
			    ].
claus
parents: 326
diff changeset
  2169
			    ok ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2170
				"
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2171
				 ... and in the standard source-directory
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2172
				"
329
claus
parents: 326
diff changeset
  2173
				(ok := self fileIn:('source/' , aClassName , '.st') lazy:loadLazy silent:beSilent)
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2174
				ifFalse:[
329
claus
parents: 326
diff changeset
  2175
				    shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2176
					ok := self fileIn:('source/' , shortName , '.st') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2177
				    ]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2178
				]
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2179
			    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2180
			]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2181
		    ]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2182
		].
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2183
	    ]
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2184
	].
329
claus
parents: 326
diff changeset
  2185
	ok ifTrue:[
claus
parents: 326
diff changeset
  2186
	    newClass := self at:(aClassName asSymbol).
claus
parents: 326
diff changeset
  2187
	    newClass notNil ifTrue:[
claus
parents: 326
diff changeset
  2188
		doInit ifTrue:[
claus
parents: 326
diff changeset
  2189
		    newClass initialize
claus
parents: 326
diff changeset
  2190
		]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2191
	    ]
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2192
	].
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2193
    ] valueNowOrOnUnwindDo:[
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2194
	Compiler compileLazy:wasLazy. 
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2195
	self silentLoading:wasSilent
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2196
    ].
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2197
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2198
    ^ newClass
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2199
!
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2200
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2201
fileInClass:aClassName initialize:doInit
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2202
    "find a source/object file for aClassName and -if found - load it.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2203
     search is in some standard places trying driver-file (.ld), object-file (.o) and 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2204
     finally source file (.st) in that order.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2205
     The file is first searched for using the class name, then the abbreviated name."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2206
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2207
    ^ self fileInClass:aClassName initialize:doInit lazy:false silent:false
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2208
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2209
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2210
fileInClass:aClassName initialize:doInit lazy:loadLazy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2211
    "find a source/object file for aClassName and -if found - load it.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2212
     search is in some standard places trying driver-file (.ld), object-file (.o) and 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2213
     finally source file (.st) in that order.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2214
     The file is first searched for using the class name, then the abbreviated name."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2215
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2216
     ^ self fileInClass:aClassName initialize:doInit lazy:loadLazy silent:false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2217
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2218
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2219
compressSources
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2220
    "compress the sources file, and remove all method source strings
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2221
     from the system and replace them by refs to a string in the source file.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2222
     This is a bit different in ST/X than in other smalltalks,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2223
     since we use per-class sourcefiles for the compiled classes,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2224
     and a mix of in-memory strings and one-for-all sourceFile for
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2225
     incremental compiled methods.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2226
     Therefore, only those sources which are not coming from compiled
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2227
     methods are put into the 'st.src' file - all others are untouched.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2228
     This is being automated - so dont care for now."
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2229
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2230
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2231
     first, find all methods which contain either a string-ref
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2232
     or an external string in the 'st.src' file
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2233
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2234
    |newStream table source pos fileName|
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2235
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2236
    newStream := 'src.tmp' asFilename writeStream.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2237
    newStream isNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2238
	self error:'cannot create new temporary source file'.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2239
	^ self
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2240
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2241
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2242
    table := IdentityDictionary new:100.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2243
329
claus
parents: 326
diff changeset
  2244
    Method allSubInstancesDo:[:aMethod |
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2245
	source := nil.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2246
	aMethod sourcePosition notNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2247
	    aMethod sourceFilename = 'st.src' ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2248
		source := aMethod source.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2249
	    ]
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2250
	] ifFalse:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2251
	    source := aMethod source
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2252
	].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2253
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2254
	source notNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2255
	    pos := newStream position.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2256
	    newStream nextChunkPut:source.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2257
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2258
	    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2259
	     dont change the methods info - maybe some write error
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2260
	     occurs later, in that case we abort and leave everything
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2261
	     untouched.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2262
	    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2263
	    table at:aMethod put:pos
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2264
	]
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2265
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2266
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2267
    newStream close.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2268
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2269
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2270
     now, rename the new source file,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2271
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2272
    fileName := (ObjectMemory nameForSources).
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2273
    ('src.tmp' asFilename renameTo:fileName) ifFalse:[
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2274
	self error:'cannot rename temporary file to new source file'.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2275
	^ self
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2276
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2277
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2278
    "good - now go over all changed methods, and change their
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2279
     source reference"
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2280
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2281
    table keysAndValuesDo:[:aMethod :pos |
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2282
	aMethod sourceFilename:fileName position:pos.
271
624d7d25dcea *** empty log message ***
claus
parents: 267
diff changeset
  2283
"/        aMethod printNL.
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2284
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2285
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2286
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2287
     Smalltalk compressSources
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2288
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2289
! !
2
claus
parents: 1
diff changeset
  2290
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2291
!Smalltalk class methodsFor:'time-versions'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2292
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2293
majorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2294
    "return the major version number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2295
     This is only incremented for very fundamental changes,
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2296
     which make old object files totally incompatible
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2297
     (for example, if the layout/representation of fundamental
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2298
      classes changes)."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2299
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2300
    ^ 2
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2301
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2302
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2303
     Smalltalk majorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2304
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2305
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2306
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2307
minorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2308
    "return the minor version number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2309
     This is incremented for changes which make some old object
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2310
     files incompatible, or the protocol changes such that some
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2311
     classes need rework."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2312
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2313
    ^ 10
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2314
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2315
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2316
     Smalltalk minorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2317
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2318
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2319
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2320
revisionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2321
    "return the revision number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2322
     Incremented for releases which fix bugs/add features
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2323
     and represent a stable workable version which got published
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2324
     to the outside world."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2325
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2326
    ^ 8
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2327
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2328
    " 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2329
     Smalltalk revisionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2330
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2331
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2332
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2333
versionString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2334
    "return the version string"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2335
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2336
    ^ (self majorVersionNr printString ,
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2337
       '.',
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2338
       self minorVersionNr printString ,
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2339
       '.',
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2340
       self revisionNr printString)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2341
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2342
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2343
     Smalltalk versionString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2344
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2345
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2346
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2347
versionDate
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2348
    "return the executables build date - thats the date when the smalltalk
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2349
     executable was built"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2350
%{
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2351
    extern char *__getBuildDateString();
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2352
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2353
    RETURN (__MKSTRING(__getBuildDateString() COMMA_SND) );
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2354
%}
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2355
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2356
     Smalltalk versionDate
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2357
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2358
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2359
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2360
releaseNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2361
    "return the revision number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2362
     Incremented for releases which fix bugs/add features."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2363
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2364
    ^ 2
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2365
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2366
    " 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2367
     Smalltalk releaseNr 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2368
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2369
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2370
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2371
configuration
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2372
    "for developers only: return the configuration, with which
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2373
     this smalltalk was compiled."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2374
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2375
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2376
    extern char *__getConfigurationString();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2377
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2378
    RETURN (__MKSTRING(__getConfigurationString() COMMA_SND));
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2379
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2380
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2381
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2382
     Smalltalk configuration
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2383
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2384
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2385
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2386
copyrightString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2387
    "return a copyright string"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2388
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2389
    ^ 'Copyright (c) 1988-95 by Claus Gittinger'
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2390
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2391
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2392
     Smalltalk copyrightString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2393
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2394
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2395
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2396
timeStamp
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2397
    "return a string useful for timestamping a file.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2398
     The returned string is padded with spaces for a constant
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2399
     length (to avoid changing a files size in fileOut with unchanged
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2400
     class)."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2401
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2402
    ^ ('''From Smalltalk/X, Version:' , (Smalltalk versionString) , ' on '
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2403
       , Date today printString , ' at ' , Time now printString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2404
       , '''') paddedTo:80 with:(Character space)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2405
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2406
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2407
hello
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2408
    "return a greeting string"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2409
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2410
    "stupid: this should come from a resource file ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2411
     but I dont use it here, to allow mini-systems without
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2412
     Resource-stuff."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2413
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2414
    (Language == #german) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2415
	^ 'Willkommen bei SmallTalk/X - Version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2416
	  , self versionString , ' vom ' , self versionDate
2
claus
parents: 1
diff changeset
  2417
    ].
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2418
    (Language == #french) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2419
	^ 'Bienvenue ` SmallTalk/X - version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2420
	  , self versionString , ' de ' , self versionDate
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2421
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2422
    ^ 'Hello World - here is SmallTalk/X version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2423
      , self versionString , ' of ' , self versionDate
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2424
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2425
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2426
     Smalltalk hello
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2427
    "
2
claus
parents: 1
diff changeset
  2428
! !
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2429