Smalltalk.st
author Claus Gittinger <cg@exept.de>
Sat, 04 Nov 1995 21:55:06 +0100
changeset 485 99f5376c0c62
parent 477 8710aba7876b
child 490 b93a837e8338
permissions -rw-r--r--
allow class as arg to libraryFileName / sourceFileName
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
"
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
    29
$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.73 1995-11-04 20:55:06 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
477
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   254
reinitStandardStreams
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   255
    "reinitialize some well-known streams.
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   256
     Tis must be done very early during startup, to allow for
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   257
     debug and trace messages to be output
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   258
     (otherwise, the file-descriptors are invalid)"
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   259
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   260
    Stdout reOpen. Stderr reOpen. Stdin reOpen.
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   261
!
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
   262
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   263
initInterrupts
a27a279701f8 Initial revision
claus
parents:
diff changeset
   264
    "initialize interrupts"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   265
a27a279701f8 Initial revision
claus
parents:
diff changeset
   266
    OperatingSystem enableUserInterrupts.
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
   267
    OperatingSystem enableHardSignalInterrupts.
2
claus
parents: 1
diff changeset
   268
    OperatingSystem enableFpExceptionInterrupts.
claus
parents: 1
diff changeset
   269
claus
parents: 1
diff changeset
   270
    ObjectMemory userInterruptHandler:self.
13
62303f84ff5f *** empty log message ***
claus
parents: 10
diff changeset
   271
    ObjectMemory signalInterruptHandler:self.
62303f84ff5f *** empty log message ***
claus
parents: 10
diff changeset
   272
    ObjectMemory recursionInterruptHandler:self.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   273
a27a279701f8 Initial revision
claus
parents:
diff changeset
   274
    "Smalltalk initInterrupts"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   275
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   276
a27a279701f8 Initial revision
claus
parents:
diff changeset
   277
initSystemPath
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   278
    "setup path where system files are searched for.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
   279
     the default path is set to:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   280
	    .
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   281
	    ..
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   282
	    $HOME                    (if defined)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   283
	    $HOME/.smalltalk         (if defined & existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   284
	    $SMALLTALK_LIBDIR        (if defined & existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   285
	    /usr/local/lib/smalltalk (if existing)
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   286
	    /usr/lib/smalltalk       (if existing)
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   287
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   288
     of course, it is possible to add entries from the 'smalltalk.rc'
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   289
     startup file; add expressions such as:
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   290
	    Smalltalk systemPath addFirst:'/foo/bar/baz'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   291
	or: 
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   292
	    Smalltalk systemPath addLast:'/fee/foe/foo'.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
   293
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   294
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   295
    |p homePath|
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   296
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   297
    homePath := OperatingSystem getHomeDirectory.
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   298
    homePath isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   299
	homePath := '.'
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   300
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   301
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   302
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   303
     the path is set to search files first locally
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   304
     - this allows private stuff to override global stuff
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   305
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   306
    SystemPath := OrderedCollection new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   307
    SystemPath add:'.'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   308
    SystemPath add:'..'.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   309
    SystemPath add:homePath.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
   310
    (OperatingSystem isDirectory:(p := homePath , '/.smalltalk')) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   311
	SystemPath add:p
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   312
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   313
    p := OperatingSystem getEnvironment:'SMALLTALK_LIBDIR'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   314
    p notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   315
	SystemPath add:p
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   316
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   317
    (OperatingSystem isDirectory:'/usr/local/lib/smalltalk') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   318
	SystemPath add:'/usr/local/lib/smalltalk'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   319
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   320
    (OperatingSystem isDirectory:'/usr/lib/smalltalk') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
   321
	SystemPath add:'/usr/lib/smalltalk'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   322
    ].
329
claus
parents: 326
diff changeset
   323
    self flushPathCaches
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   324
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   325
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   326
     Smalltalk initSystemPath
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   327
     Smalltalk systemPath
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   328
    "
162
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   329
!
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   330
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   331
isInitialized
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   332
    "this returns true, if the system is properly initialized;
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   333
     i.e. false during startup. Especially, the whole viewing stuff is
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   334
     not working correctly until initialized."
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   335
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
   336
    ^ Initializing not
161
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
   337
! !
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
   338
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   339
!Smalltalk class methodsFor:'accessing'!
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
at:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   342
    "retrieve the value stored under aKey, a symbol. 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   343
     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
   344
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   345
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   346
    extern OBJ __GLOBAL_GET();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   347
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   348
    RETURN ( __GLOBAL_GET(aKey) );
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   349
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   350
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   351
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   352
includesKey:aKey
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   353
    "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
   354
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   355
%{  /* NOCONTEXT */
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   356
    extern OBJ __GLOBAL_KEYKNOWN();
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   357
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   358
    RETURN ( __GLOBAL_KEYKNOWN(aKey) );
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   359
%}
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   360
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   361
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   362
at:aKey ifAbsent:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   363
    "retrieve the value stored at aKey.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   364
     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
   365
     the evaluation of aBlock."
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
    (self includesKey:aKey) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   368
	^ self at:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   369
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   370
    ^ aBlock value
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
     Smalltalk at:#fooBar                       <- returns nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   374
     Smalltalk at:#fooBar ifAbsent:['sorry']    <- no error
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
!
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
at:aKey put:aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   379
    "store the argument aValue under aKey, a symbol"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   380
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   381
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   382
    |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
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   385
    extern OBJ __GLOBAL_SET();
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
    oldValue = __GLOBAL_SET(aKey, aValue, (OBJ *)0);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   388
%}.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   389
    CachedClasses notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   390
	oldValue isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   391
	    CachedClasses remove:oldValue
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
	aValue isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   394
	    CachedClasses add:aValue
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   395
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   396
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   397
    ^ aValue
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
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   400
    extern OBJ __GLOBAL_SET();
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
    (void) __GLOBAL_SET(aKey, aValue, (OBJ *)0);
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
    CachedClasses := nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   405
    ^ aValue
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   408
removeKey:aKey
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   409
    "remove the argument from the globals dictionary"
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
    CachedClasses := nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   412
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   413
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   414
    extern OBJ __GLOBAL_REMOVE();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   415
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   416
    RETURN ( __GLOBAL_REMOVE(aKey) );
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   417
%}
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   420
keyAtValue:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   421
    "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
   422
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   423
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   424
	(self at:aKey) == anObject ifTrue:[^ aKey]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   425
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   426
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   427
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   428
    "Smalltalk keyAtValue:Object"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   429
