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