!
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
keys
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   432
    "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
   433
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   434
    |keys|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   435
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   436
    keys := IdentitySet new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   437
    self keysDo:[:k | keys add:k].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   438
    ^ keys
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   439
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   440
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   441
!Smalltalk class methodsFor:'binary storage'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   442
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   443
addGlobalsTo: globalDictionary manager: manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   444
    |pools|
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
    pools := Set new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   447
    self associationsDo:[:assoc |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   448
	assoc value == self ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   449
	    assoc value isClass ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   450
		assoc value addGlobalsTo:globalDictionary manager:manager.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   451
		pools addAll:assoc value sharedPools
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   452
	    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   453
		globalDictionary at:assoc put:self
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
	    assoc value isNil ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   456
		globalDictionary at:assoc value put:self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   457
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   458
	]
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   461
    pools do:[:poolDictionary|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   462
	poolDictionary addGlobalsTo:globalDictionary manager:manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   463
    ]
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   466
storeBinaryDefinitionOf: anObject on: stream manager: manager
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   467
    |string|
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
    anObject class == Association ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   470
	string := 'Smalltalk associationAt: ', anObject key storeString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   471
    ] ifFalse: [
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   472
	string := 'Smalltalk at: ', (self keyAtValue: anObject) storeString
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
    stream nextNumber:2 put:string size.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   475
    string do:[:char | stream nextPut:char asciiValue]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   476
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   477
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   478
!Smalltalk class methodsFor:'browsing'!
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
browseChanges
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   481
    "startup a changes browser"
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
    ChangesBrowser notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   484
	ChangesBrowser open
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   485
    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   486
	self warn:'no ChangesBrowser built in'
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
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
     Smalltalk browseChanges
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   491
    "
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
browseAllSelect:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   495
    "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
   496
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   497
    SystemBrowser browseAllSelect:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   498
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
     Smalltalk browseAllSelect:[:m | m literals isNil]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   501
    "
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
browseImplementorsOf:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   505
    "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
   506
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   507
    SystemBrowser browseImplementorsOf:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   508
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
     Smalltalk browseImplementorsOf:#at:put: 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   511
    "
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
browseAllCallsOn:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   515
    "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
   516
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   517
    SystemBrowser browseAllCallsOn:aSelectorSymbol
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   518
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
     Smalltalk browseAllCallsOn:#at:put: 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   521
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   522
! !
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
!Smalltalk class methodsFor:'class management'!
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
flushCachedClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   527
    CachedClasses := nil
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   530
renameClass:aClass to:newName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   531
    "rename aClass to newName"
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
    |oldName oldSym newSym names cSym value|
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
    oldName := aClass name.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   536
    oldSym := oldName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   537
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   538
    ((self at:oldSym) == aClass) ifFalse:[^ self].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   539
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   540
    "rename the class"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   541
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   542
    aClass setName:newName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   543
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   544
    "and its meta"
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
    aClass class setName:(newName , 'class').
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
    "store it in Smalltalk"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   549
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   550
    newSym := newName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   551
    self at:oldSym put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   552
    self removeKey:oldSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   553
    self at:newSym put:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   554
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   555
    "rename class variables"
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
    names := aClass classVariableString asCollectionOfWords.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   558
    names do:[:name |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   559
	cSym := (oldSym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   560
	value := self at:cSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   561
	self at:cSym put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   562
	self removeKey:cSym.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   563
	cSym := (newSym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   564
	self at:cSym put:value.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   565
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   566
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   567
    aClass updateVersionString.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   568
    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
   569
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   570
    "Created: 29.10.1995 / 19:58:32 / cg"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   571
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   572
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   573
removeClass:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   574
    "remove the argument, aClass from the smalltalk dictionary;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   575
     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
   576
     Also, class variables of aClass are removed."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   577
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   578
    |sym cSym names oldName|
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
    oldName := aClass name.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   581
    sym := oldName asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   582
    ((self at:sym) == aClass) ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   583
	"check other name ..."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   584
	(self includes:aClass) ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   585
	    'SMALLTALK: no such class: ' errorPrint. oldName errorPrintNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   586
	    ^ self
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
	"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   589
	 the class has changed its name - without telling me ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   590
	 what should be done in this case ?
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
	'SMALLTALK: class ' errorPrint. oldName errorPrint.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   593
	' has changed its name' errorPrintNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   594
	^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   595
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   596
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   597
    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
   598
    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
   599
			     still compiled code references."
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
    "remove class variables"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   602
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   603
    names := aClass classVariableString asCollectionOfWords.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   604
    names do:[:name |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   605
	cSym := (sym , ':' , name) asSymbol.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   606
	self at:cSym asSymbol put:nil.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   607
	self removeKey:cSym
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   608
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   609
"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   610
    actually could get along with less flushing
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   611
    (entries for aClass and subclasses only)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   612
    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
   613
    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
   614
    expensive then cache flushing.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   615
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   616
    aClass allSubclassesDo:[:aSubclass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   617
	ObjectMemory flushInlineCachesForClass:aSubclass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   618
	ObjectMemory flushMethodCacheFor:aSubclass
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
    ObjectMemory flushInlineCachesForClass:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   621
    ObjectMemory flushMethodCacheFor:aClass
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
    ObjectMemory flushInlineCaches.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   624
    ObjectMemory flushMethodCache.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   625
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   626
    aClass addChangeRecordForClassRemove:oldName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   627
    self changed:#classRemove with:aClass.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   628
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   629
    aClass category:#removed.
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   632
!Smalltalk class methodsFor:'copying'!
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
shallowCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   635
    "redefine copy - there is only one Smalltalk dictionary"
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
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   638
!
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
simpleDeepCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   641
    "redefine copy - there is only one Smalltalk dictionary"
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
    ^ self
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   644
!
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
deepCopyUsing:aDictionary
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   647
    "redefine copy - there is only one Smalltalk dictionary"
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
    ^ self
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   652
deepCopy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   653
    "redefine copy - there is only one Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   654
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   655
    ^ self
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   658
!Smalltalk class methodsFor:'debugging ST/X'!
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
debugBreakPoint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   661
    "call the dummy debug function, on which a breakpoint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   662
     can be put in adb, sdb, dbx or gdb.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   663
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   664
	      it will be removed without notice."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   665
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   666
    _PATCHUPCONTEXTS(__context);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   667
    debugBreakPoint();
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
printPolyCaches
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   672
    "dump poly caches.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   673
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   674
	      it will be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   675
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   676
    __dumpILCCaches();
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
!
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
printStackBacktrace
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   681
    "print a stack backtrace - then continue.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   682
     (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
   683
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   684
	      it will be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   685
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   686
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   687
    __printStack(__context);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   688
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   689
    "Smalltalk printStackBacktrace"
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
printSymbols
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   693
    "dump the internal symbol table.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   694
     WARNING: this method is for debugging only
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   695
	      it will be removed without notice"
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
    __dumpSymbols();
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
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   700
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   701
fatalAbort:aMessage
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   702
    "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
   703
     (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
   704
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   705
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   706
    char *msg;
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
    if (__isString(aMessage))
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   709
	msg = (char *) _stringVal(aMessage);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   710
    else
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   711
	msg = "fatalAbort";
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, msg);
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
fatalAbort
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   719
    "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
   720
     (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
   721
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   722
    __fatal0(__context, "fatalAbort");
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
exitWithCoreDump
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   728
    "abort program and dump core"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   729
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   730
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   731
    abort();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   732
    /* NEVER RETURNS */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   733
%}
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
statistic
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   737
    "print some statistic data.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   738
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   739
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   740
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   741
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   742
    __STATISTIC__();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   743
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   744
!
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
debugOn
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   747
    "turns some tracing on.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   748
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   749
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   750
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   751
    "LookupTrace := true.   "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   752
    "AllocTrace := true.     "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   753
    ObjectMemory flushCaches
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
debugOff
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   757
    "turns tracing off.
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
    LookupTrace := nil.    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   762
    ". AllocTrace := nil     "
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   765
executionDebugOn
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   766
    "turns tracing of interpreter on.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   767
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   768
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   769
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   770
    ExecutionTrace := true
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   773
executionDebugOff
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   774
    "turns tracing of interpreter off.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   775
     WARNING: this method is for debugging only 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   776
	      it may be removed without notice"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   777
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   778
    ExecutionTrace := nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   779
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   780
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   781
!Smalltalk class methodsFor:'enumerating'!
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
do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   784
    "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
   785
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   786
    |work|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   787
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   788
%{  /* 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
   789
    __GLOBALS_DO(&aBlock, &work COMMA_CON);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   790
%}
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
allBehaviorsDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   794
    "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
   795
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   796
    CachedClasses isNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   797
	self allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   798
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   799
    CachedClasses do:aBlock
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
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   802
     Smalltalk allBehaviorsDo:[:aClass | aClass name printNL]
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
keysDo: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
    |work|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   809
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   810
%{  /* 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
   811
    __GLOBALKEYS_DO(&aBlock, &work COMMA_CON);
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   812
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   813
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   814
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   815
allKeysDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   816
    "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
   817
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   818
    ^ self keysDo:aBlock
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   821
associationsDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   822
    "evaluate the argument, aBlock for all key/value pairs 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   823
     in the Smalltalk dictionary"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   824
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   825
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   826
	aBlock value:(aKey -> (self at:aKey))
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   827
    ]
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
    "Smalltalk associationsDo:[:assoc | assoc printNL]"
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   832
keysAndValuesDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   833
    "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
   834
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   835
    self keysDo:[:aKey |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   836
	aBlock value:aKey value:(self at:aKey)
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
!
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
allClassesDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   841
    "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
   842
     Backward compatibility - use #allBehaviorsDo: for ST-80 compatibility."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   843
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   844
    ^ self allBehaviorsDo:aBlock
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
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   847
     Smalltalk allClassesDo:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   848
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   849
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   850
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   851
allClassesInCategory:aCategory do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   852
    "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
   853
     The order of the classes is not defined."
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
    aCategory notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   856
	self allBehaviorsDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   857
	    aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   858
		(aClass category = aCategory) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   859
		    aBlock value:aClass
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
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   862
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   863
    ]
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
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   866
     Smalltalk allClassesInCategory:'Views-Basic' do:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   867
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   868
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   869
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   870
allClassesInCategory:aCategory inOrderDo:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   871
    "evaluate the argument, aBlock for all classes in aCategory;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   872
     superclasses come first - then subclasses"
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
    |classes|
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
    aCategory notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   877
	classes := OrderedCollection new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   878
	self allBehaviorsDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   879
	    aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   880
		(aClass category = aCategory) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   881
		    classes add:aClass
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
	classes topologicalSort:[:a :b | b isSubclassOf:a].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   886
	classes do:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   887
    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   888
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   889
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   890
     Smalltalk allClassesInCategory:'Views-Basic' inOrderDo:[:aClass | aClass name printNL]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   891
    "
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:'inspecting'!
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
inspectorClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   897
    "redefined to launch a DictionaryInspector
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   898
     (instead of the default Inspector)."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   899
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   900
    ^ DictionaryInspectorView
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   903
!Smalltalk class methodsFor:'message control'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   904
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   905
silentLoading
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   906
    "returns the Silentloading class variable."
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
     ^ SilentLoading
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
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
    "allows access to the Silentloading class variable, which controls
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   913
     messages from all kinds of system onto the transcript.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   914
     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
   915
     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
   916
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   917
    |prev|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   918
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   919
    prev := SilentLoading.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   920
    SilentLoading := aBoolean.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   921
    ^ prev
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   922
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   923
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   924
!Smalltalk class methodsFor:'misc stuff'!
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
exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   927
    "finish Smalltalk system"
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
    ObjectMemory changed:#aboutToQuit.  "/ for ST-80 compatibility
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   930
    ExitBlocks notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   931
	ExitBlocks do:[:aBlock |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   932
	    aBlock value
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   933
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   934
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   935
    OperatingSystem exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   936
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
     Smalltalk exit
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   939
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   940
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   941
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   942
addExitBlock:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   943
    "add a block to be executed when Smalltalk finishes.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   944
     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
   945
     cleanup in stand alone applications."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   946
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   947
    ExitBlocks isNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   948
	ExitBlocks := OrderedCollection with:aBlock
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   949
    ] ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   950
	ExitBlocks add:aBlock
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
!
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
sleep:aDelay
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   955
    "wait for aDelay seconds.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   956
     OBSOLETE: this is historical leftover and will be removed"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   957
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   958
    OperatingSystem sleep:aDelay
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   959
! !
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
!Smalltalk class methodsFor:'queries'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   962
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   963
allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   964
    "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
   965
     Only globally anchored classes are returned 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   966
     (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
   967
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   968
    |classes|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   969
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   970
    "/ you may wander, what this while is for, here ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   971
    "/ 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
   972
    "/ anothe view (background fileIn), while building up the
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   973
    "/ cachedClasses set, this may be flushed (invalidated) by the
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   974
    "/ other process in the meanwhile.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   975
    "/ If that happens, we restart the set-building here
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
    [(classes := CachedClasses) isNil] whileTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   978
	CachedClasses := classes := IdentitySet new:800. 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   979
	self do:[:anObject |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   980
	    anObject notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   981
		anObject isBehavior ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   982
		    classes add:anObject
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
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   986
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   987
    ^ classes
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
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   990
     Smalltalk allClasses
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   991
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   992
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   993
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   994
classNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   995
    "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
   996
     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
   997
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   998
    |cls str sym|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   999
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1000
    "be careful, to not invent new symbols ..."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1001
    sym := aString asSymbolIfInterned.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1002
    sym notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1003
	cls := self at:sym ifAbsent:[].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1004
	cls isNil ifTrue:[^ nil].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1005
	cls isBehavior ifTrue:[^ cls]
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
    (aString endsWith:'class') ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1008
	str := aString copyTo:(aString size - 5).
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1009
	sym := str asSymbolIfInterned.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1010
	sym notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1011
	    cls := self at:sym ifAbsent:[].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1012
	    cls isNil ifTrue:[^ nil].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1013
	    cls isBehavior ifTrue:[^ cls]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1014
	]
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
    ^ nil
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
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1019
     Smalltalk classNamed:'Object'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1020
     Smalltalk classNamed:'fooBar' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1021
     Smalltalk classNamed:'true'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1022
     Smalltalk classNamed:'Objectclass'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1023
     Smalltalk classNamed:'Metaclass'    
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1024
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1025
!
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
numberOfGlobals
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1028
    "return the number of global variables in the system"
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
    |tally "{ Class: SmallInteger }" |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1031
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1032
    tally := 0.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1033
    self do:[:obj | tally := tally + 1].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1034
    ^ tally
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1035
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1036
    "Smalltalk numberOfGlobals"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1037
!
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
cellAt:aName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1040
    "return the address of a global cell
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1041
     - used internally for compiler only"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1042
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1043
%{  /* NOCONTEXT */
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1044
    extern OBJ __GLOBAL_GETCELL();
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
    RETURN ( __GLOBAL_GETCELL(aName) );
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1050
classNames
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1051
    "return a collection of all classNames in the system"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1052
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1053
    ^ self allClasses collect:[:aClass | aClass name]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1054
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1055
    "Smalltalk classNames"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1056
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1057
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1058
classnameCompletion:aPartialClassName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1059
    "given a partial classname, return an array consisting of
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1060
     2 entries: 1st: collection consisting of matching names
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1061
		2nd: the longest match"
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
    |matches best|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1064
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1065
    matches := SortedCollection new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1066
    self allClassesDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1067
	aClass isMeta ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1068
	    (aClass name startsWith:aPartialClassName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1069
		matches add:aClass name
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1070
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1071
	]
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
    matches isEmpty ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1074
	^ Array with:aPartialClassName with:(Array with:aPartialClassName)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1075
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1076
    matches size == 1 ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1077
	^ Array with:matches first with:(matches asArray)
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
    best := matches longestCommonPrefix.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1080
    ^ Array with:best with:matches asArray
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1081
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1082
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1083
     Smalltalk classnameCompletion:'Arr' 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1084
     Smalltalk classnameCompletion:'Arra' 
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
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1087
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1088
selectorCompletion:aPartialSymbolName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1089
    "given a partial selector, return an array consisting of
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1090
     2 entries: 1st: collection consisting of matching implemented selectors
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1091
		2nd: the longest match"
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
    |matches best|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1094
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1095
    matches := IdentitySet new.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1096
    self allClassesDo:[:aClass |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1097
	aClass selectorArray do:[:aSelector |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1098
	    (aSelector startsWith:aPartialSymbolName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1099
		matches add:aSelector
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1100
	    ]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1101
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1102
	aClass class selectorArray do:[:aSelector |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1103
	    (aSelector startsWith:aPartialSymbolName) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1104
		matches add:aSelector
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
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1107
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1108
    matches := matches asSortedCollection.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1109
    matches isEmpty ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1110
	^ Array with:aPartialSymbolName with:(Array with:aPartialSymbolName)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1111
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1112
    matches size == 1 ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1113
	^ Array with:matches first with:(matches asArray)
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
    best := matches longestCommonPrefix.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1116
    ^ Array with:best with:matches asArray
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1117
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
     Smalltalk selectorCompletion:'at:p'  
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1120
     Smalltalk selectorCompletion:'nextP' 
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1124
includes:something
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1125
    "this should come from Collection.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1126
     will change the inheritance - Smalltalk is actually a collection"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1127
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1128
    self do:[:element | element = something ifTrue:[^ true]].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1129
    ^ false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1130
!
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
references:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1133
    "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
  1134
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1135
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1136
	(key == anObject) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1137
	(val == anObject ) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1138
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1139
    ^ super references:anObject
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1140
!
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
referencesDerivedInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1143
    "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
  1144
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1145
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1146
	(key isKindOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1147
	(val isKindOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1148
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1149
    ^ super referencesDerivedInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1150
!
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
referencesInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1153
    "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
  1154
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1155
    self keysAndValuesDo:[:key :val |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1156
	(key isMemberOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1157
	(val isMemberOf:aClass) ifTrue:[^ true].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1158
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1159
    ^ super referencesInstanceOf:aClass
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1160
! !
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1161
161
ed36169f354d *** empty log message ***
claus
parents: 159
diff changeset
  1162
!Smalltalk class methodsFor:'startup'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1163
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1164
start
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1165
    "main startup, if there is a Display, initialize it
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1166
     and start dispatching; otherwise go into a read-eval-print loop."
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1167
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1168
    |idx haveStartupFile|
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1169
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1170
    haveStartupFile := true.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1171
    Initializing := true.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1172
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1173
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1174
     while reading patches- and rc-file, do not add things into change-file
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1175
    "
421
claus
parents: 419
diff changeset
  1176
    Class withoutUpdatingChangesDo:[
423
claus
parents: 421
diff changeset
  1177
	"
claus
parents: 421
diff changeset
  1178
	 look for a '-e filename' argument - this will force evaluation of
claus
parents: 421
diff changeset
  1179
	 filename only, no standard startup
claus
parents: 421
diff changeset
  1180
	"
claus
parents: 421
diff changeset
  1181
	idx := Arguments indexOf:'-e'.
claus
parents: 421
diff changeset
  1182
	idx ~~ 0 ifTrue:[
421
claus
parents: 419
diff changeset
  1183
	    self fileIn:(Arguments at:idx + 1).
claus
parents: 419
diff changeset
  1184
	    self exit
423
claus
parents: 421
diff changeset
  1185
	].
claus
parents: 421
diff changeset
  1186
claus
parents: 421
diff changeset
  1187
	self secureFileIn:'patches'.
claus
parents: 421
diff changeset
  1188
claus
parents: 421
diff changeset
  1189
	(self secureFileIn:((Arguments at:1) , '.rc')) ifFalse:[
421
claus
parents: 419
diff changeset
  1190
	    "no .rc file where executable is; try default smalltalk.rc"
claus
parents: 419
diff changeset
  1191
	    (self secureFileIn:'smalltalk.rc') ifFalse:[
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1192
		Transcript showCr:'SMALLTALK: no startup rc-file found. Going into line-by-line interpreter.'.
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1193
		haveStartupFile := false.
421
claus
parents: 419
diff changeset
  1194
	    ]
423
claus
parents: 421
diff changeset
  1195
	].
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1196
    ].
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1197
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1198
    (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false" 
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1199
	Transcript showCr:(self hello).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1200
	Transcript showCr:(self copyrightString).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1201
	Transcript cr.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1202
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1203
	DemoMode ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1204
	    Transcript showCr:'*** Restricted use:                              ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1205
	    Transcript showCr:'*** This program may be used for education only. ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1206
	    Transcript showCr:'*** Please read the files COPYRIGHT and LICENSE  ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1207
	    Transcript showCr:'*** for more details.                            ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1208
	    Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1209
	].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1210
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1211
85
claus
parents: 77
diff changeset
  1212
    "
357
claus
parents: 356
diff changeset
  1213
     enable the graphical debugger/inspector 
claus
parents: 356
diff changeset
  1214
     (they could have been (re)defined as autoloaded in the patches file)
85
claus
parents: 77
diff changeset
  1215
    "
claus
parents: 77
diff changeset
  1216
    self initStandardTools.
claus
parents: 77
diff changeset
  1217
claus
parents: 77
diff changeset
  1218
    "
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1219
     if there is a display, start its event dispatcher 
85
claus
parents: 77
diff changeset
  1220
    "
8
639f407faddd last version before big change in dispatch
claus
parents: 7
diff changeset
  1221
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1222
	Display startDispatch.
8
639f407faddd last version before big change in dispatch
claus
parents: 7
diff changeset
  1223
    ].
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1224
162
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
  1225
    Initializing := false.
79c831f473a9 neue minor release nr.
claus
parents: 161
diff changeset
  1226
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1227
    (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1228
	StartupClass perform:StartupSelector withArguments:StartupArguments.
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1229
    ].
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1230
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1231
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1232
     if view-classes exist, start dispatching;
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1233
     otherwise go into a read-eval-print loop
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1234
    "
443
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
  1235
    (Display notNil and:[haveStartupFile]) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1236
	Processor dispatchLoop
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1237
    ] ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1238
	self readEvalPrint
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1239
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1240
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1241
    "done"
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1242
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1243
    self exit
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1244
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1245
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1246
readEvalPrint
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1247
    "simple read-eval-print loop for non-graphical Minitalk"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1248
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1249
    |text|
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
    'ST- ' print.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1252
    Stdin skipSeparators.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1253
    Stdin atEnd ifFalse:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1254
	text := Stdin nextChunk.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1255
	[text notNil] whileTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1256
	    (Compiler evaluate:text) printNL.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1257
	    'ST- ' print.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1258
	    text := Stdin nextChunk
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1259
	].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1260
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1261
    '' printNL
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1262
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1263
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1264
restart
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1265
    "startup after an image has been loaded;
10
claus
parents: 8
diff changeset
  1266
     there are three change-notifications made to dependents of ObjectMemory,
claus
parents: 8
diff changeset
  1267
     which allow a stepwise re-init: #earlyRestart, #restarted and #returnFromSnapshot.
335
claus
parents: 329
diff changeset
  1268
10
claus
parents: 8
diff changeset
  1269
     #earlyRestart is send first, nothing has been setup yet.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1270
		   (should be used to flush all device dependent entries)
335
claus
parents: 329
diff changeset
  1271
10
claus
parents: 8
diff changeset
  1272
     #restarted is send right after.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1273
		   (should be used to recreate external resources (fds, bitmaps etc)
335
claus
parents: 329
diff changeset
  1274
10
claus
parents: 8
diff changeset
  1275
     #returnFromSnapshot is sent last
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1276
		   (should be used to restart processes, reOpen Streams which cannot
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1277
		    be automatically be reopened (i.e. Sockets, Pipes) and so on.
335
claus
parents: 329
diff changeset
  1278
		   (Notice that positionable fileStreams are already reopened and repositioned)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1279
     "
10
claus
parents: 8
diff changeset
  1280
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1281
    |deb insp imageName|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1282
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1283
    Initializing := true.
335
claus
parents: 329
diff changeset
  1284
claus
parents: 329
diff changeset
  1285
    "
claus
parents: 329
diff changeset
  1286
     flush cached path directories (may have changed in the meanwhile)
claus
parents: 329
diff changeset
  1287
    "
329
claus
parents: 326
diff changeset
  1288
    self flushPathCaches.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1289
477
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
  1290
    "
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
  1291
     reinit the default streams: Stdin, Stdout and Stderr
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
  1292
    "
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
  1293
    self reinitStandardStreams.
8710aba7876b oops - making id's real objects requires a store macro
Claus Gittinger <cg@exept.de>
parents: 457
diff changeset
  1294
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1295
    "temporary switch back to dumb interface - 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1296
     to handle errors while view-stuff is not yet reinitialized"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1297
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1298
    insp := Inspector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1299
    deb := Debugger.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1300
    Inspector := MiniInspector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1301
    Debugger := MiniDebugger.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1302
335
claus
parents: 329
diff changeset
  1303
    "
claus
parents: 329
diff changeset
  1304
     reinitialize the Processor
claus
parents: 329
diff changeset
  1305
    "
claus
parents: 329
diff changeset
  1306
    Processor reinitialize.
claus
parents: 329
diff changeset
  1307
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1308
    ObjectMemory changed:#earlyRestart.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1309
    ObjectMemory changed:#restarted.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1310
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1311
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1312
     some must be reinitialized before ...
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1313
     - sorry, but order is important
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1314
    "
62
e1b4369c61fb *** empty log message ***
claus
parents: 50
diff changeset
  1315
    Workstation notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1316
	Workstation reinitialize.
62
e1b4369c61fb *** empty log message ***
claus
parents: 50
diff changeset
  1317
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1318
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1319
    ObjectMemory changed:#returnFromSnapshot.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1320
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1321
    OperatingSystem enableUserInterrupts.
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1322
    OperatingSystem enableHardSignalInterrupts.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1323
335
claus
parents: 329
diff changeset
  1324
    "now, display and view-stuff works;
claus
parents: 329
diff changeset
  1325
     back to the previous debugging interface
claus
parents: 329
diff changeset
  1326
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1327
    Inspector := insp.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1328
    Debugger := deb.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1329
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1330
    Initializing := false.
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1331
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1332
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1333
     if there is no Transcript, go to stderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1334
    "
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1335
    Transcript isNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1336
	Transcript := Stderr
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1337
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1338
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1339
    (SilentLoading == true) ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1340
	Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1341
	Transcript showCr:('Smalltalk restarted from:' , ObjectMemory imageName).
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1342
	Transcript cr.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1343
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1344
	DemoMode ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1345
	    Transcript showCr:'*** Restricted use:                              ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1346
	    Transcript showCr:'*** This program may be used for education only. ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1347
	    Transcript showCr:'*** Please read the files COPYRIGHT and LICENSE  ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1348
	    Transcript showCr:'*** for more details.                            ***'.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1349
	    Transcript cr.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1350
	].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1351
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1352
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1353
    "
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1354
     give user a chance to re-customize things
335
claus
parents: 329
diff changeset
  1355
     reading if smalltalk_r.rc may be suppressed by the
claus
parents: 329
diff changeset
  1356
     -fastStart argument.
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1357
    "
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1358
    (Arguments includes:'-faststart') ifFalse:[
423
claus
parents: 421
diff changeset
  1359
	Class withoutUpdatingChangesDo:[
421
claus
parents: 419
diff changeset
  1360
	    (self fileIn:((Arguments at:1) , '_r.rc')) ifFalse:[
423
claus
parents: 421
diff changeset
  1361
		"no _r.rc file where executable is; try default smalltalk_r.rc"
claus
parents: 421
diff changeset
  1362
		self fileIn:'smalltalk_r.rc'
421
claus
parents: 419
diff changeset
  1363
	    ].
claus
parents: 419
diff changeset
  1364
	]
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1365
    ].
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1366
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1367
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1368
     if there is a display, start its event dispatcher 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1369
    "
10
claus
parents: 8
diff changeset
  1370
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1371
	Display startDispatch.
10
claus
parents: 8
diff changeset
  1372
    ].
claus
parents: 8
diff changeset
  1373
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1374
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1375
     this allows firing an application by defining
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1376
     these two globals during snapshot ... or in main
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1377
    "
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1378
    (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
335
claus
parents: 329
diff changeset
  1379
	"
claus
parents: 329
diff changeset
  1380
	 allow more customization by reading an image specific rc-file
claus
parents: 329
diff changeset
  1381
	"
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1382
	imageName := ObjectMemory imageName.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1383
	imageName notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1384
	    (imageName endsWith:'.img') ifTrue:[
359
claus
parents: 357
diff changeset
  1385
		imageName := imageName copyWithoutLast:4
claus
parents: 357
diff changeset
  1386
	    ].
claus
parents: 357
diff changeset
  1387
	    self fileIn:(imageName , '.rc')
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1388
	].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1389
	StartupClass perform:StartupSelector withArguments:StartupArguments.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1390
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1391
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1392
    "
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1393
     if view-classes exist, start dispatching;
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1394
     otherwise go into a read-eval-print loop
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1395
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1396
    Display notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1397
	Processor dispatchLoop
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1398
    ] ifFalse:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1399
	self readEvalPrint
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1400
    ].
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1401
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  1402
    self exit
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1403
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1404
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1405
startupClass:aClass selector:aSymbol arguments:anArrayOrNil
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1406
    "set the class, selector and arguments to be performed when smalltalk
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1407
     starts. Setting those before saving a snapshot, will make the saved
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1408
     image come up executing your application (instead of the normal mainloop)"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1409
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1410
    StartupClass := aClass.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1411
    StartupSelector := aSymbol.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1412
    StartupArguments := anArrayOrNil
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1413
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1414
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1415
startupClass
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1416
    "return the class, that will get the start message when smalltalk
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1417
     starts and its non-nil. Usually this is nil, but saving an image 
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1418
     with a non-nil StartupClass allows stand-alone applications"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1419
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1420
    ^ StartupClass
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1421
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1422
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1423
startupSelector
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1424
    "return the selector, that will be sent to StartupClass"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1425
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1426
    ^ StartupSelector
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1427
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1428
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1429
startupArguments
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1430
    "return the arguments passed to StartupClass"
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1431
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1432
    ^ StartupArguments
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1433
! !
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1434
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1435
!Smalltalk class methodsFor:'system management'!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1436
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1437
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
  1438
    "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
  1439
     named aFileName"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1440
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1441
    aPath do:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1442
	|realName|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1443
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1444
	(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
  1445
	    ^ realName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1446
	]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1447
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1448
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1449
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1450
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1451
language
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1452
    "return the language setting"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1453
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1454
    ^ Language
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1455
!
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1456
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1457
languageTerritory
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1458
    "return the language territory setting"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1459
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1460
    ^ LanguageTerritory
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1461
!
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
  1462
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1463
logDoits
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1464
    "return true if doits should go into the changes file
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1465
     as well as changes - by default, this is off, since
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1466
     it can blow up the changes file enormously ...
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1467
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1468
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1469
    ^ LogDoits
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1470
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1471
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1472
     LogDoits := false
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1473
     LogDoits := true
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
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1477
loadBinaries:aBoolean
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1478
    "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
  1479
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1480
    LoadBinaries := aBoolean
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1481
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1482
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1483
logDoits:aBoolean
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1484
    "turn on/off logging of doits in the changes file.
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1485
     By default, this is off, since it can blow up the 
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1486
     changes file enormously ...
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1487
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1488
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1489
    LogDoits := aBoolean
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1490
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1491
!
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1492
329
claus
parents: 326
diff changeset
  1493
getSourceFileName:aFileName
claus
parents: 326
diff changeset
  1494
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1495
     (subdirectories named 'source' in SystemPath);
claus
parents: 326
diff changeset
  1496
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1497
claus
parents: 326
diff changeset
  1498
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1499
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1500
claus
parents: 326
diff changeset
  1501
	^ aFileName
claus
parents: 326
diff changeset
  1502
    ].
claus
parents: 326
diff changeset
  1503
claus
parents: 326
diff changeset
  1504
    SourcePath isNil ifTrue:[
claus
parents: 326
diff changeset
  1505
	SourcePath := self constructPathFor:'source'
claus
parents: 326
diff changeset
  1506
    ].
claus
parents: 326
diff changeset
  1507
claus
parents: 326
diff changeset
  1508
    ^ self searchPath:SourcePath for:aFileName in:'source' 
claus
parents: 326
diff changeset
  1509
claus
parents: 326
diff changeset
  1510
    "
claus
parents: 326
diff changeset
  1511
     Smalltalk getSourceFileName:'Smalltalk.st'
claus
parents: 326
diff changeset
  1512
    "
claus
parents: 326
diff changeset
  1513
!
claus
parents: 326
diff changeset
  1514
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1515
systemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1516
    "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
  1517
     looks for system files 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1518
     (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
  1519
     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
  1520
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1521
    ^ SystemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1522
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1523
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1524
     Smalltalk systemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1525
     Smalltalk systemPath addLast:'someOtherDirectoryPath'
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1526
    "
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
realSystemPath
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1530
    "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
  1531
     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
  1532
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1533
    RealSystemPath isNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1534
	RealSystemPath := SystemPath select:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1535
	    (OperatingSystem isDirectory:dirName)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1536
	    and:[OperatingSystem isReadable:dirName]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1537
	].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1538
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1539
    ^ RealSystemPath
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
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1542
constructPathFor:aDirectoryName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1543
    "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
  1544
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1545
    ^ self realSystemPath select:[:dirName |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1546
	OperatingSystem isDirectory:(dirName , '/' , aDirectoryName)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1547
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1548
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1549
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1550
loadBinaries
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1551
    "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
  1552
     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
  1553
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1554
    ^ LoadBinaries
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1555
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1556
329
claus
parents: 326
diff changeset
  1557
getResourceFileName:aFileName
claus
parents: 326
diff changeset
  1558
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1559
     (subdirectories named 'resource' in SystemPath);
claus
parents: 326
diff changeset
  1560
     return the absolute filename or nil if none is found."
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1561
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1562
    (aFileName startsWith:'/') ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1563
	"dont use path for absolute file names"
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1564
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1565
	^ aFileName
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1566
    ].
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1567
329
claus
parents: 326
diff changeset
  1568
    ResourcePath isNil ifTrue:[
claus
parents: 326
diff changeset
  1569
	ResourcePath := self constructPathFor:'resources'
claus
parents: 326
diff changeset
  1570
    ].
claus
parents: 326
diff changeset
  1571
claus
parents: 326
diff changeset
  1572
    ^ self searchPath:ResourcePath for:aFileName in:'resources' 
claus
parents: 326
diff changeset
  1573
claus
parents: 326
diff changeset
  1574
    "
claus
parents: 326
diff changeset
  1575
     Smalltalk getResourceFileName:'SBrowser.rs'
claus
parents: 326
diff changeset
  1576
    "
claus
parents: 326
diff changeset
  1577
!
claus
parents: 326
diff changeset
  1578
claus
parents: 326
diff changeset
  1579
getBitmapFileName:aFileName
claus
parents: 326
diff changeset
  1580
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1581
     (subdirectories named 'bitmaps' in SystemPath);
claus
parents: 326
diff changeset
  1582
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1583
claus
parents: 326
diff changeset
  1584
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1585
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1586
claus
parents: 326
diff changeset
  1587
	^ aFileName
claus
parents: 326
diff changeset
  1588
    ].
claus
parents: 326
diff changeset
  1589
claus
parents: 326
diff changeset
  1590
    BitmapPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1591
	BitmapPath := self constructPathFor:'bitmaps'
claus
parents: 326
diff changeset
  1592
    ].
claus
parents: 326
diff changeset
  1593
claus
parents: 326
diff changeset
  1594
    ^ self searchPath:BitmapPath for:aFileName in:'bitmaps' 
claus
parents: 326
diff changeset
  1595
claus
parents: 326
diff changeset
  1596
    "
claus
parents: 326
diff changeset
  1597
     Smalltalk getBitmapFileName:'SBrowser.xbm'
claus
parents: 326
diff changeset
  1598
    "
claus
parents: 326
diff changeset
  1599
!
claus
parents: 326
diff changeset
  1600
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1601
flushPathCaches
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1602
    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
  1603
!
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
bitmapFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1606
    "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
  1607
     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
  1608
     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
  1609
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1610
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1611
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1612
    aString := self getBitmapFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1613
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1614
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1615
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1616
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1617
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1618
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1619
getSystemFileName:aFileName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1620
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1621
     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
  1622
     see comment in Smalltalk>>initSystemPath."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1623
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1624
    "credits for this method go to Markus ...."
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
    (aFileName startsWith:'/') ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1627
	"dont use path for absolute file names"
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
	^ aFileName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1630
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1631
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1632
    self realSystemPath do:[:dirName |
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1633
	|realName|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1634
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1635
	realName := dirName , '/' , aFileName.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1636
	(OperatingSystem isReadable:realName) ifTrue: [
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1637
	    ^ realName
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1638
	]
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1639
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1640
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1641
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1642
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1643
systemFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1644
    "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
  1645
     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
  1646
     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
  1647
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1648
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1649
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1650
    aString := self getSystemFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1651
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1652
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1653
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1654
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1655
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1656
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1657
systemPath:aPath
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1658
    "set the collection of directorynames, where smalltalk
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1659
     looks for system files 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1660
     (usually in subdirs such as resources, bitmaps, source etc.)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1661
     see comment in Smalltalk>>initSystemPath."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1662
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1663
    SystemPath := aPath.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1664
    self flushPathCaches
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1665
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1666
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1667
     Smalltalk systemPath
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1668
     Smalltalk systemPath:(Smalltalk systemPath copy addLast:'someOtherDirectoryPath')
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
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1671
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1672
resourceFileStreamFor:aFileName
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1673
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1674
     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
  1675
     Searches in subdirectories named 'resource' in SystemPath"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1676
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1677
    |aString|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1678
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1679
    aString := self getResourceFileName:aFileName.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1680
    aString notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1681
	^ FileStream readonlyFileNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1682
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1683
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1684
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1685
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1686
sourceFileStreamFor:aFileName
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1687
    "search aFileName in some standard places;
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1688
     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
  1689
     Searches in subdirectories named 'source' in SystemPath"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1690
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1691
    |aString|
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1692
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1693
    aString := self getSourceFileName:aFileName.
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1694
    aString notNil ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1695
	^ FileStream readonlyFileNamed:aString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1696
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1697
    ^ nil
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1698
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  1699
329
claus
parents: 326
diff changeset
  1700
getFileInFileName:aFileName
claus
parents: 326
diff changeset
  1701
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1702
     (subdirectories named 'fileIn' in SystemPath);
claus
parents: 326
diff changeset
  1703
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1704
claus
parents: 326
diff changeset
  1705
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1706
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1707
claus
parents: 326
diff changeset
  1708
	^ aFileName
claus
parents: 326
diff changeset
  1709
    ].
claus
parents: 326
diff changeset
  1710
claus
parents: 326
diff changeset
  1711
    FileInPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1712
	FileInPath := self constructPathFor:'fileIn'
claus
parents: 326
diff changeset
  1713
    ].
claus
parents: 326
diff changeset
  1714
claus
parents: 326
diff changeset
  1715
    ^ self searchPath:FileInPath for:aFileName in:'fileIn' 
claus
parents: 326
diff changeset
  1716
claus
parents: 326
diff changeset
  1717
!
claus
parents: 326
diff changeset
  1718
claus
parents: 326
diff changeset
  1719
getBinaryFileName:aFileName
claus
parents: 326
diff changeset
  1720
    "search aFileName in some standard places 
claus
parents: 326
diff changeset
  1721
     (subdirectories named 'binary' in SystemPath);
claus
parents: 326
diff changeset
  1722
     return the absolute filename or nil if none is found."
claus
parents: 326
diff changeset
  1723
claus
parents: 326
diff changeset
  1724
    (aFileName startsWith:'/') ifTrue:[
claus
parents: 326
diff changeset
  1725
	"dont use path for absolute file names"
claus
parents: 326
diff changeset
  1726
claus
parents: 326
diff changeset
  1727
	^ aFileName
claus
parents: 326
diff changeset
  1728
    ].
claus
parents: 326
diff changeset
  1729
claus
parents: 326
diff changeset
  1730
    BinaryPath isNil ifTrue:[
claus
parents: 326
diff changeset
  1731
	BinaryPath := self constructPathFor:'binary'
claus
parents: 326
diff changeset
  1732
    ].
claus
parents: 326
diff changeset
  1733
claus
parents: 326
diff changeset
  1734
    ^ self searchPath:BinaryPath for:aFileName in:'binary' 
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1735
!
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1736
10
claus
parents: 8
diff changeset
  1737
readAbbreviations
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1738
    "read classname to filename mappings from include/abbrev.stc.
329
claus
parents: 326
diff changeset
  1739
     sigh - all for those poor sys5.3 or MSDOS people with short filenames ..."
10
claus
parents: 8
diff changeset
  1740
345
claus
parents: 335
diff changeset
  1741
    |aStream line words|
10
claus
parents: 8
diff changeset
  1742
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1743
    CachedAbbreviations := IdentityDictionary new.
329
claus
parents: 326
diff changeset
  1744
    aStream := self systemFileStreamFor:'include/abbrev.stc'.
10
claus
parents: 8
diff changeset
  1745
    aStream notNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1746
	[aStream atEnd] whileFalse:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1747
	    line := aStream nextLine.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1748
	    line notNil ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1749
		(line startsWith:'#') ifFalse:[
345
claus
parents: 335
diff changeset
  1750
		    words := line asCollectionOfWords.
claus
parents: 335
diff changeset
  1751
		    words size >= 2 ifTrue:[
claus
parents: 335
diff changeset
  1752
			CachedAbbreviations     
claus
parents: 335
diff changeset
  1753
				at:(words at:1) withoutSeparators asSymbol 
claus
parents: 335
diff changeset
  1754
				put:(words at:2) withoutSeparators.
claus
parents: 335
diff changeset
  1755
		    ]
claus
parents: 335
diff changeset
  1756
		]
claus
parents: 335
diff changeset
  1757
	    ]
claus
parents: 335
diff changeset
  1758
	].
claus
parents: 335
diff changeset
  1759
	aStream close
claus
parents: 335
diff changeset
  1760
    ]
claus
parents: 335
diff changeset
  1761
claus
parents: 335
diff changeset
  1762
    "
claus
parents: 335
diff changeset
  1763
     Smalltalk readAbbreviations
claus
parents: 335
diff changeset
  1764
    "
claus
parents: 335
diff changeset
  1765
!
claus
parents: 335
diff changeset
  1766
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1767
fileInFileStreamFor:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1768
    "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
  1769
     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
  1770
     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
  1771
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1772
    |aString|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1773
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1774
    aString := self getFileInFileName:aFileName.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1775
    aString notNil ifTrue:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1776
	^ FileStream readonlyFileNamed:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1777
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1778
    ^ nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1779
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1780
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1781
libraryFileNameOfClass:aClassOrClassName
354
claus
parents: 352
diff changeset
  1782
    "read the libinfo file 'liblist.stc' and the abbreviation file 
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1783
     'abbrev.stc' for an entry for aClassOrClassName.
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1784
     Search for the className in the first col, and return the value found in
354
claus
parents: 352
diff changeset
  1785
     the 2nd (for the libinfo file) or the 3rd (for the abbrev file) col.
claus
parents: 352
diff changeset
  1786
     Return nil if no entry is found.
claus
parents: 352
diff changeset
  1787
345
claus
parents: 335
diff changeset
  1788
     A nil returns means that this class is either built-in or not present
claus
parents: 335
diff changeset
  1789
     in a package-class library (i.e. either as separate .o or separate .st file).
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1790
     Otherwise, the returned name is the classLibrary object of that class.
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1791
     The classes code can be loaded from that file if binary loading is supported."
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1792
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1793
    |aStream line words n aClassName|
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1794
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1795
    aClassOrClassName isBehavior ifTrue:[
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1796
	aClassName := aClassOrClassName name
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1797
    ] ifFalse:[
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1798
	aClassName := aClassOrClassName
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1799
    ].
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1800
    aClassName := aClassName asString.
345
claus
parents: 335
diff changeset
  1801
354
claus
parents: 352
diff changeset
  1802
    #('include/liblist.stc' 'include/abbrev.stc')
claus
parents: 352
diff changeset
  1803
    with:#(2 3) do:[:fileName :col |
claus
parents: 352
diff changeset
  1804
claus
parents: 352
diff changeset
  1805
	aStream := self systemFileStreamFor:fileName.
claus
parents: 352
diff changeset
  1806
	aStream notNil ifTrue:[
claus
parents: 352
diff changeset
  1807
	    [aStream atEnd] whileFalse:[
claus
parents: 352
diff changeset
  1808
		line := aStream nextLine.
claus
parents: 352
diff changeset
  1809
		line notNil ifTrue:[
claus
parents: 352
diff changeset
  1810
		    (line startsWith:'#') ifFalse:[
claus
parents: 352
diff changeset
  1811
			words := line asCollectionOfWords.
claus
parents: 352
diff changeset
  1812
			(n := words size) > 1 ifTrue:[
claus
parents: 352
diff changeset
  1813
			    (words at:1) = aClassName ifTrue:[
claus
parents: 352
diff changeset
  1814
				n >= col ifTrue:[
claus
parents: 352
diff changeset
  1815
				    ^ (words at:col) withoutSeparators
claus
parents: 352
diff changeset
  1816
				]
345
claus
parents: 335
diff changeset
  1817
			    ]
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1818
			]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1819
		    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1820
		]
357
claus
parents: 356
diff changeset
  1821
	    ].
claus
parents: 356
diff changeset
  1822
	    aStream close
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1823
	].
345
claus
parents: 335
diff changeset
  1824
    ].
354
claus
parents: 352
diff changeset
  1825
345
claus
parents: 335
diff changeset
  1826
    ^ nil
claus
parents: 335
diff changeset
  1827
claus
parents: 335
diff changeset
  1828
    "
claus
parents: 335
diff changeset
  1829
     Smalltalk libraryFileNameOfClass:'ClockView' 
claus
parents: 335
diff changeset
  1830
     Smalltalk libraryFileNameOfClass:'Bag' 
claus
parents: 335
diff changeset
  1831
    "
10
claus
parents: 8
diff changeset
  1832
!
claus
parents: 8
diff changeset
  1833
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1834
filenameAbbreviations
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1835
    "return a dictionary containing the classname-to-filename
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1836
     mappings. (needed for sys5.3 users, where filenames are limited
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1837
     to 14 chars)"
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1838
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1839
    CachedAbbreviations isNil ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1840
	self readAbbreviations
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1841
    ].
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1842
    ^ CachedAbbreviations
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1843
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1844
    "flush with:
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  1845
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1846
     CachedAbbreviations := nil
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  1847
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1848
    "
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1849
     Smalltalk filenameAbbreviations
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1850
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1851
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1852
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1853
fileNameForClass:aClassOrClassName
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1854
    "return a good filename for aClassOrClassName -
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1855
     using the abbreviation file if there is one"
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1856
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1857
    |fileName abbrev aClassName|
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1858
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1859
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1860
    aClassOrClassName isBehavior ifTrue:[
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1861
	aClassName := aClassOrClassName name
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1862
    ] ifFalse:[
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1863
	aClassName := aClassOrClassName
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1864
    ].
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1865
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1866
    fileName := aClassName asSymbol.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1867
10
claus
parents: 8
diff changeset
  1868
    "first look, if the class exists and has a fileName"
claus
parents: 8
diff changeset
  1869
24
20cfbafcd0a3 *** empty log message ***
claus
parents: 13
diff changeset
  1870
" later ... - compiler should put the source file name into the class
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1871
    (Symbol hasInterned:aClassName) ifTrue:[:sym |
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1872
	|class|
10
claus
parents: 8
diff changeset
  1873
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1874
	(Smalltalk includesKey:sym) ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1875
	    class := Smalltalk at:sym.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1876
	    class isClass ifTrue:[
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1877
		abbrev := class classFileName.
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1878
	    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1879
	]
10
claus
parents: 8
diff changeset
  1880
    ].
claus
parents: 8
diff changeset
  1881
"
claus
parents: 8
diff changeset
  1882
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1883
    "look for abbreviation"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1884
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  1885
    abbrev := self filenameAbbreviations at:fileName ifAbsent:[nil].
10
claus
parents: 8
diff changeset
  1886
    abbrev notNil ifTrue:[^ abbrev].
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  1887
10
claus
parents: 8
diff changeset
  1888
    "no abbreviation found - if its a short name, take it"
claus
parents: 8
diff changeset
  1889
claus
parents: 8
diff changeset
  1890
    OperatingSystem maxFileNameLength < (fileName size + 3) ifTrue:[
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  1891
	"this will only be triggered on sys5.3 type systems"
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  1892
	self warn:'cant find short for ' , fileName , ' in abbreviation file'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1893
    ].
485
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1894
    ^ fileName asString
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1895
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1896
    "
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1897
     Smalltalk fileNameForClass:SmallInteger    
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1898
     Smalltalk fileNameForClass:'SmallInteger'    
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1899
     Smalltalk fileNameForClass:'OperatingSystem' 
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1900
     Smalltalk fileNameForClass:'SomeUnknownClass' 
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1901
    "
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1902
99f5376c0c62 allow class as arg to libraryFileName / sourceFileName
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
  1903
    "Modified: 4.11.1995 / 20:01:16 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1904
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1905
2
claus
parents: 1
diff changeset
  1906
classNameForFile:aFileName
10
claus
parents: 8
diff changeset
  1907
    "return the className which corresponds to an abbreviated fileName,
claus
parents: 8
diff changeset
  1908
     or nil if no special translation applies. The given filename arg should
claus
parents: 8
diff changeset
  1909
     NOT include any suffix such as '.st'."
2
claus
parents: 1
diff changeset
  1910
357
claus
parents: 356
diff changeset
  1911
    ^ self filenameAbbreviations keyAtEqualValue:aFileName ifAbsent:[aFileName].
2
claus
parents: 1
diff changeset
  1912
329
claus
parents: 326
diff changeset
  1913
    "
claus
parents: 326
diff changeset
  1914
     Smalltalk classNameForFile:'DrawObj'
claus
parents: 326
diff changeset
  1915
    "
2
claus
parents: 1
diff changeset
  1916
!
claus
parents: 1
diff changeset
  1917
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1918
secureFileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1919
    "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
  1920
     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
  1921
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1922
    (SignalSet 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1923
	with:AbortSignal
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1924
	with:Process terminateSignal)
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1925
    handle:[:ex |
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1926
	ex return
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1927
    ] do:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1928
	^ self fileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1929
    ].
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1930
    ^ false
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1931
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1932
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1933
fileIn:aFileName
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1934
    "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
  1935
     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
  1936
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1937
    ^ 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
  1938
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1939
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1940
     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
  1941
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1942
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1943
    "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
  1944
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1945
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1946
silentFileIn:aFilename
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1947
    "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
  1948
     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
  1949
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1950
    |wasSilent|
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1951
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1952
    wasSilent := self silentLoading:true.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1953
    [
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1954
	self fileIn:aFilename
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1955
    ] valueNowOrOnUnwindDo:[
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1956
	self silentLoading:wasSilent
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1957
    ]
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1958
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  1959
345
claus
parents: 335
diff changeset
  1960
fileInClass:aClassName fromObject:aFileName
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1961
    "read in the named object file and dynamic-link it into the system
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1962
     - look for it in some standard places;
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1963
     return true if ok, false if failed."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1964
356
claus
parents: 354
diff changeset
  1965
    |path ok|
329
claus
parents: 326
diff changeset
  1966
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1967
    "
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1968
     check if the dynamic loader class is in
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1969
    "
390
claus
parents: 384
diff changeset
  1970
    (LoadBinaries not or:[ObjectFileLoader isNil]) ifTrue:[^ false].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1971
329
claus
parents: 326
diff changeset
  1972
    (path := self getBinaryFileName:aFileName) isNil ifTrue:[^ false].
356
claus
parents: 354
diff changeset
  1973
    ok := (ObjectFileLoader loadClass:aClassName fromObjectFile:path) notNil.
claus
parents: 354
diff changeset
  1974
    ok ifTrue:[
claus
parents: 354
diff changeset
  1975
	Transcript show:'  loaded ' , aClassName , ' from ' ; showCr:aFileName.
claus
parents: 354
diff changeset
  1976
    ].
claus
parents: 354
diff changeset
  1977
    ^ ok
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1978
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1979
    "
345
claus
parents: 335
diff changeset
  1980
     Smalltalk fileInClass:'AbstractPath' fromObject:'../../goodies/Paths/AbstrPath.so' 
claus
parents: 335
diff changeset
  1981
     Smalltalk fileInClass:'ClockView' fromObject:'../../libwidg3/libwidg3.so' 
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  1982
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1983
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  1984
400
claus
parents: 396
diff changeset
  1985
fileIn:aFileName logged:logged
claus
parents: 396
diff changeset
  1986
    "read in the named file - look for it in some standard places;
claus
parents: 396
diff changeset
  1987
     return true if ok, false if failed.
claus
parents: 396
diff changeset
  1988
     The argument logged controls, if the changefile is to be updated."
claus
parents: 396
diff changeset
  1989
claus
parents: 396
diff changeset
  1990
    ^ self fileIn:aFileName lazy:nil silent:nil logged:logged 
claus
parents: 396
diff changeset
  1991
claus
parents: 396
diff changeset
  1992
    "
claus
parents: 396
diff changeset
  1993
     Smalltalk fileIn:'source/TicTacToe.st' logged:false
claus
parents: 396
diff changeset
  1994
    "
claus
parents: 396
diff changeset
  1995
!
claus
parents: 396
diff changeset
  1996
claus
parents: 396
diff changeset
  1997
fileIn:aFileName lazy:lazy silent:silent logged:logged
claus
parents: 396
diff changeset
  1998
    "read in the named file - look for it in some standard places;
claus
parents: 396
diff changeset
  1999
     return true if ok, false if failed.
claus
parents: 396
diff changeset
  2000
     If lazy is true, no code is generated for methods, instead stups
claus
parents: 396
diff changeset
  2001
     are created which compile themself when first executed. This allows
claus
parents: 396
diff changeset
  2002
     for much faster fileIn (but slows down the first execution later).
claus
parents: 396
diff changeset
  2003
     Since no syntax checks are done when doing lazy fileIn, use this only for
claus
parents: 396
diff changeset
  2004
     code which is known to be syntactically correct.
claus
parents: 396
diff changeset
  2005
     If silent is true, no compiler messages are output to the transcript.
claus
parents: 396
diff changeset
  2006
     Giving nil for silent/lazy will use the current settings."
claus
parents: 396
diff changeset
  2007
421
claus
parents: 419
diff changeset
  2008
    |aStream path wasLazy wasSilent morePath oldSystemPath oldRealPath|
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2009
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2010
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2011
     an object or shared object ?
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2012
    "
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2013
    ((aFileName endsWith:'.o')
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2014
    or:[(aFileName endsWith:'.obj')
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2015
    or:[aFileName endsWith:'.so']]) ifTrue:[
390
claus
parents: 384
diff changeset
  2016
	(LoadBinaries not or:[ObjectFileLoader isNil]) ifTrue:[^ false].
329
claus
parents: 326
diff changeset
  2017
	path := self getBinaryFileName:aFileName.
122
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2018
	path isNil ifTrue:[^ false].
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2019
	^ ObjectFileLoader loadObjectFile:aFileName
1680ab5285c4 allow logging of doits;
claus
parents: 95
diff changeset
  2020
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2021
329
claus
parents: 326
diff changeset
  2022
    (aFileName startsWith:'source/') ifTrue:[
claus
parents: 326
diff changeset
  2023
	aStream := self sourceFileStreamFor:(aFileName copyFrom:8)
claus
parents: 326
diff changeset
  2024
    ] ifFalse:[
claus
parents: 326
diff changeset
  2025
	(aFileName startsWith:'fileIn/') ifTrue:[
claus
parents: 326
diff changeset
  2026
	    aStream := self fileInFileStreamFor:(aFileName copyFrom:8)
claus
parents: 326
diff changeset
  2027
	] ifFalse:[
claus
parents: 326
diff changeset
  2028
	    aStream := self systemFileStreamFor:aFileName.
375
claus
parents: 366
diff changeset
  2029
	    (aStream notNil and:[aFileName includes:$/]) ifTrue:[
362
claus
parents: 360
diff changeset
  2030
		"/ temporarily prepend the files directory
claus
parents: 360
diff changeset
  2031
		"/ to the searchPath.
claus
parents: 360
diff changeset
  2032
		"/ This allows fileIn-driver files to refer to local
claus
parents: 360
diff changeset
  2033
		"/ files via a relative path, and drivers to fileIn other
claus
parents: 360
diff changeset
  2034
		"/ drivers ...
claus
parents: 360
diff changeset
  2035
		morePath := aStream pathName asFilename directoryName.
claus
parents: 360
diff changeset
  2036
	    ]
329
claus
parents: 326
diff changeset
  2037
	]
claus
parents: 326
diff changeset
  2038
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2039
    aStream isNil ifTrue:[^ false].
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2040
329
claus
parents: 326
diff changeset
  2041
    lazy notNil ifTrue:[wasLazy := Compiler compileLazy:lazy].
claus
parents: 326
diff changeset
  2042
    silent notNil ifTrue:[wasSilent := self silentLoading:silent].
claus
parents: 326
diff changeset
  2043
    [
423
claus
parents: 421
diff changeset
  2044
	Class updateChangeFileQuerySignal handle:[:ex |
421
claus
parents: 419
diff changeset
  2045
	    ex proceedWith:logged
423
claus
parents: 421
diff changeset
  2046
	] do:[
421
claus
parents: 419
diff changeset
  2047
	    oldSystemPath := SystemPath copy.
claus
parents: 419
diff changeset
  2048
	    morePath notNil ifTrue:[
423
claus
parents: 421
diff changeset
  2049
		SystemPath addFirst:morePath.
claus
parents: 421
diff changeset
  2050
		oldRealPath := RealSystemPath.
claus
parents: 421
diff changeset
  2051
		RealSystemPath := nil.
421
claus
parents: 419
diff changeset
  2052
	    ].
claus
parents: 419
diff changeset
  2053
	    aStream fileIn
claus
parents: 419
diff changeset
  2054
	]
329
claus
parents: 326
diff changeset
  2055
    ] valueNowOrOnUnwindDo:[
362
claus
parents: 360
diff changeset
  2056
	morePath notNil ifTrue:[
claus
parents: 360
diff changeset
  2057
	    SystemPath := oldSystemPath.
claus
parents: 360
diff changeset
  2058
	    RealSystemPath := oldRealPath.
claus
parents: 360
diff changeset
  2059
	].
329
claus
parents: 326
diff changeset
  2060
	lazy notNil ifTrue:[Compiler compileLazy:wasLazy]. 
claus
parents: 326
diff changeset
  2061
	silent notNil ifTrue:[self silentLoading:wasSilent].
claus
parents: 326
diff changeset
  2062
	aStream close
claus
parents: 326
diff changeset
  2063
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2064
    ^ true
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2065
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2066
    "
329
claus
parents: 326
diff changeset
  2067
     Smalltalk fileIn:'source/TicTacToe.st' lazy:true silent:true
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2068
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2069
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2070
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2071
fileIn:aFileName lazy:lazy
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2072
    "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
  2073
     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
  2074
     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
  2075
     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
  2076
     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
  2077
     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
  2078
     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
  2079
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2080
    ^ 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
  2081
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2082
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2083
     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
  2084
    "
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2085
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2086
    "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
  2087
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2088
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2089
fileIn:aFileName lazy:lazy silent:silent
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2090
    "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
  2091
     return true if ok, false if failed.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2092
     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
  2093
     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
  2094
     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
  2095
     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
  2096
     code which is known to be syntactically correct.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2097
     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
  2098
     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
  2099
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2100
    ^ self fileIn:aFileName lazy:lazy silent:silent logged:false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2101
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2102
    "Created: 28.10.1995 / 17:06:41 / cg"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2103
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2104
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2105
fileInChanges
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2106
    "read in the last changes file - bringing the system to the state it
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2107
     had when left the last time.
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2108
     WARNING: this method is rubbish: it should only read things after the
400
claus
parents: 396
diff changeset
  2109
	      last '**snapshot**' - entry 
claus
parents: 396
diff changeset
  2110
	      (instead of the complete changes file)."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2111
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2112
    "
400
claus
parents: 396
diff changeset
  2113
     do NOT update the changes file now ...
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2114
    "
400
claus
parents: 396
diff changeset
  2115
    self fileIn:'changes' logged:false
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2116
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2117
    "
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2118
     Smalltalk fileInChanges 
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2119
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2120
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2121
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2122
fileInClass:aClassName
10
claus
parents: 8
diff changeset
  2123
    "find a source/object file for aClassName and -if found - load it.
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  2124
     search is in some standard places trying driver-file (.ld), object-file (.o) and 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
  2125
     finally source file (.st) in that order.
70
73055652dd21 *** empty log message ***
claus
parents: 62
diff changeset
  2126
     The file is first searched for using the class name, then the abbreviated name."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2127
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2128
    ^ self fileInClass:aClassName initialize:true lazy:false silent:false
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2129
!
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2130
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2131
fileInClass:aClassName initialize:doInit lazy:loadLazy silent:beSilent 
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2132
    "find a source/object file for aClassName and -if found - load it.
345
claus
parents: 335
diff changeset
  2133
     search is in some standard places, trying driver-file (.ld), object-file (.o) and 
claus
parents: 335
diff changeset
  2134
     finally source file (.st), in that order.
claus
parents: 335
diff changeset
  2135
     The file is first searched for using the class name, then the abbreviated name.
claus
parents: 335
diff changeset
  2136
     The argument doInit controlls if the class should be sent a #initialize after the
claus
parents: 335
diff changeset
  2137
     load; loadLazy tells if it should be loaded lazyly. beSilent tells if the compiler
claus
parents: 335
diff changeset
  2138
     should not send notes to the transcript."
claus
parents: 335
diff changeset
  2139
claus
parents: 335
diff changeset
  2140
    |shortName libName newClass ok wasLazy wasSilent|
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2141
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2142
    wasLazy := Compiler compileLazy:loadLazy.
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2143
    wasSilent := self silentLoading:beSilent.
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2144
7
bf6f603119df final release before Dispatcher
claus
parents: 5
diff changeset
  2145
    [
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2146
	Class withoutUpdatingChangesDo:
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2147
	[
329
claus
parents: 326
diff changeset
  2148
	    ok := false.
claus
parents: 326
diff changeset
  2149
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2150
	    "
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2151
	     first, look for a loader-driver file (in fileIn/xxx.ld)
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2152
	    "
329
claus
parents: 326
diff changeset
  2153
	    (ok := self fileIn:('fileIn/' , aClassName , '.ld') lazy:loadLazy silent:beSilent)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2154
	    ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2155
		shortName := self fileNameForClass:aClassName.
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2156
		"
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2157
		 try abbreviated driver-file (in fileIn/xxx.ld)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2158
		"
329
claus
parents: 326
diff changeset
  2159
		shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2160
		    ok := self fileIn:('fileIn/' , shortName , '.ld') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2161
		].
claus
parents: 326
diff changeset
  2162
		ok ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2163
		    "
345
claus
parents: 335
diff changeset
  2164
		     then, if dynamic linking is available, 
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2165
		    "
390
claus
parents: 384
diff changeset
  2166
		    (LoadBinaries and:[ObjectFileLoader notNil]) ifTrue:[
345
claus
parents: 335
diff changeset
  2167
			"
claus
parents: 335
diff changeset
  2168
			 first look for a class packages shared binary in binary/xxx.o
claus
parents: 335
diff changeset
  2169
			"
claus
parents: 335
diff changeset
  2170
			libName := self libraryFileNameOfClass:aClassName.
claus
parents: 335
diff changeset
  2171
			libName notNil ifTrue:[
claus
parents: 335
diff changeset
  2172
			    (ok := self fileInClass:aClassName fromObject:(libName, '.so'))
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2173
			    ifFalse:[
345
claus
parents: 335
diff changeset
  2174
				ok := self fileInClass:aClassName fromObject:(libName, '.o')
claus
parents: 335
diff changeset
  2175
			    ].
claus
parents: 335
diff changeset
  2176
			].
claus
parents: 335
diff changeset
  2177
claus
parents: 335
diff changeset
  2178
			"
claus
parents: 335
diff changeset
  2179
			 then, look for a shared binary in binary/xxx.o
claus
parents: 335
diff changeset
  2180
			"
claus
parents: 335
diff changeset
  2181
			ok ifFalse:[
claus
parents: 335
diff changeset
  2182
			    (ok := self fileInClass:aClassName fromObject:(aClassName, '.so'))
claus
parents: 335
diff changeset
  2183
			    ifFalse:[
claus
parents: 335
diff changeset
  2184
				(ok := self fileInClass:aClassName fromObject:(aClassName, '.o'))
claus
parents: 335
diff changeset
  2185
				ifFalse:[
claus
parents: 335
diff changeset
  2186
				    shortName ~= aClassName ifTrue:[
claus
parents: 335
diff changeset
  2187
					(ok := self fileInClass:aClassName fromObject:(shortName, '.so'))
claus
parents: 335
diff changeset
  2188
					ifFalse:[
claus
parents: 335
diff changeset
  2189
					    ok := self fileInClass:aClassName fromObject:(shortName, '.o')
claus
parents: 335
diff changeset
  2190
					]
claus
parents: 335
diff changeset
  2191
				    ].
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2192
				].
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2193
			    ].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2194
			].
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2195
		    ].
77
6c38ca59927f *** empty log message ***
claus
parents: 70
diff changeset
  2196
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2197
		    "
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2198
		     if that did not work, look for an st-source file ...
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2199
		    "
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2200
		    ok ifFalse:[
329
claus
parents: 326
diff changeset
  2201
			(ok := self fileIn:(aClassName , '.st') lazy:loadLazy silent:beSilent)
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2202
			ifFalse:[
329
claus
parents: 326
diff changeset
  2203
			    shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2204
				ok := self fileIn:(shortName , '.st') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2205
			    ].
claus
parents: 326
diff changeset
  2206
			    ok ifFalse:[
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2207
				"
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2208
				 ... and in the standard source-directory
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2209
				"
329
claus
parents: 326
diff changeset
  2210
				(ok := self fileIn:('source/' , aClassName , '.st') lazy:loadLazy silent:beSilent)
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2211
				ifFalse:[
329
claus
parents: 326
diff changeset
  2212
				    shortName ~= aClassName ifTrue:[
claus
parents: 326
diff changeset
  2213
					ok := self fileIn:('source/' , shortName , '.st') lazy:loadLazy silent:beSilent
claus
parents: 326
diff changeset
  2214
				    ]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2215
				]
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2216
			    ]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2217
			]
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2218
		    ]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2219
		].
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2220
	    ]
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2221
	].
329
claus
parents: 326
diff changeset
  2222
	ok ifTrue:[
claus
parents: 326
diff changeset
  2223
	    newClass := self at:(aClassName asSymbol).
claus
parents: 326
diff changeset
  2224
	    newClass notNil ifTrue:[
claus
parents: 326
diff changeset
  2225
		doInit ifTrue:[
claus
parents: 326
diff changeset
  2226
		    newClass initialize
claus
parents: 326
diff changeset
  2227
		]
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2228
	    ]
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2229
	].
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2230
    ] valueNowOrOnUnwindDo:[
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2231
	Compiler compileLazy:wasLazy. 
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2232
	self silentLoading:wasSilent
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2233
    ].
159
514c749165c3 *** empty log message ***
claus
parents: 146
diff changeset
  2234
216
a8abff749575 *** empty log message ***
claus
parents: 213
diff changeset
  2235
    ^ newClass
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2236
!
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2237
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2238
fileInClass:aClassName initialize:doInit
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2239
    "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
  2240
     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
  2241
     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
  2242
     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
  2243
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2244
    ^ 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
  2245
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2246
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2247
fileInClass:aClassName initialize:doInit lazy:loadLazy
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2248
    "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
  2249
     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
  2250
     finally source file (.st) in that order.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2251
     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
  2252
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2253
     ^ self fileInClass:aClassName initialize:doInit lazy:loadLazy silent:false
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2254
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2255
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2256
compressSources
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2257
    "compress the sources file, and remove all method source strings
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2258
     from the system and replace them by refs to a string in the source file.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2259
     This is a bit different in ST/X than in other smalltalks,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2260
     since we use per-class sourcefiles for the compiled classes,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2261
     and a mix of in-memory strings and one-for-all sourceFile for
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2262
     incremental compiled methods.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2263
     Therefore, only those sources which are not coming from compiled
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2264
     methods are put into the 'st.src' file - all others are untouched.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2265
     This is being automated - so dont care for now."
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2266
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2267
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2268
     first, find all methods which contain either a string-ref
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2269
     or an external string in the 'st.src' file
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2270
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2271
    |newStream table source pos fileName|
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2272
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2273
    newStream := 'src.tmp' asFilename writeStream.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2274
    newStream isNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2275
	self error:'cannot create new temporary source file'.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2276
	^ self
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2277
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2278
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2279
    table := IdentityDictionary new:100.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2280
329
claus
parents: 326
diff changeset
  2281
    Method allSubInstancesDo:[:aMethod |
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2282
	source := nil.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2283
	aMethod sourcePosition notNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2284
	    aMethod sourceFilename = 'st.src' ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2285
		source := aMethod source.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2286
	    ]
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2287
	] ifFalse:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2288
	    source := aMethod source
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2289
	].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2290
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2291
	source notNil ifTrue:[
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2292
	    pos := newStream position.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2293
	    newStream nextChunkPut:source.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2294
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2295
	    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2296
	     dont change the methods info - maybe some write error
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2297
	     occurs later, in that case we abort and leave everything
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2298
	     untouched.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2299
	    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2300
	    table at:aMethod put:pos
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2301
	]
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2302
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2303
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2304
    newStream close.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2305
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2306
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2307
     now, rename the new source file,
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2308
    "
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2309
    fileName := (ObjectMemory nameForSources).
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2310
    ('src.tmp' asFilename renameTo:fileName) ifFalse:[
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2311
	self error:'cannot rename temporary file to new source file'.
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2312
	^ self
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2313
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2314
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2315
    "good - now go over all changed methods, and change their
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2316
     source reference"
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2317
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2318
    table keysAndValuesDo:[:aMethod :pos |
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 191
diff changeset
  2319
	aMethod sourceFilename:fileName position:pos.
271
624d7d25dcea *** empty log message ***
claus
parents: 267
diff changeset
  2320
"/        aMethod printNL.
191
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2321
    ].
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2322
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2323
    "
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2324
     Smalltalk compressSources
38d331e1e6b1 added compressSOurces
claus
parents: 162
diff changeset
  2325
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
  2326
! !
2
claus
parents: 1
diff changeset
  2327
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2328
!Smalltalk class methodsFor:'time-versions'!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2329
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2330
majorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2331
    "return the major version number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2332
     This is only incremented for very fundamental changes,
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2333
     which make old object files totally incompatible
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2334
     (for example, if the layout/representation of fundamental
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2335
      classes changes)."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2336
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2337
    ^ 2
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2338
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
     Smalltalk majorVersionNr
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2344
minorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2345
    "return the minor version number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2346
     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
  2347
     files incompatible, or the protocol changes such that some
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2348
     classes need rework."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2349
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2350
    ^ 10
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2351
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2352
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2353
     Smalltalk minorVersionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2354
    "
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2357
revisionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2358
    "return the revision number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2359
     Incremented for releases which fix bugs/add features
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2360
     and represent a stable workable version which got published
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2361
     to the outside world."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2362
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2363
    ^ 8
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2364
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
     Smalltalk revisionNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2367
    "
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
versionString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2371
    "return the version string"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2372
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2373
    ^ (self majorVersionNr printString ,
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
       self minorVersionNr printString ,
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2376
       '.',
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2377
       self revisionNr printString)
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2378
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
     Smalltalk versionString
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
!
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
versionDate
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2385
    "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
  2386
     executable was built"
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2387
%{
456
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2388
    extern char *__getBuildDateString();
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2389
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2390
    RETURN (__MKSTRING(__getBuildDateString() COMMA_SND) );
411202bbbfbb get versionDate from main.o
Claus Gittinger <cg@exept.de>
parents: 453
diff changeset
  2391
%}
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2392
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2393
     Smalltalk versionDate
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
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2396
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2397
releaseNr
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2398
    "return the revision number.
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2399
     Incremented for releases which fix bugs/add features."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2400
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2401
    ^ 2
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2402
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2403
    " 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2404
     Smalltalk releaseNr 
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2405
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2406
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2407
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2408
configuration
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2409
    "for developers only: return the configuration, with which
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2410
     this smalltalk was compiled."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2411
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2412
%{
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2413
    extern char *__getConfigurationString();
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2414
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2415
    RETURN (__MKSTRING(__getConfigurationString() COMMA_SND));
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2416
%}
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2417
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2418
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2419
     Smalltalk configuration
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2420
    "
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
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2423
copyrightString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2424
    "return a copyright string"
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
    ^ 'Copyright (c) 1988-95 by Claus Gittinger'
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2427
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2428
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2429
     Smalltalk copyrightString
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2430
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2431
!
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2432
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2433
timeStamp
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2434
    "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
  2435
     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
  2436
     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
  2437
     class)."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2438
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2439
    ^ ('''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
  2440
       , 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
  2441
       , '''') 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
  2442
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
  2443
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2444
hello
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2445
    "return a greeting string"
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2446
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2447
    "stupid: this should come from a resource file ...
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2448
     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
  2449
     Resource-stuff."
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2450
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2451
    (Language == #german) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2452
	^ 'Willkommen bei SmallTalk/X - Version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2453
	  , self versionString , ' vom ' , self versionDate
2
claus
parents: 1
diff changeset
  2454
    ].
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2455
    (Language == #french) ifTrue:[
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2456
	^ 'Bienvenue ` SmallTalk/X - version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2457
	  , self versionString , ' de ' , self versionDate
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2458
    ].
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2459
    ^ 'Hello World - here is SmallTalk/X version '
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2460
      , self versionString , ' of ' , self versionDate
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2461
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2462
    "
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2463
     Smalltalk hello
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2464
    "
2
claus
parents: 1
diff changeset
  2465
! !
453
57381f377c3f fix logged-arg (was nil)
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
  2466