--- a/AbstractTime.st Wed Nov 28 10:22:05 2012 +0000
+++ b/AbstractTime.st Fri Nov 30 17:19:23 2012 +0000
@@ -878,6 +878,7 @@
^ aTimestamp getSeconds - self getSeconds
! !
+
!AbstractTime methodsFor:'printing & storing'!
addPrintBindingsTo:aDictionary
@@ -918,6 +919,7 @@
%(milli1) milliseconds, truncated to 1/10th of a second 0..9
%(milli2) milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2
+ %(milli3) milliseconds, same as %i for convenience
Timestamp only:
%(Day) - day - unpadded
@@ -979,7 +981,7 @@
"
- |hours minutes seconds millis usHours ampm s zone tzDelta|
+ |hours minutes seconds millis usHours ampm s t zone tzDelta|
hours := self hours.
minutes := self minutes.
@@ -993,18 +995,26 @@
aDictionary at:$H put:(s := hours printString).
aDictionary at:$h put:(s leftPaddedTo:2 with:$0).
+
aDictionary at:$U put:(s := usHours printString).
aDictionary at:$u put:(s leftPaddedTo:2 with:$0).
+
aDictionary at:$M put:(s := minutes printString).
aDictionary at:$m put:(s leftPaddedTo:2 with:$0).
+
aDictionary at:$S put:(s := seconds printString).
aDictionary at:$s put:(s leftPaddedTo:2 with:$0).
+
aDictionary at:$I put:(s := millis printString).
- aDictionary at:$i put:(s leftPaddedTo:3 with:$0).
+ aDictionary at:$i put:(t := s leftPaddedTo:3 with:$0).
+ aDictionary at:#milli3 put:t.
+
aDictionary at:#milli1 put:((millis // 100) printString).
aDictionary at:#milli2 put:((millis // 10) printStringLeftPaddedTo:2 with:$0).
+
aDictionary at:$t put:(seconds * minutes) printString.
aDictionary at:$T put:(seconds * minutes * hours) printString.
+
aDictionary at:$a put:ampm.
aDictionary at:$A put:ampm asUppercase.
aDictionary at:$z put:zone.
@@ -1187,15 +1197,15 @@
!AbstractTime class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.74 2011/09/15 08:42:47 ca Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012/11/05 12:59:57 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.74 2011/09/15 08:42:47 ca Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012/11/05 12:59:57 cg Exp §'
!
version_SVN
- ^ '$Id: AbstractTime.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+ ^ '$Id: AbstractTime.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/Annotation.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Annotation.st Fri Nov 30 17:19:23 2012 +0000
@@ -12,28 +12,28 @@
"{ Package: 'stx:libbasic' }"
Object subclass:#Annotation
- instanceVariableNames:''
+ instanceVariableNames:'key arguments'
classVariableNames:''
poolDictionaries:''
category:'Kernel-Extensions'
!
Annotation subclass:#NameSpace
- instanceVariableNames:'nameSpace'
+ instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:Annotation
!
Annotation subclass:#Resource
- instanceVariableNames:'type value'
+ instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:Annotation
!
Annotation subclass:#Unknown
- instanceVariableNames:'method key arguments'
+ instanceVariableNames:'method'
classVariableNames:''
poolDictionaries:''
privateIn:Annotation
@@ -118,7 +118,7 @@
^
"/ cg: do not react on all those methods inherited from Object (such as inline:)
- "/ self respondsTo: key)
+ "/ (self respondsTo: key)
(self class includesSelector:key)
ifTrue:
[self
@@ -146,14 +146,14 @@
namespace: aString
<resource: #obsolete>
- ^Annotation::NameSpace new nameSpaceName: aString
+ ^ self nameSpace:aString
"Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
resource: type
- ^Annotation::Resource new type: type
+ ^Annotation::Resource new type: type value:nil
"Created: / 16-07-2010 / 11:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -161,12 +161,13 @@
resource: type value: value
^Annotation::Resource new
- type: type;
- value: value
+ type: type value: value
"Created: / 16-07-2010 / 11:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+
+
!Annotation class methodsFor:'finding'!
allNamed: aSymbol from: aSubClass to: aSuperClass
@@ -229,8 +230,13 @@
"Modified: / 20-08-2011 / 21:31:49 / cg"
! !
+
!Annotation methodsFor:'accessing'!
+arguments
+ ^ arguments
+!
+
first
^self key
@@ -239,11 +245,7 @@
!
key
-
- ^self subclassResponsibility
-
- "Created: / 19-05-2010 / 16:23:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-07-2010 / 11:29:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ ^ key
! !
!Annotation methodsFor:'accessing-method'!
@@ -281,14 +283,6 @@
^ self arguments at: anInteger.
!
-arguments
- "Answer the arguments of the receiving pragma. For a pragma defined as <key1: val1 key2: val2> this will answer #(val1 val2)."
-
- self subclassResponsibility
-
- "Modified: / 21-08-2011 / 12:43:54 / cg"
-!
-
message
"Answer the message of the receiving pragma."
@@ -321,14 +315,19 @@
!Annotation methodsFor:'initialization'!
+key:keyArg arguments:argumentsArg
+ key := keyArg.
+ arguments := argumentsArg.
+!
+
setArguments: anArray
- self subclassResponsibility
+ arguments := anArray
"Modified: / 21-08-2011 / 12:45:51 / cg"
!
setKeyword: aSymbol
- self subclassResponsibility
+ key := aSymbol
"Modified: / 21-08-2011 / 12:46:06 / cg"
!
@@ -352,10 +351,15 @@
!Annotation methodsFor:'printing & storing'!
storeOn:aStream
+ "superclass Annotation says that I am responsible to implement this method"
- self subclassResponsibility
+ aStream nextPutAll: '(Annotation key: '.
+ key storeOn: aStream.
+ aStream nextPutAll: ' arguments: '.
+ arguments storeOn: aStream.
+ aStream nextPut: $).
- "Created: / 19-05-2010 / 16:26:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Annotation methodsFor:'processing'!
@@ -389,10 +393,21 @@
!Annotation methodsFor:'queries'!
refersToLiteral: anObject
- (anObject == self key) ifTrue:[ ^ true ].
+ (anObject == key) ifTrue:[ ^ true ].
+ (anObject == arguments) ifTrue:[ ^ true ].
+ arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
^ false
- "Created: / 26-07-2012 / 15:58:34 / cg"
+ "Created: / 26-07-2012 / 15:57:43 / cg"
+!
+
+refersToLiteralMatching: aMatchString
+ (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
+ (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
+ arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
+ ^ false
+
+ "Created: / 26-07-2012 / 16:00:58 / cg"
! !
!Annotation methodsFor:'testing'!
@@ -433,11 +448,11 @@
!
nameSpace
- ^ nameSpace
+ ^ arguments first
!
nameSpace:something
- nameSpace := something.
+ arguments := Array with:something.
! !
!Annotation::NameSpace methodsFor:'initialization'!
@@ -455,7 +470,7 @@
"superclass Annotation says that I am responsible to implement this method"
aStream nextPutAll: '(Annotation namespace: '.
- nameSpace name storeOn: aStream.
+ self nameSpace name storeOn: aStream.
aStream nextPut:$)
"Modified: / 19-05-2010 / 16:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -479,40 +494,35 @@
!Annotation::Resource methodsFor:'accessing'!
-key
- "superclass Annotation says that I am responsible to implement this method"
-
- ^value
- ifNil:[#resource:]
- ifNotNil:[#resource:value:]
-
- "Modified: / 16-07-2010 / 11:30:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+type
+ ^ arguments at:1
!
-type
- ^ type
-!
-
-type:something
- type := something.
+type:typeArg value:valueArg
+ valueArg isNil ifTrue:[
+ key := #'resource:'.
+ arguments := Array with:typeArg.
+ ] ifFalse:[
+ key := #'resource:value:'.
+ arguments := Array with:typeArg with:valueArg.
+ ].
!
value
- ^ value
-!
-
-value:something
- value := something.
+ arguments size > 1 ifTrue:[
+ ^ arguments at:2
+ ].
+ ^ nil
! !
!Annotation::Resource methodsFor:'printing & storing'!
storeOn:aStream
aStream nextPutAll: '(Annotation resource: '.
- type storeOn: aStream.
- value notNil ifTrue: [
+ self type storeOn: aStream.
+ self value notNil ifTrue: [
aStream nextPutAll: ' value: '.
- value storeOn: aStream
+ self value storeOn: aStream
].
aStream nextPut:$)
@@ -537,26 +547,6 @@
"Modified: / 16-07-2010 / 11:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!Annotation::Resource methodsFor:'queries'!
-
-refersToLiteral: anObject
- (anObject == type) ifTrue:[ ^ true ].
- (anObject == value) ifTrue:[ ^ true ].
- value isArray ifTrue:[ ^ value refersToLiteral: anObject].
- ^ false
-
- "Created: / 26-07-2012 / 15:57:58 / cg"
-!
-
-refersToLiteralMatching: aMatchString
- (type isSymbol and:[aMatchString match:type])ifTrue:[ ^ true ].
- (value isSymbol and:[aMatchString match:value])ifTrue:[ ^ true ].
- value isArray ifTrue:[ ^ value refersToLiteralMatching: aMatchString].
- ^ false
-
- "Created: / 26-07-2012 / 16:01:26 / cg"
-! !
-
!Annotation::Resource methodsFor:'testing'!
isResource
@@ -567,27 +557,20 @@
!Annotation::Unknown methodsFor:'accessing'!
-arguments
- ^ arguments
+method
+ ^ method
+
+ "Created: / 05-09-2011 / 04:38:33 / cg"
!
-key
- ^ key
-!
-
-method
- ^ method
+setMethod:aMethod
+ method := aMethod
"Created: / 05-09-2011 / 04:38:33 / cg"
! !
!Annotation::Unknown methodsFor:'initialization'!
-key:keyArg arguments:argumentsArg
- key := keyArg.
- arguments := argumentsArg.
-!
-
method:methodArg key:keyArg arguments:argumentsArg
method := methodArg.
key := keyArg.
@@ -596,20 +579,6 @@
"Created: / 05-09-2011 / 04:39:50 / cg"
! !
-!Annotation::Unknown methodsFor:'printing & storing'!
-
-storeOn:aStream
- "superclass Annotation says that I am responsible to implement this method"
-
- aStream nextPutAll: '(Annotation key: '.
- key storeOn: aStream.
- aStream nextPutAll: ' arguments: '.
- arguments storeOn: aStream.
- aStream nextPut: $).
-
- "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
!Annotation::Unknown methodsFor:'processing'!
annotatesClass:aClass
@@ -630,20 +599,12 @@
refersToLiteral: anObject
(anObject == method) ifTrue:[ ^ true ].
- (anObject == key) ifTrue:[ ^ true ].
- (anObject == arguments) ifTrue:[ ^ true ].
- arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
- ^ false
-
- "Created: / 26-07-2012 / 15:57:43 / cg"
+ ^ super refersToLiteral: anObject
!
refersToLiteralMatching: aMatchString
(method isSymbol and:[aMatchString match:method])ifTrue:[ ^ true ].
- (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
- (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
- arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
- ^ false
+ ^ super refersToLiteralMatching: aMatchString
"Created: / 26-07-2012 / 16:00:58 / cg"
! !
@@ -657,15 +618,15 @@
!Annotation class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.12 2012/10/29 10:25:12 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012/11/05 23:56:53 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.12 2012/10/29 10:25:12 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012/11/05 23:56:53 cg Exp §'
!
version_SVN
- ^ '$Id: Annotation.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Annotation.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Annotation initialize!
--- a/ApplicationDefinition.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ApplicationDefinition.st Fri Nov 30 17:19:23 2012 +0000
@@ -1649,9 +1649,9 @@
target: %(BUILD_TARGET) postBuildCleanup
# the executable, all required files and a self-installing-installer-exe
-ALL:: prereq exe postBuildCleanup setup
-
-exe: newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS)
+ALL:: prereq exe $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS) postBuildCleanup setup
+
+exe: newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY)
# the executable only
# with console
@@ -1841,7 +1841,7 @@
# ENDMAKEDEPEND --- do not remove this line
'.
- "Modified: / 28-09-2012 / 18:30:15 / cg"
+ "Modified: / 22-11-2012 / 17:18:28 / cg"
"Modified: / 28-11-2012 / 10:18:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -2627,7 +2627,7 @@
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
-LangString appOpen ${LANG_GERMAN} "Mit %(PRODUCT_NAME) öffnen"
+LangString appOpen ${LANG_GERMAN} "Mit %(PRODUCT_NAME) ffnen"
LangString appOpen ${LANG_ENGLISH} "Open with %(PRODUCT_NAME)"
LangString DESC_Section1 ${LANG_ENGLISH} "Program components of %(PRODUCT_NAME)"
@@ -2661,7 +2661,7 @@
Function un.onInit
!!insertmacro MUI_UNGETLANGUAGE
- MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
+ MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Mchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
Abort
FunctionEnd
@@ -2904,13 +2904,14 @@
!ApplicationDefinition class methodsFor:'documentation'!
version
- ^ '$Id: ApplicationDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+ ^ '$Id: ApplicationDefinition.st 10876 2012-11-30 17:19:23Z vranyj1 $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.207 2012/10/12 10:36:21 sr Exp §'
+ ^ 'Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.208 2012/11/22 16:20:01 cg Exp '
!
version_SVN
- ^ '$Id:: ApplicationDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+ ^ '$Id:: ApplicationDefinition.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
+
--- a/ArithmeticValue.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ArithmeticValue.st Fri Nov 30 17:19:23 2012 +0000
@@ -203,7 +203,6 @@
^ self == ArithmeticValue
! !
-
!ArithmeticValue methodsFor:'arithmetic'!
* something
@@ -1280,6 +1279,13 @@
5 roundTo:4
6 roundTo:4
7 roundTo:4
+
+ 7.123 roundTo:0.1
+ 7.523 roundTo:0.1
+ 7.583 roundTo:0.1
+ 7.623 roundTo:0.1
+ 7.623 roundTo:0.01
+ 7.628 roundTo:0.01
"
!
@@ -1333,19 +1339,15 @@
!ArithmeticValue class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.89 2012/02/12 19:53:21 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012/11/05 17:05:58 cg Exp $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.89 2012/02/12 19:53:21 cg Exp '
+ ^ '§Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012/11/05 17:05:58 cg Exp §'
!
version_SVN
- ^ '$Id: ArithmeticValue.st 10777 2012-02-13 19:19:41Z vranyj1 $'
+ ^ '$Id: ArithmeticValue.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
ArithmeticValue initialize!
-
-
-
-
--- a/AutoDeletedFilename.st Wed Nov 28 10:22:05 2012 +0000
+++ b/AutoDeletedFilename.st Fri Nov 30 17:19:23 2012 +0000
@@ -90,12 +90,6 @@
"
! !
-!AutoDeletedFilename class methodsFor:'queries'!
-
-isAbstract
- ^ true
-! !
-
!AutoDeletedFilename methodsFor:'accessing'!
finalize
@@ -143,11 +137,11 @@
!AutoDeletedFilename class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.7 2009/06/22 21:57:00 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.8 2012/11/06 17:47:54 cg Exp $'
!
version_SVN
- ^ '$Id: AutoDeletedFilename.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+ ^ '$Id: AutoDeletedFilename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/Autoload.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Autoload.st Fri Nov 30 17:19:23 2012 +0000
@@ -581,6 +581,10 @@
^ #()
!
+isAbstract
+ ^ false "/ actually: dont know, but do not want to load my class for this query
+!
+
new
"catch new - load the class and resend #new to the real one"
@@ -704,10 +708,6 @@
^ false
!
-isAbstract
- ^ true
-!
-
isBehavior
"return true, if the receiver is describing another objects behavior.
Autoloaded classes are definitely; therefore return true."
@@ -797,15 +797,15 @@
!Autoload class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.160 2012/10/20 19:52:22 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012/11/06 00:23:36 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.160 2012/10/20 19:52:22 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012/11/06 00:23:36 cg Exp §'
!
version_SVN
- ^ '$Id: Autoload.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Autoload.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Autoload initialize!
--- a/Behavior.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Behavior.st Fri Nov 30 17:19:23 2012 +0000
@@ -1192,25 +1192,29 @@
|oldMethod ns selector |
(newSelector isMemberOf:Symbol) ifFalse:[
- self error:'invalid selector'.
+ self error:'invalid selector'.
].
ns := newMethod nameSpace.
selector := (ns isNil or:[ns == self programmingLanguage])
- ifTrue:[newSelector]
- ifFalse:[(':' , ns name , '::' , newSelector) asSymbol].
-
-
+ ifTrue:[newSelector]
+ ifFalse:[(':' , ns name , '::' , newSelector) asSymbol].
+
+ "/ Q (cg): isn't that something that the caller should decide?
oldMethod := self compiledMethodAt:selector.
oldMethod notNil ifTrue:[
- newMethod restricted:(oldMethod isRestricted).
- newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
+ newMethod restricted:(oldMethod isRestricted).
+ newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
].
(self primAddSelector:selector withMethod:newMethod) ifFalse:[^ false].
- selector isNameSpaceSelector ifTrue:[
- self lookupObject: NamespaceAwareLookup
+ (Smalltalk at: #NamespaceAwareLookup) notNil ifTrue:[
+ lookupObject ~= NamespaceAwareLookup ifTrue:[
+ selector isNameSpaceSelector ifTrue:[
+ self lookupObject: NamespaceAwareLookup
+ ]
+ ]
].
"
@@ -1220,12 +1224,12 @@
"
"
problem: this is slower; since looking for all subclasses is (currently)
- a bit slow :-(
- We need the hasSubclasses-info bit in Behavior; now
+ a bit slow :-(
+ We need the hasSubclasses-info bit in Behavior; now
self withAllSubclassesDo:[:aClass |
- ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
- ObjectMemory flushMethodCacheFor:aClass
+ ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
+ ObjectMemory flushMethodCacheFor:aClass
].
"
@@ -1335,6 +1339,7 @@
!
lookupObject: anObject
+ lookupObject == anObject ifTrue:[^ self ].
anObject isNil ifTrue:[^self setLookupObject: anObject].
(anObject respondsTo: #lookupMethodForSelector:directedTo:for:withArguments:from:ilc:)
@@ -1924,6 +1929,16 @@
"
! !
+!Behavior methodsFor:'error handling'!
+
+abstractClassInstantiationError
+ "sent by an abstract classes redefined new method"
+
+ ^ AbstractClassInstantiationError raiseRequest
+
+ "Created: / 02-11-2012 / 10:07:01 / cg"
+! !
+
!Behavior methodsFor:'initialization'!
deinitialize
@@ -2784,17 +2799,19 @@
"can be redefined for a private icon in the browser (for me and my subclasses).
The returned symbol must be a selector of the ToolbarIconLibrary."
- (self isBrowserStartable) ifTrue:[
- self isVisualStartable ifTrue:[
- ^ #visualStartableClassBrowserIcon
- ].
- ^ #startableClassBrowserIcon
+ <resource: #programImage>
+
+ self isLoaded ifFalse:[
+ ^ #autoloadedClassBrowserIcon
].
- self isLoaded ifFalse:[
- ^ #autoloadedClassBrowserIcon
+ (self isBrowserStartable) ifTrue:[
+ self isVisualStartable ifTrue:[
+ ^ #visualStartableClassBrowserIcon
+ ].
+ ^ #startableClassBrowserIcon
].
- "/ give ruby and other special metaclasses a chance ot provide their orn icon...
+ "/ give ruby and other special metaclasses a chance to provide their own icon...
^ self class iconInBrowserSymbol
"Created: / 20-07-2007 / 08:52:17 / cg"
@@ -3035,9 +3052,11 @@
If non-nil, no lookup is performed by the VM, instead the lookupObject
has to provide a method object for message sends."
- lookupObject := aMethodLookupObject.
- ObjectMemory flushCachesFor: self.
- self allSubclassesDo:[:cls|ObjectMemory flushCachesFor: cls]
+ lookupObject ~~ aMethodLookupObject ifTrue:[
+ lookupObject := aMethodLookupObject.
+ ObjectMemory flushCachesFor: self.
+ self allSubclassesDo:[:cls|ObjectMemory flushCachesFor: cls]
+ ]
"Modified: / 22-07-2010 / 18:10:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -3150,6 +3169,10 @@
"Created: / 06-08-2006 / 15:23:32 / cg"
!
+isAbstract
+ ^ false
+!
+
isBehavior
"return true, if the receiver is describing another objects behavior.
Defined to avoid the need to use isKindOf:"
@@ -4803,13 +4826,13 @@
!Behavior class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.324 2012/10/22 11:38:58 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.324 2012/10/22 11:38:58 cg Exp §'
+ ^ 'Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp '
!
version_SVN
- ^ '$Id: Behavior.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Behavior.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/Block.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Block.st Fri Nov 30 17:19:23 2012 +0000
@@ -776,8 +776,6 @@
!Block methodsFor:'copying'!
deepCopyUsing:aDictionary postCopySelector:postCopySelector
- "raise an error - deepCopy is not allowed for blocks"
-
|copyOfHome copyOfMe|
home isNil ifTrue:[
@@ -790,7 +788,6 @@
^ copyOfMe
"Created: / 31-03-1998 / 15:46:17 / cg"
- "Modified: / 20-10-2006 / 14:53:34 / User"
"Modified: / 21-07-2011 / 13:30:12 / cg"
! !
@@ -3027,15 +3024,15 @@
!Block class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.188 2012/05/22 09:58:15 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012/11/24 12:51:52 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Block.st,v 1.188 2012/05/22 09:58:15 stefan Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012/11/24 12:51:52 stefan Exp §'
!
version_SVN
- ^ '$Id: Block.st 10814 2012-06-05 13:35:12Z vranyj1 $'
+ ^ '$Id: Block.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Block initialize!
--- a/CharacterArray.st Wed Nov 28 10:22:05 2012 +0000
+++ b/CharacterArray.st Fri Nov 30 17:19:23 2012 +0000
@@ -195,25 +195,26 @@
"skip whiteSpace"
str skipSeparators.
- (str nextOrNil == $') ifTrue:[
- collected := self writeStream.
- [str atEnd] whileFalse:[
- char := str next.
- char == $' ifTrue:[
- "/ look for another quote
- str peekOrNil ~~ $' ifTrue:[
- "end of string reached"
- ^ collected contents.
- ].
- "eat doubled quote"
- str next.
- ].
- ((char ~~ Character return) or:[str peekOrNil ~~ Character lf]) ifTrue:[
- "compress CRLF to LF, but keep a single CR"
- collected nextPut:char.
- ].
- ].
- "if we come here, we reached the end without finding a closing $'"
+ (str peekOrNil == $') ifTrue:[
+ str next.
+ collected := self writeStream.
+ [str atEnd] whileFalse:[
+ char := str next.
+ char == $' ifTrue:[
+ "/ look for another quote
+ str peekOrNil ~~ $' ifTrue:[
+ "end of string reached"
+ ^ collected contents.
+ ].
+ "eat doubled quote"
+ str next.
+ ].
+ ((char ~~ Character return) or:[str peekOrNil ~~ Character lf]) ifTrue:[
+ "compress CRLF to LF, but keep a single CR"
+ collected nextPut:char.
+ ].
+ ].
+ "if we come here, we reached the end without finding a closing $'"
].
^ exceptionBlock value
@@ -2395,9 +2396,13 @@
asCollectionOfLines
"return a collection containing the lines (separated by cr)
of the receiver. If multiple cr's occur in a row, the result will
- contain empty strings."
-
- ^ self asCollectionOfSubstringsSeparatedBy:Character cr
+ contain empty strings.
+ If the string ends with a cr, an empty line will be found as last element of the resulting collection.
+ See also #asCollectionOfLinesWithReturn
+ (would have rather changed this method instead of adding another one, but a lot of code already uses
+ this method and we did not want to risk any incompatibilities)"
+
+ ^ self asCollectionOfSubstringsSeparatedBy:Character cr.
"
'1 one\2 two\3 three\4 four\5 five' withCRs asCollectionOfLines
@@ -2405,6 +2410,27 @@
"
!
+asCollectionOfLinesWithReturn
+ "return a collection containing the lines (separated by cr)
+ of the receiver. If multiple cr's occur in a row, the result will
+ contain empty strings."
+
+ |lines|
+
+ lines := self asCollectionOfSubstringsSeparatedBy:Character cr.
+ lines last isEmpty ifTrue:[
+ ^ lines copyWithoutLast:1
+ ].
+ ^ lines
+
+ "
+ '1\2\3' withCRs asCollectionOfLines
+ '1\2\3\' withCRs asCollectionOfLines
+ '1\2\3' withCRs asCollectionOfLinesWithReturn
+ '1\2\3\' withCRs asCollectionOfLinesWithReturn
+ "
+!
+
asCollectionOfSubstringsSeparatedBy:aCharacter
"return a collection containing the lines (separated by aCharacter)
of the receiver. If aCharacter occurs multiple times in a row,
@@ -2434,26 +2460,26 @@
startIndex := 1.
except := false.
[
- i := startIndex-1.
- [
- i := i+1.
- c := self at:i.
- c = ch ifTrue:[ except := except not. ].
- i < self size and:[except or:[c ~= aCharacter]]
- ] whileTrue.
-
- c = aCharacter ifTrue:[
- stopIndex := i -1.
- ] ifFalse: [
- stopIndex := i.
- ].
- (stopIndex < startIndex) ifTrue: [
- lines add:(myClass new:0)
- ] ifFalse: [
- lines add:(self copyFrom:startIndex to:stopIndex)
- ].
- startIndex := stopIndex + 2.
- startIndex <= self size
+ i := startIndex-1.
+ [
+ i := i+1.
+ c := self at:i.
+ c = ch ifTrue:[ except := except not. ].
+ i < self size and:[except or:[c ~= aCharacter]]
+ ] whileTrue.
+
+ c = aCharacter ifTrue:[
+ stopIndex := i -1.
+ ] ifFalse: [
+ stopIndex := i.
+ ].
+ (stopIndex < startIndex) ifTrue: [
+ lines add:(myClass new:0)
+ ] ifFalse: [
+ lines add:(self copyFrom:startIndex to:stopIndex)
+ ].
+ startIndex := stopIndex + 2.
+ startIndex <= self size
] whileTrue.
^ lines
@@ -6096,15 +6122,15 @@
!CharacterArray class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.478 2012/10/29 11:55:18 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.478 2012/10/29 11:55:18 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp §'
!
version_SVN
- ^ '$Id: CharacterArray.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: CharacterArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
CharacterArray initialize!
--- a/CharacterEncoder.st Wed Nov 28 10:22:05 2012 +0000
+++ b/CharacterEncoder.st Fri Nov 30 17:19:23 2012 +0000
@@ -12,55 +12,55 @@
"{ Package: 'stx:libbasic' }"
Object subclass:#CharacterEncoder
- instanceVariableNames:''
- classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
- AccessLock NullEncoderInstance Jis7KanjiEscapeSequence
- Jis7RomanEscapeSequence JisISO2022EscapeSequence
- Jis7KanjiOldEscapeSequence'
- poolDictionaries:''
- category:'Collections-Text-Encodings'
+ instanceVariableNames:''
+ classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
+ AccessLock NullEncoderInstance Jis7KanjiEscapeSequence
+ Jis7RomanEscapeSequence JisISO2022EscapeSequence
+ Jis7KanjiOldEscapeSequence'
+ poolDictionaries:''
+ category:'Collections-Text-Encodings'
!
CharacterEncoder subclass:#CompoundEncoder
- instanceVariableNames:'decoder encoder'
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:'decoder encoder'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
CharacterEncoder subclass:#DefaultEncoder
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
CharacterEncoder subclass:#InverseEncoder
- instanceVariableNames:'decoder'
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:'decoder'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
CharacterEncoder subclass:#NullEncoder
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
CharacterEncoder subclass:#OtherEncoding
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
CharacterEncoder subclass:#TwoStepEncoder
- instanceVariableNames:'encoder1 encoder2'
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
+ instanceVariableNames:'encoder1 encoder2'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:CharacterEncoder
!
!CharacterEncoder class methodsFor:'documentation'!
@@ -1642,6 +1642,13 @@
!CharacterEncoder::TwoStepEncoder methodsFor:'queries'!
+characterSize:codePoint
+ "/ naive; actually, we have to do a real encoding to get this info proper
+ ^ (encoder2 characterSize:codePoint)
+
+ "Created: / 22-11-2012 / 13:07:47 / cg"
+!
+
nameOfEncoding
^ "encoder1 nameOfEncoding , '-' ," encoder2 nameOfEncoding
@@ -1665,15 +1672,15 @@
!CharacterEncoder class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.118 2012/07/13 12:46:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.118 2012/07/13 12:46:09 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp §'
!
version_SVN
- ^ '$Id: CharacterEncoder.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+ ^ '$Id: CharacterEncoder.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
CharacterEncoder initialize!
--- a/ClassDescription.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ClassDescription.st Fri Nov 30 17:19:23 2012 +0000
@@ -1692,11 +1692,15 @@
|cat code oldMethod oldPackage newMethod|
+ oldMethod := self compiledMethodAt:aSelector.
+ oldMethod isNil ifTrue:[
+ self error:'no such method'
+ ].
+ oldPackage := oldMethod getPackage.
+ cat := oldMethod category.
+ code := self sourceCodeAt:aSelector.
+
Class withoutUpdatingChangesDo:[
- oldMethod := self compiledMethodAt:aSelector.
- oldPackage := oldMethod getPackage.
- cat := oldMethod category.
- code := self sourceCodeAt:aSelector.
Error handle:[:ex |
"/ dont want to loose code !!
@@ -4199,15 +4203,15 @@
!ClassDescription class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.226 2012/10/22 22:28:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.226 2012/10/22 22:28:52 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp §'
!
version_SVN
- ^ '$Id: ClassDescription.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: ClassDescription.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
ClassDescription::MethodRedefinitionNotification initialize!
--- a/Collection.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Collection.st Fri Nov 30 17:19:23 2012 +0000
@@ -923,6 +923,23 @@
"Modified: 12.4.1996 / 13:30:54 / cg"
!
+addAllNonNilElements:aCollection
+ "add all non-nil elements of the argument, aCollection to the receiver.
+ Use this, when operating on a Set, that should not hold nil.
+ Answer the argument, aCollection."
+
+ aCollection do:[:eachElement |
+ eachElement notNil ifTrue:[
+ self add:eachElement
+ ].
+ ].
+ ^ aCollection
+
+ "
+ #(1 2 3 4) asSet addAllNonNilElements:#(5 nil 6 7 8); yourself
+ "
+!
+
addFirst:anObject
"add the argument, anObject to the receiver.
If the receiver is ordered, the new element will be added at the beginning.
@@ -4412,15 +4429,15 @@
!Collection class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.282 2012/10/19 12:03:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.282 2012/10/19 12:03:06 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp §'
!
version_SVN
- ^ '$Id: Collection.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Collection.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Collection initialize!
--- a/CompiledCode.st Wed Nov 28 10:22:05 2012 +0000
+++ b/CompiledCode.st Fri Nov 30 17:19:23 2012 +0000
@@ -327,6 +327,14 @@
"Modified: / 30.1.1999 / 14:51:59 / cg"
!
+homeMethod
+ "for common protocol with blocks: if the receiver is a method,
+ return the receiver; otherwise, if its a block, return its home
+ method."
+
+ ^ self
+!
+
literalAt:index
"return a literal element"
@@ -428,14 +436,14 @@
literalsDetect:aBlock ifNone:exceptionBlock
"execute a one arg block for each of our literals.
- return the first literal for which aBlock returns true,
+ Return the first literal for which aBlock returns true,
or the value from exceptionBlock, if either no literals or
none satisfied the block"
self literalsDo:[:eachLiteral |
- (aBlock value:eachLiteral) ifTrue:[
- ^ eachLiteral
- ]
+ (aBlock value:eachLiteral) ifTrue:[
+ ^ eachLiteral
+ ]
].
^ exceptionBlock value.
@@ -534,6 +542,10 @@
"Modified: / 30.1.1999 / 14:55:42 / cg"
"Created: / 30.1.1999 / 14:55:51 / cg"
+!
+
+source
+ ^ self subclassResponsibility.
! !
!CompiledCode methodsFor:'compiler interface'!
@@ -1859,15 +1871,15 @@
!CompiledCode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.118 2012/10/26 10:25:36 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012/11/04 14:13:28 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.118 2012/10/26 10:25:36 stefan Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012/11/04 14:13:28 cg Exp §'
!
version_SVN
- ^ '$Id: CompiledCode.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: CompiledCode.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/Context.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Context.st Fri Nov 30 17:19:23 2012 +0000
@@ -811,8 +811,6 @@
!Context methodsFor:'copying'!
deepCopyUsing:aDictionary postCopySelector:postCopySelector
- "raise an error - deepCopy is not allowed for contexts"
-
|copyOfMe|
copyOfMe := self shallowCopy.
@@ -821,7 +819,6 @@
^ copyOfMe
"Created: / 31-03-1998 / 15:51:14 / cg"
- "Modified: / 20-10-2006 / 14:54:12 / User"
"Modified: / 21-07-2011 / 13:30:21 / cg"
! !
@@ -2466,15 +2463,15 @@
!Context class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.176 2012/10/23 08:17:36 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Context.st,v 1.176 2012/10/23 08:17:36 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp §'
!
version_SVN
- ^ '$Id: Context.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Context.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Context initialize!
--- a/Date.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Date.st Fri Nov 30 17:19:23 2012 +0000
@@ -798,6 +798,7 @@
"
! !
+
!Date class methodsFor:'change & update'!
update:something with:aParameter from:changedObject
@@ -900,6 +901,8 @@
^ firstDayInWeek
"
+ Date newDay:1 year:1900
+ Date dayOfFirstWeekInYear:1900
Date dayOfFirstWeekInYear:1998
Date dayOfFirstWeekInYear:1999
Date dayOfFirstWeekInYear:2000
@@ -1257,8 +1260,13 @@
weekInYearOf:aDateOrTimestamp
"for a given date or timeStamp, return the week-number.
- the returned week number starts with 1 for the first week which has a thursday in it.
- The above definition can lead to the 1st week starting in the old year!!"
+ The returned week number starts with 1 for the first week which has a thursday in it.
+ (see DIN 1355-1/ISO 8601)
+ The rule is:
+ every monday (and only monday), a new week begins
+ the first week is the one which has at least 4 days of the new year in it
+
+ Be prepared: this definition can lead to the 1st week starting in the old year!!"
|date dayInYear numDays dayOfFirstWeekInYear dayOfFirstWeekInNextYear week|
@@ -1331,6 +1339,7 @@
"
Date yearAsDays:5
+ Date yearAsDays:1900
Date yearAsDays:1901
Date yearAsDays:1902
Date yearAsDays:1903
@@ -1373,6 +1382,7 @@
^ self leapYear:yearInteger
! !
+
!Date class methodsFor:'private'!
abbreviatedMonthNamesForLanguage:language
@@ -1622,6 +1632,7 @@
"
! !
+
!Date methodsFor:'Compatibility-ANSI'!
dayOfWeek
@@ -2706,6 +2717,8 @@
"
! !
+
+
!Date methodsFor:'obsolete'!
asAbsoluteTime
@@ -2776,6 +2789,7 @@
^ self addDays:days
! !
+
!Date methodsFor:'printing & storing'!
addPrintBindingsTo:aDictionary
@@ -2874,12 +2888,12 @@
aDictionary at:$W put:ws.
aDictionary at:#monthName put:monthName.
- aDictionary at:#monthname put:monthName.
+ aDictionary at:#monthname put:monthName asLowercase.
aDictionary at:#MonthName put:monthName asUppercaseFirst.
aDictionary at:#MONTHNAME put:monthName asUppercase.
aDictionary at:#dayName put:dayName.
- aDictionary at:#dayname put:dayName.
+ aDictionary at:#dayname put:dayName asLowercase.
aDictionary at:#DayName put:dayName asUppercaseFirst.
aDictionary at:#DAYNAME put:dayName asUppercase.
@@ -2888,12 +2902,12 @@
aDictionary at:#weekDayUS put:dayOfWeek.
aDictionary at:#shortDayName put:(shortDayName := self class abbreviatedNameOfDay:(self dayInWeek) language:languageOrNil).
- aDictionary at:#shortdayname put:shortDayName.
+ aDictionary at:#shortdayname put:shortDayName asLowercase.
aDictionary at:#ShortDayName put:shortDayName asUppercaseFirst.
aDictionary at:#SHORTDAYNAME put:shortDayName asUppercase.
aDictionary at:#shortMonthName put:(shortMonthName := self class abbreviatedNameOfMonth:(self month) language:languageOrNil).
- aDictionary at:#shortmonthname put:shortMonthName.
+ aDictionary at:#shortmonthname put:shortMonthName asLowercase.
aDictionary at:#ShortMonthName put:shortMonthName asUppercaseFirst.
aDictionary at:#SHORTMONTHNAME put:shortMonthName asUppercase.
@@ -2901,6 +2915,8 @@
"/ 0 1 2 3 4 5 6 7 8 9
aDictionary at:#weekDayNth put:(#('th' 'st' 'nd' 'rd' 'th' 'th' 'th') at:(dayOfWeek-1) \\ 10 + 1).
"/ 0 1 2 3 4 5 6
+ aDictionary at:#weekDayUSNth put:(#('st' 'nd' 'rd' 'th' 'th' 'th' 'th') at:(dayOfWeek-1) \\ 10 + 1).
+ "/ 0 1 2 3 4 5 6
aDictionary at:#weekNth put:(#('th' 'st' 'nd' 'rd' 'th' 'th' 'th' 'th' 'th' 'th') at:weekInYear \\ 10 + 1).
"/ 0 1 2 3 4 5 6 7 8 9
!
@@ -3133,15 +3149,15 @@
!Date class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.141 2012/08/29 14:24:55 sr Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.141 2012/08/29 14:24:55 sr Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp §'
!
version_SVN
- ^ '$Id: Date.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+ ^ '$Id: Date.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Date initialize!
--- a/ExternalLibraryFunction.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ExternalLibraryFunction.st Fri Nov 30 17:19:23 2012 +0000
@@ -118,7 +118,7 @@
Synchronous vs. Asynchronous calls:
- by default, foreign function calls are synchronous, effecftively blocking the whole ST/X system
+ by default, foreign function calls are synchronous, effectively blocking the whole ST/X system
(that is by purpose,´because most C-code is not prepared for being interrupted, and also, normal
code is not prepared for a garbage collector to move objects around, while another C thread might
access the data...).
@@ -1577,6 +1577,7 @@
argumentsOrNil isNil ifTrue:[
^ self primitiveFailed
].
+ thisContext isRecursive ifTrue: [^self primitiveFailed].
anyBadArg := false.
originalToSaveArgMapping := IdentityDictionary new.
@@ -1620,6 +1621,8 @@
saveArg free.
].
^ result.
+
+ "Modified (format): / 06-11-2012 / 10:52:41 / anwild"
! !
!ExternalLibraryFunction methodsFor:'testing'!
@@ -1636,11 +1639,11 @@
!ExternalLibraryFunction class methodsFor:'documentation'!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.88 2012/10/20 20:54:26 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.90 2012/11/16 09:27:00 stefan Exp §'
!
version_SVN
- ^ '$Id: ExternalLibraryFunction.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: ExternalLibraryFunction.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
ExternalLibraryFunction initialize!
--- a/ExternalStream.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ExternalStream.st Fri Nov 30 17:19:23 2012 +0000
@@ -3866,15 +3866,16 @@
nextWord
"in text-mode:
- read the alphaNumeric next word (i.e. up to non letter-or-digit).
- return a string containing those characters.
+ read the alphaNumeric next word (i.e. up to non letter-or-digit).
+ return a string containing those characters.
in binary-mode:
- read two bytes (msb-first) and return the value as a 16-bit
- unsigned Integer (for compatibility with other smalltalks)"
+ read two bytes (msb-first) and return the value as a 16-bit
+ unsigned Integer (for compatibility with other smalltalks)"
binary ifTrue:[
- ^ self nextUnsignedShortMSB:true
+ ^ self nextUnsignedShortMSB:true
].
+ self obsoleteMethodWarning:'use #nextAlphaNumericWord'.
^ self nextAlphaNumericWord
! !
@@ -5693,15 +5694,15 @@
!ExternalStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.351 2012/10/26 10:25:03 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.351 2012/10/26 10:25:03 stefan Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp §'
!
version_SVN
- ^ '$Id: ExternalStream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: ExternalStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
ExternalStream initialize!
--- a/Filename.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Filename.st Fri Nov 30 17:19:23 2012 +0000
@@ -12,11 +12,11 @@
"{ Package: 'stx:libbasic' }"
Object subclass:#Filename
- instanceVariableNames:'nameString'
- classVariableNames:'NextTempFilenameIndex TempDirectory DefaultTempDirectory
- ConcreteClass'
- poolDictionaries:''
- category:'System-Support'
+ instanceVariableNames:'nameString'
+ classVariableNames:'NextTempFilenameIndex TempDirectory DefaultTempDirectory
+ ConcreteClass'
+ poolDictionaries:''
+ category:'System-Support'
!
!Filename class methodsFor:'documentation'!
@@ -5819,6 +5819,32 @@
!Filename methodsFor:'writing-files'!
+appendingFileDo:aBlock
+ "create a append-stream on the receiver file, evaluate aBlock, passing that stream as arg,
+ and return the blocks value.
+ If the file cannot be opened, an exception is raised.
+ Ensures that the stream is closed."
+
+ |stream result|
+
+ stream := self appendStream.
+ [
+ result := aBlock value:stream
+ ] ensure:[
+ stream close
+ ].
+ ^ result
+
+ "
+ 'ttt' asFilename appendingFileDo:[:s |
+ s nextPutLine:'hello'.
+ s nextPutLine:'world'.
+ ]
+ "
+
+ "Created: / 09-11-2012 / 10:07:41 / sr"
+!
+
contents:aStringOrCollectionOfLines
"create (or overwrite) a file given its contents as a collection of lines.
Raises an error, if the file is unwritable."
@@ -5875,15 +5901,15 @@
!Filename class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.379 2012/10/27 17:44:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Filename.st,v 1.379 2012/10/27 17:44:35 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp §'
!
version_SVN
- ^ '$Id: Filename.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Filename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Filename initialize!
--- a/HashStream.st Wed Nov 28 10:22:05 2012 +0000
+++ b/HashStream.st Fri Nov 30 17:19:23 2012 +0000
@@ -257,17 +257,7 @@
"
!
-hmac
- "answer a hmac stream with myself"
- ^ HmacStream on:self
-
- "
- (SHA1Stream new hmac key:'exampleKey') digestMessage:'message to generate MAC of'
- "
-
- "Modified (comment): / 09-01-2012 / 13:51:01 / cg"
-!
reset
"initialize to a clean state"
@@ -401,18 +391,13 @@
!HashStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.25 2012/01/23 09:01:40 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012/10/31 15:57:49 stefan Exp $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.25 2012/01/23 09:01:40 cg Exp '
+ ^ '§Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012/10/31 15:57:49 stefan Exp §'
!
version_SVN
- ^ '$Id: HashStream.st 10777 2012-02-13 19:19:41Z vranyj1 $'
+ ^ '$Id: HashStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
-
-
-
-
-
--- a/Integer.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Integer.st Fri Nov 30 17:19:23 2012 +0000
@@ -817,6 +817,7 @@
"
! !
+
!Integer class methodsFor:'prime numbers'!
flushPrimeCache
@@ -1139,6 +1140,7 @@
^ self == Integer
! !
+
!Integer methodsFor:'Compatibility-Dolphin'!
& aNumber
@@ -2987,19 +2989,30 @@
!
integerLog2
- "return the floor of log2 of the receiver"
+ "return the floor of log2 of the receiver.
+ This is the same as (self log:2) floor."
self <= 0 ifTrue:[
^ self class
raise:#domainErrorSignal
receiver:self
- selector:#intlog10
+ selector:#integerLog2
arguments:#()
errorString:'logarithm of negative integer'
].
^ self highBit - 1.
"
+ 2 log:2
+ 2 integerLog2
+
+ 3 log:2
+ 3 integerLog2
+
+ 4 log:2
+ 4 integerLog2
+
+ 64 integerLog2
100 integerLog2
100 log:2
999 integerLog2
@@ -4162,6 +4175,7 @@
"Created: / 09-01-2012 / 17:18:06 / cg"
! !
+
!Integer methodsFor:'special modulu arithmetic'!
add_32:anInteger
@@ -4848,15 +4862,15 @@
!Integer class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.270 2012/10/29 11:35:37 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012/11/04 15:05:51 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Integer.st,v 1.270 2012/10/29 11:35:37 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012/11/04 15:05:51 cg Exp §'
!
version_SVN
- ^ '$Id: Integer.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Integer.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
Integer initialize!
--- a/Make.proto Wed Nov 28 10:22:05 2012 +0000
+++ b/Make.proto Fri Nov 30 17:19:23 2012 +0000
@@ -396,8 +396,10 @@
$(OUTDIR)InvalidCodeError.$(O) InvalidCodeError.$(H): InvalidCodeError.st $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)InvalidModeError.$(O) InvalidModeError.$(H): InvalidModeError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)InvalidOperationError.$(O) InvalidOperationError.$(H): InvalidOperationError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)InvalidTypeError.$(O) InvalidTypeError.$(H): InvalidTypeError.st $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)KeyNotFoundError.$(O) KeyNotFoundError.$(H): KeyNotFoundError.st $(INCLUDE_TOP)/stx/libbasic/NotFoundError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)MallocFailure.$(O) MallocFailure.$(H): MallocFailure.st $(INCLUDE_TOP)/stx/libbasic/AllocationFailure.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)MethodNotAppropriateError.$(O) MethodNotAppropriateError.$(H): MethodNotAppropriateError.st $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)NonBooleanReceiverError.$(O) NonBooleanReceiverError.$(H): NonBooleanReceiverError.st $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)OpenError.$(O) OpenError.$(H): OpenError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)PositionError.$(O) PositionError.$(H): PositionError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -413,6 +415,7 @@
$(OUTDIR)WeakDependencyDictionary.$(O) WeakDependencyDictionary.$(H): WeakDependencyDictionary.st $(INCLUDE_TOP)/stx/libbasic/WeakIdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)WriteError.$(O) WriteError.$(H): WriteError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)WrongProceedabilityError.$(O) WrongProceedabilityError.$(H): WrongProceedabilityError.st $(INCLUDE_TOP)/stx/libbasic/SignalError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AbstractClassInstantiationError.$(O) AbstractClassInstantiationError.$(H): AbstractClassInstantiationError.st $(INCLUDE_TOP)/stx/libbasic/MethodNotAppropriateError.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BadLiteralsError.$(O) BadLiteralsError.$(H): BadLiteralsError.st $(INCLUDE_TOP)/stx/libbasic/InvalidCodeError.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)DecodingError.$(O) DecodingError.$(H): DecodingError.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderError.$(H) $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)EncodingError.$(O) EncodingError.$(H): EncodingError.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderError.$(H) $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Wed Nov 28 10:22:05 2012 +0000
+++ b/Make.spec Fri Nov 30 17:19:23 2012 +0000
@@ -364,6 +364,9 @@
ImmutableString \
InvalidEncodingError \
PipeStream \
+ MethodNotAppropriateError \
+ AbstractClassInstantiationError \
+ InvalidTypeError \
Symbol \
Unicode16String \
CharacterEncoderImplementations::EBCDIC \
@@ -707,6 +710,9 @@
$(OUTDIR)ImmutableString.$(O) \
$(OUTDIR)InvalidEncodingError.$(O) \
$(OUTDIR)PipeStream.$(O) \
+ $(OUTDIR)MethodNotAppropriateError.$(O) \
+ $(OUTDIR)AbstractClassInstantiationError.$(O) \
+ $(OUTDIR)InvalidTypeError.$(O) \
$(OUTDIR)Symbol.$(O) \
$(OUTDIR)Unicode16String.$(O) \
$(OUTDIR)CharacterEncoderImplementations__EBCDIC.$(O) \
--- a/Method.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Method.st Fri Nov 30 17:19:23 2012 +0000
@@ -397,133 +397,6 @@
!Method methodsFor:'accessing'!
-annotateWith: annotation
- | index |
-
- index := self annotationIndexOf: annotation key.
- index isNil ifTrue:[
- annotations := annotations isNil
- ifTrue:[Array with: annotation]
- ifFalse:[annotations copyWith:annotation]
- ] ifFalse:[
- annotations at: index put: annotation
- ].
-"/ annotation annotatesMethod: self.
-
- "
- (Object >> #yourself) annotateWith: (Annotation namespace: 'Fictious').
- (Object >> #yourself) annotations.
- (Object >> #yourself) annotationAt: #namespace:
- "
-
- "Created: / 19-05-2010 / 16:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 20-05-2010 / 11:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 26-07-2012 / 15:47:51 / cg"
-!
-
-annotationAt: key
- | index |
-
- index := self annotationIndexOf: key.
- index isNil ifTrue:[^ nil].
- ^ self annotationAtIndex: index.
-
- "
- (Object >> #yourself) annotationAt: #namespace:
- "
-
- "Created: / 19-05-2010 / 16:16:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-07-2010 / 22:35:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-11-2011 / 14:46:21 / cg"
- "Modified (format): / 26-07-2012 / 15:47:54 / cg"
-!
-
-annotations
- "Returns the annotations (or an empty collection)"
-
- annotations isNil ifTrue:[^#()].
- "iterate over annotation array to
- trigger lazy-loading"
- self annotationsDo:[:ignored | ].
- ^ annotations
-
- "Modified: / 11-07-2010 / 19:25:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-11-2011 / 14:46:56 / cg"
- "Modified (comment): / 26-07-2012 / 15:50:26 / cg"
-!
-
-annotations: anObject
- "set the annotations"
-
- self setAnnotations: anObject.
-"/ "iterate over annotations just to invoke
-"/ annotationAtIndex: which lazyliyinitialize annotations
-"/ and send #annotatesMethod:"
-"/ self annotationsDo:[:annotation|]
-
- "Created: / 02-07-2010 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-annotationsAt: key
-
- ^OrderedCollection
- streamContents:[:annotStream|
- self annotationsAt: key do: [:annot| annotStream nextPut: annot]
- ]
-
- "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 26-07-2012 / 15:46:56 / cg"
-!
-
-annotationsAt: key do: block
- | annots |
-
- annots := OrderedCollection new: 1.
- self annotationsDo: [:annot|
- annot key == key ifTrue:[block value: annot]
- ]
-
- "Created: / 16-07-2010 / 11:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 26-07-2012 / 15:48:37 / cg"
-!
-
-annotationsAt: key1 orAt: key2
-
- ^OrderedCollection
- streamContents:[:annotStream|
- self annotationsAt: key1 orAt: key2 do: [:annot|annotStream nextPut: annot]
- ]
-
- "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 26-07-2012 / 15:49:11 / cg"
-!
-
-annotationsAt: key1 orAt: key2 do: block
- | annots |
-
- annots := OrderedCollection new: 1.
- self annotationsDo:[:annot |
- (annot key == key1 or:[annot key == key2]) ifTrue:[
- block value: annot
- ]
- ]
-
- "Created: / 16-07-2010 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 26-07-2012 / 15:49:30 / cg"
-!
-
-annotationsDo: aBlock
-
- annotations isNil ifTrue:[^nil].
- 1 to: annotations size do: [:i|
- aBlock value: (self annotationAtIndex: i)
- ].
-
- "Created: / 02-07-2010 / 22:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 11-07-2010 / 19:38:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 18-11-2011 / 14:47:06 / cg"
-!
-
category
"return the methods category or nil"
@@ -641,10 +514,12 @@
!
mclass:aClass
- "set the method's class"
-
- mclass == aClass ifTrue:[ ^ self ].
-
+ "set the method's class. That is the class in which I am installed.
+ This is a cache; the validity of which will be checked and the cache
+ possibly be invalidated when mclass is asked for."
+
+"/ mclass == aClass ifTrue:[ ^ self ].
+"/
"/ (mclass notNil and:[aClass notNil]) ifTrue:[
"/ 'Method [warning]: mclass already set' errorPrintCR.
"/ ].
@@ -959,6 +834,135 @@
"Modified: 16.1.1997 / 01:28:25 / cg"
! !
+!Method methodsFor:'accessing-annotations'!
+
+annotateWith: annotation
+ | index |
+
+ index := self annotationIndexOf: annotation key.
+ index isNil ifTrue:[
+ annotations := annotations isNil
+ ifTrue:[Array with: annotation]
+ ifFalse:[annotations copyWith:annotation]
+ ] ifFalse:[
+ annotations at: index put: annotation
+ ].
+"/ annotation annotatesMethod: self.
+
+ "
+ (Object >> #yourself) annotateWith: (Annotation namespace: 'Fictious').
+ (Object >> #yourself) annotations.
+ (Object >> #yourself) annotationAt: #namespace:
+ "
+
+ "Created: / 19-05-2010 / 16:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-05-2010 / 11:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-07-2012 / 15:47:51 / cg"
+!
+
+annotationAt: key
+ | index |
+
+ index := self annotationIndexOf: key.
+ index isNil ifTrue:[^ nil].
+ ^ self annotationAtIndex: index.
+
+ "
+ (Object >> #yourself) annotationAt: #namespace:
+ "
+
+ "Created: / 19-05-2010 / 16:16:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-07-2010 / 22:35:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-11-2011 / 14:46:21 / cg"
+ "Modified (format): / 26-07-2012 / 15:47:54 / cg"
+!
+
+annotations
+ "Returns the annotations (or an empty collection)"
+
+ annotations isNil ifTrue:[^#()].
+ "iterate over annotation array to
+ trigger lazy-loading"
+ self annotationsDo:[:ignored | ].
+ ^ annotations
+
+ "Modified: / 11-07-2010 / 19:25:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-11-2011 / 14:46:56 / cg"
+ "Modified (comment): / 26-07-2012 / 15:50:26 / cg"
+!
+
+annotations: anObject
+ "set the annotations"
+
+ self setAnnotations: anObject.
+"/ "iterate over annotations just to invoke
+"/ annotationAtIndex: which lazyliyinitialize annotations
+"/ and send #annotatesMethod:"
+"/ self annotationsDo:[:annotation|]
+
+ "Created: / 02-07-2010 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+annotationsAt: key
+
+ ^OrderedCollection
+ streamContents:[:annotStream|
+ self annotationsAt: key do: [:annot| annotStream nextPut: annot]
+ ]
+
+ "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-07-2012 / 15:46:56 / cg"
+!
+
+annotationsAt: key do: block
+ | annots |
+
+ annots := OrderedCollection new: 1.
+ self annotationsDo: [:annot|
+ annot key == key ifTrue:[block value: annot]
+ ]
+
+ "Created: / 16-07-2010 / 11:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-07-2012 / 15:48:37 / cg"
+!
+
+annotationsAt: key1 orAt: key2
+
+ ^OrderedCollection
+ streamContents:[:annotStream|
+ self annotationsAt: key1 orAt: key2 do: [:annot|annotStream nextPut: annot]
+ ]
+
+ "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-07-2012 / 15:49:11 / cg"
+!
+
+annotationsAt: key1 orAt: key2 do: block
+ | annots |
+
+ annots := OrderedCollection new: 1.
+ self annotationsDo:[:annot |
+ (annot key == key1 or:[annot key == key2]) ifTrue:[
+ block value: annot
+ ]
+ ]
+
+ "Created: / 16-07-2010 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-07-2012 / 15:49:30 / cg"
+!
+
+annotationsDo: aBlock
+
+ annotations isNil ifTrue:[^nil].
+ 1 to: annotations size do: [:i|
+ aBlock value: (self annotationAtIndex: i)
+ ].
+
+ "Created: / 02-07-2010 / 22:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 11-07-2010 / 19:38:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 18-11-2011 / 14:47:06 / cg"
+! !
+
!Method methodsFor:'accessing-visibility'!
isIgnored
@@ -2226,8 +2230,10 @@
setLookupObject: lookup
"set the lookupObject (low level - use lookupObject:)"
- lookupObject := lookup.
- ObjectMemory flushCaches.
+ lookupObject ~~ lookup ifTrue:[
+ lookupObject := lookup.
+ ObjectMemory flushCaches.
+ ].
"Created: / 11-07-2010 / 19:31:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -2375,7 +2381,7 @@
|who|
mclass notNil ifTrue:[
- "/ check if this (cached) info is still valid ...
+ "/ check if this (cached) info is still valid...
(mclass containsMethod:self) ifTrue:[
^ mclass
].
@@ -2546,16 +2552,6 @@
"Modified: / 01-12-2010 / 13:59:58 / cg"
!
-homeMethod
- "for common protocol with blocks: if the receiver is a method,
- return the receiver; otherwise, if its a block, return its home
- method."
-
- ^ self
-
- "Created: 19.6.1997 / 16:13:12 / cg"
-!
-
indexOfOLECall
"return the vtable inedx, if the method contains an ole call; nil if not.
Uses Parser to parse methods source and get the information."
@@ -3796,11 +3792,11 @@
!Method class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.398 2012/10/23 08:23:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.398 2012/10/23 08:23:10 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp §'
!
version_SVN
--- a/Number.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Number.st Fri Nov 30 17:19:23 2012 +0000
@@ -399,7 +399,6 @@
"Modified: / 19.11.1999 / 18:26:47 / cg"
! !
-
!Number class methodsFor:'constants'!
decimalPointCharacter
@@ -705,6 +704,11 @@
^ self == Number
! !
+!Number methodsFor:'*StateSpecs-Specs'!
+
+isEqual: aNumber within: accuracy
+ ^(self - aNumber) abs < accuracy
+! !
!Number methodsFor:'*grease-core'!
@@ -803,8 +807,11 @@
^ num closeFrom:self withEpsilon:eps
"
- 1 closeTo:1.0000000001
- 1 closeTo:1.001
+ 1 closeTo:1.0000000001
+ 1 closeTo:1.001
+
+ 1 closeTo:1.001 withEpsilon:0.1
+ 1 closeTo:1.201 withEpsilon:0.1
3.14 closeTo:(3.14 asFixedPoint:2)
(3.14 asFixedPoint:2) closeTo:3.14
@@ -836,11 +843,29 @@
^ TileMorph new addArrows; setLiteral: self; addSuffixIfCan
!
+rounded:n
+ "Answer the float rounded with n digits of precision"
+
+ | mult |
+
+ mult := 10 raisedTo: n.
+ ^ (((self * mult) rounded) asFloat / mult).
+
+ "
+ 7 rounded:2
+ 7.1 rounded:2
+ 7.2345 rounded:2
+ 7.2385 rounded:2
+ 7.2341 rounded:3
+ 7.2345 rounded:3
+ 7.2348 rounded:3
+ "
+!
+
stringForReadout
^ self rounded printString
! !
-
!Number methodsFor:'coercing & converting'!
i
@@ -2294,17 +2319,13 @@
!Number class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.136 2012/02/14 13:22:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012/11/05 16:48:19 cg Exp $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Number.st,v 1.136 2012/02/14 13:22:06 cg Exp '
+ ^ '§Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012/11/05 16:48:19 cg Exp §'
!
version_SVN
- ^ '$Id: Number.st 10779 2012-02-14 22:03:08Z vranyj1 $'
+ ^ '$Id: Number.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
-
-
-
-
--- a/Object.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Object.st Fri Nov 30 17:19:23 2012 +0000
@@ -525,7 +525,6 @@
"Modified: 23.4.1996 / 16:00:07 / cg"
! !
-
!Object methodsFor:'Compatibility-Dolphin'!
stbFixup: anSTBInFiler at: newObjectIndex
@@ -601,12 +600,12 @@
elL3 at:3 put:(Array new:3).
copy := original copyTwoLevel.
- (original at:2) ~~ (copy at:2) ifFalse:[self halt].
- (original at:3) ~~ (copy at:3) ifFalse:[self halt].
+ self assert:((original at:2) ~~ (copy at:2)).
+ self assert:((original at:3) ~~ (copy at:3)).
copyOfElL1 := copy at:3.
- (elL1 at:2) == (copyOfElL1 at:2) ifFalse:[self halt].
- (elL1 at:3) == (copyOfElL1 at:3) ifFalse:[self halt].
+ self assert:((elL1 at:2) == (copyOfElL1 at:2)).
+ self assert:((elL1 at:3) == (copyOfElL1 at:3)).
"
!
@@ -2209,6 +2208,17 @@
|myClass sz "{ Class: SmallInteger }" t |
myClass := self class.
+
+ "process the named instance variables"
+ sz := myClass instSize.
+ 1 to:sz do:[:i |
+ t := anObject instVarAt:i.
+ aSymbol ~~ #yourself ifTrue:[
+ t := t perform:aSymbol
+ ].
+ self instVarAt:i put:t
+ ].
+
myClass isVariable ifTrue:[
sz := self basicSize.
@@ -2221,18 +2231,6 @@
self basicAt:i put:t.
]
].
-
- "process the named instance variables"
- sz := myClass instSize.
- 1 to:sz do:[:i |
- t := anObject instVarAt:i.
- aSymbol ~~ #yourself ifTrue:[
- t := t perform:aSymbol
- ].
- self instVarAt:i put:t
- ].
-
- ^ self
!
cloneInstanceVariablesFrom:aPrototype
@@ -2329,25 +2327,35 @@
This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
i.e. identical references in the source are copied multiple times into the copy."
- |newObject class index|
-
- level == 1 ifTrue:[^ self shallowCopy].
-
- class := self class.
- newObject := self clone.
- newObject == self ifTrue: [^ self].
+ |newObject newLevel class sz "{Class: SmallInteger}" newInst|
+
+ newObject := self copy.
+ newObject == self ifTrue: [^ self]. "copy of nil, true, false, ... is self"
+ level == 1 ifTrue:[^ newObject].
+ newLevel := level - 1.
+
+ class := newObject class.
+
+ "process the named instance variables"
+ sz := class instSize.
+ 1 to:sz do:[:i |
+ newInst := newObject instVarAt:i.
+ newInst notNil ifTrue:[
+ newObject instVarAt:i put:(newInst copyToLevel:newLevel).
+ ].
+ ].
+
class isVariable ifTrue:[
- index := self basicSize.
- [index > 0] whileTrue:[
- newObject basicAt: index put: ((self basicAt: index) copyToLevel:(level-1)).
- index := index - 1
+ sz := newObject basicSize.
+
+ "process the indexed instance variables"
+ 1 to:sz do:[:i |
+ newInst := newObject basicAt:i.
+ newInst notNil ifTrue:[
+ newObject basicAt:i put:(newInst copyToLevel:newLevel).
+ ].
]
].
- index := class instSize.
- [index > 0] whileTrue:[
- newObject instVarAt: index put: ((self instVarAt: index) copyToLevel:(level-1)).
- index := index - 1
- ].
^ newObject
"
@@ -2462,34 +2470,48 @@
This method DOES handle cycles/self references."
|myClass aCopy
- sz "{ Class: SmallInteger }"
+ basicSize "{ Class: SmallInteger }"
+ instSize "{ Class: SmallInteger }"
iOrig iCopy|
myClass := self class.
-"/ (myClass whichClassImplements:#deepCopyUsing:) ~~ Object ifTrue:[
-"/ ^ self deepCopyUsing:aDictionary.
-"/ ].
-
myClass isVariable ifTrue:[
- sz := self basicSize.
- aCopy := myClass basicNew:sz.
+ basicSize := self basicSize.
+ aCopy := myClass basicNew:basicSize.
] ifFalse:[
- sz := 0.
+ basicSize := 0.
aCopy := myClass basicNew
].
aCopy setHashFrom:self.
aDictionary at:self put:aCopy.
"
+ copy the instance variables
+ "
+ instSize := myClass instSize.
+ 1 to:instSize do:[:i |
+ (self skipInstvarIndexInDeepCopy:i) ifFalse:[
+ iOrig := self instVarAt:i.
+ iOrig notNil ifTrue:[
+ iCopy := aDictionary at:iOrig ifAbsent:nil.
+ iCopy isNil ifTrue:[
+ iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+ ].
+ aCopy instVarAt:i put:iCopy
+ ]
+ ]
+ ].
+
+ "
copy indexed instvars - if any
"
- sz ~~ 0 ifTrue:[
+ basicSize ~~ 0 ifTrue:[
myClass isBits ifTrue:[
"block-copy indexed instvars"
- aCopy replaceFrom:1 to:sz with:self startingAt:1
+ aCopy replaceFrom:1 to:basicSize with:self startingAt:1
] ifFalse:[
"individual deep copy the indexed variables"
- 1 to:sz do:[:i |
+ 1 to:basicSize do:[:i |
iOrig := self basicAt:i.
iOrig notNil ifTrue:[
"/ used to be dict-includesKey-ifTrue[dict-at:],
@@ -2504,22 +2526,6 @@
]
].
- "
- copy the instance variables
- "
- sz := myClass instSize.
- 1 to:sz do:[:i |
- (self skipInstvarIndexInDeepCopy:i) ifFalse:[
- iOrig := self instVarAt:i.
- iOrig notNil ifTrue:[
- iCopy := aDictionary at:iOrig ifAbsent:nil.
- iCopy isNil ifTrue:[
- iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
- ].
- aCopy instVarAt:i put:iCopy
- ]
- ]
- ].
aCopy perform:postCopySelector withOptionalArgument:self and:aDictionary.
^ aCopy
@@ -3838,7 +3844,7 @@
is not clear which method to execute in response to
aMessage.
Such situation may occur when a current selector namespace
- imports two namespaces and both defines method with
+ imports two namespaces and both define a method with the
requested selector."
<context: #return>
@@ -3847,6 +3853,7 @@
^ AmbiguousMessage raiseRequestWith:aMessage
"Created: / 21-07-2010 / 15:44:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 02-11-2012 / 10:14:42 / cg"
!
appropriateDebugger:aSelector
@@ -4186,8 +4193,14 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'bad assign of ' , self printString ,
- ' (' , self class name , ') to integer-typed variable'
+"/ ^ self error:'bad assign of ' , self printString ,
+"/ ' (' , self class name , ') to integer-typed variable'
+ ^ InvalidTypeError
+ raiseRequestErrorString:(
+ 'bad assign of ' , self printString ,
+ ' (' , self class name , ') to integer-typed variable')
+
+ "Modified: / 02-11-2012 / 10:25:36 / cg"
!
invalidCodeObject
@@ -4197,19 +4210,23 @@
<resource: #skipInDebuggersWalkBack>
- self error:'not an executable code object'
-
- "Created: 1.8.1997 / 00:16:44 / cg"
+ "/ self error:'not an executable code object'
+ ^ ExecutionError
+ raiseRequestErrorString:'not an executable code object'
+
+ "Created: / 01-08-1997 / 00:16:44 / cg"
!
invalidMessage
"{ Pragma: +optSpace }"
- "this is sent by ST/V code - its the same as #shouldNotImplement"
+ "this is sent by ST/V code - it's the same as #shouldNotImplement"
<resource: #skipInDebuggersWalkBack>
^ self shouldNotImplement
+
+ "Modified (comment): / 02-11-2012 / 10:11:18 / cg"
!
mustBeRectangle
@@ -4219,7 +4236,11 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'argument must be a Rectangle'
+ "/ ^ self error:'argument must be a Rectangle'
+ ^ InvalidTypeError
+ raiseRequestErrorString:'argument must be a Rectangle'
+
+ "Modified: / 02-11-2012 / 10:24:53 / cg"
!
mustBeString
@@ -4229,7 +4250,11 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'argument must be a String'
+ "/ ^ self error:'argument must be a String'
+ ^ InvalidTypeError
+ raiseRequestErrorString:'argument must be a String'
+
+ "Modified: / 02-11-2012 / 10:24:35 / cg"
!
notIndexed
@@ -4242,7 +4267,7 @@
<resource: #skipInDebuggersWalkBack>
^ SubscriptOutOfBoundsError
- raiseErrorString:'receiver has no indexed variables'
+ raiseRequestErrorString:'receiver has no indexed variables'
"Modified: 26.7.1996 / 16:43:13 / cg"
!
@@ -4255,7 +4280,11 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'method/functionality is not yet implemented'
+ "/ ^ self error:'method/functionality is not yet implemented'
+ ^ MethodNotAppropriateError
+ raiseRequestErrorString:'method/functionality is not yet implemented'
+
+ "Modified: / 02-11-2012 / 10:24:12 / cg"
!
openDebuggerOnException:ex
@@ -4473,8 +4502,10 @@
shouldNeverBeReached
"report an error that this point may never be reached."
- ^ self
- error:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+ <resource: #skipInDebuggersWalkBack>
+
+ ^ ExecutionError
+ raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
"Modified: / 20-04-2005 / 18:59:28 / janfrog"
!
@@ -4482,9 +4513,14 @@
shouldNeverBeSent
"report an error that this message may never be sent to the reciever"
- ^ self error:'This message never may be sent to me!!'.
+ <resource: #skipInDebuggersWalkBack>
+
+ "/ ^ self error:'This message never may be sent to me!!'.
+ ^ MethodNotAppropriateError
+ raiseRequestErrorString:'This message never may be sent to me!!'
"Modified: / 20-04-2005 / 18:59:28 / janfrog"
+ "Modified: / 02-11-2012 / 10:10:42 / cg"
!
shouldNotImplement
@@ -4495,9 +4531,11 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'method/functionality not appropriate for this class'
-
- "Modified: 8.5.1996 / 09:09:44 / cg"
+ "/ self error:'method/functionality not appropriate for this class'
+ ^ MethodNotAppropriateError
+ raiseRequestErrorString:'method/functionality not appropriate for this class'
+
+ "Modified: / 02-11-2012 / 10:02:25 / cg"
!
subclassResponsibility
@@ -4559,8 +4597,15 @@
<resource: #skipInDebuggersWalkBack>
- ^ self error:'bad assign of ' , self printString ,
- ' (' , self class name , ') to typed variable'
+"/ ^ self error:'bad assign of ' , self printString ,
+"/ ' (' , self class name , ') to typed variable'
+
+ ^ InvalidTypeError
+ raiseRequestErrorString:
+ ('bad assign of ' , self printString ,
+ ' (' , self class name , ') to typed variable')
+
+ "Modified: / 02-11-2012 / 10:19:15 / cg"
! !
!Object methodsFor:'evaluation'!
@@ -9511,11 +9556,11 @@
!Object class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.698 2012/09/30 15:33:40 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.698 2012/09/30 15:33:40 stefan Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp §'
!
version_SVN
--- a/OpenError.st Wed Nov 28 10:22:05 2012 +0000
+++ b/OpenError.st Fri Nov 30 17:19:23 2012 +0000
@@ -39,11 +39,10 @@
pathName
"the name of the file/device which failed to open"
- (parameter isNil or:[parameter isString]) ifTrue:[
- ^ parameter
+ (parameter respondsTo:#pathName) ifTrue:[
+ ^ parameter pathName.
].
-
- ^ parameter pathName
+ ^ parameter
"Modified: / 16-01-2008 / 20:24:24 / cg"
!
@@ -63,7 +62,7 @@
p := self pathName.
p notEmptyOrNil ifTrue:[
- description := description, ': ', p
+ description := description, ': ', p printString
].
^ description
@@ -75,11 +74,11 @@
!OpenError class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.9 2008/12/08 11:50:45 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.10 2012/11/14 22:31:19 stefan Exp $'
!
version_SVN
- ^ '$Id: OpenError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+ ^ '$Id: OpenError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/PeekableStream.st Wed Nov 28 10:22:05 2012 +0000
+++ b/PeekableStream.st Fri Nov 30 17:19:23 2012 +0000
@@ -1034,28 +1034,20 @@
"Modified: 15.5.1996 / 17:51:42 / cg"
!
-nextWord
- "return the next characters which form an alphanumeric word
- (i.e. everything upTo (but excluding) the next non alphanumeric
- element)"
-
- ^ self nextAlphaNumericWord
-
- "Modified: 15.5.1996 / 17:39:32 / cg"
-! !
+ !
!PeekableStream class methodsFor:'documentation'!
version
- ^ '$Id: PeekableStream.st 10861 2012-10-31 18:09:01Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012/11/19 15:00:10 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.40 2011/02/05 10:40:33 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012/11/19 15:00:10 stefan Exp §'
!
version_SVN
- ^ '$Id: PeekableStream.st 10861 2012-10-31 18:09:01Z vranyj1 $'
+ ^ '$Id: PeekableStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
PeekableStream initialize!
--- a/ProjectDefinition.st Wed Nov 28 10:22:05 2012 +0000
+++ b/ProjectDefinition.st Fri Nov 30 17:19:23 2012 +0000
@@ -1069,7 +1069,6 @@
self classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
! !
-
!ProjectDefinition class methodsFor:'accessing - tests'!
excludedFromTestSuite
@@ -5881,10 +5880,15 @@
].
[
Class withoutUpdatingChangesDo:[
- packagesToLoad do:[:aPackage |
- (PackagesBeingLoaded includes:aPackage) ifFalse:[
- PackagesBeingLoaded add:aPackage.
- Smalltalk loadPackage:aPackage asAutoloaded:asAutoloaded.
+ packagesToLoad do:[:eachPackageID |
+ |cls|
+
+ cls := ProjectDefinition definitionClassForPackage:eachPackageID.
+ (cls isNil or:[cls projectIsLoaded not]) ifTrue:[
+ (PackagesBeingLoaded includes:eachPackageID) ifFalse:[
+ PackagesBeingLoaded add:eachPackageID.
+ Smalltalk loadPackage:eachPackageID asAutoloaded:asAutoloaded.
+ ]
]
].
].
@@ -6104,13 +6108,13 @@
self
addReferencesToClassesFromGlobalsInMethods:
(aClass theNonMetaclass methodDictionary values
- select:[:m | m package = aClass package])
+ select:[:m | m isExtension not])
to:usedClassReasons.
self
addReferencesToClassesFromGlobalsInMethods:
(aClass theMetaclass methodDictionary values
- select:[:m | m package = aClass package])
+ select:[:m | m isExtension not])
to:usedClassReasons.
].
@@ -6650,7 +6654,7 @@
called before checking in build support files"
|emptyProjects nonProjects emptyOrNonProjects classesInImage
- classesInDescription onlyInImage onlyInDescription missingPools|
+ classesInDescription onlyInImage onlyInDescription missingPools myPackage|
emptyProjects := Set withAll:self subProjects.
Smalltalk allClassesDo:[:cls |
@@ -6677,7 +6681,8 @@
].
].
- classesInImage := Smalltalk allClasses select:[:cls | (cls package = self package) and:[cls isPrivate not]].
+ myPackage := self package.
+ classesInImage := Smalltalk allClasses select:[:cls | (cls package == myPackage) and:[cls isPrivate not]].
"/ classesInDescription := self classes asIdentitySet.
classesInDescription := IdentitySet new.
((self compiled_classNamesForPlatform:(OperatingSystem platformName))
@@ -6926,15 +6931,16 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Id: ProjectDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.397 2012/11/21 16:57:05 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.395 2012/09/26 19:17:12 cg Exp §'
+ ^ 'Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.397 2012/11/21 16:57:05 cg Exp '
!
version_SVN
- ^ '$Id:: ProjectDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+ ^ '$Id:: ProjectDefinition.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
ProjectDefinition initialize!
+
--- a/RecursiveStoreError.st Wed Nov 28 10:22:05 2012 +0000
+++ b/RecursiveStoreError.st Fri Nov 30 17:19:23 2012 +0000
@@ -15,7 +15,7 @@
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
- category:'Kernel-Exceptions'
+ category:'Kernel-Exceptions-Errors'
!
!RecursiveStoreError class methodsFor:'documentation'!
@@ -55,11 +55,11 @@
!RecursiveStoreError class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.1 2004/04/23 11:41:00 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.2 2012/11/23 12:14:02 cg Exp $'
!
version_SVN
- ^ '$Id: RecursiveStoreError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+ ^ '$Id: RecursiveStoreError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
RecursiveStoreError initialize!
--- a/Semaphore.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Semaphore.st Fri Nov 30 17:19:23 2012 +0000
@@ -292,6 +292,20 @@
!Semaphore class methodsFor:'instance creation'!
+cleanup
+ "an emergency helper: manually signal all semaphores which were held by a now dead process.
+ Can only (;-?) happen, if a semaphore-holding process was hard terminated
+ (i.e. no ensure handling happened), and semas remain in a bad state."
+
+ self allInstancesDo:[:sema |
+ (sema count == 0
+ and:[sema lastOwner notNil
+ and:[sema lastOwner isDead]]) ifTrue:[
+ sema signal
+ ]
+ ]
+!
+
forMutualExclusion
"create & return a new semaphore which allows exactly one process to
wait on it without blocking. This type of semaphore is used
@@ -425,14 +439,29 @@
NOTE: Must be called when known that waitingProcesses is nonNil and
also with blocked interrupts"
- |processes|
+ |processes anyDead|
processes := waitingProcesses.
"/ do not set to nil - a waiting process may be suspended and will not be resumed...
"/ waitingProcesses := nil.
"/ todo: resume by priority; higher first.
- processes do:[:eachProcess | Processor resume:eachProcess].
+ anyDead := false.
+ processes do:[:eachProcess |
+ eachProcess isDead ifTrue:[
+ Transcript show:'oops: a dead process: '; showCR:eachProcess.
+ anyDead := true.
+ ] ifFalse:[
+ Processor resume:eachProcess
+ ]
+ ].
+ anyDead ifTrue:[
+ [
+ processes := processes reject:[:p | p isNil or:[p isDead]]
+ ] valueUninterruptably.
+ ].
+
+ "Modified: / 06-11-2012 / 14:27:09 / anwild"
! !
!Semaphore methodsFor:'private-accessing'!
@@ -948,15 +977,15 @@
!Semaphore class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.86 2011/08/11 12:38:01 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.86 2011/08/11 12:38:01 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp §'
!
version_SVN
- ^ '$Id: Semaphore.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+ ^ '$Id: Semaphore.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/SmallInteger.st Wed Nov 28 10:22:05 2012 +0000
+++ b/SmallInteger.st Fri Nov 30 17:19:23 2012 +0000
@@ -1180,10 +1180,10 @@
bits = __intVal(self);
if (bits == 0) {
- RETURN ( __mkSmallInteger(0) );
+ RETURN ( __mkSmallInteger(0) );
}
-#ifdef __BSR
+#ifdef __BSR
/*
* so much for CISC CPUS:
* the following code is not faster on a PIII-400
@@ -1196,23 +1196,23 @@
# if __POINTER_SIZE__ == 8
if (bits & 0xFFFFFFFF00000000L) {
- index += 32; bits = bits >> 32;
+ index += 32; bits = bits >> 32;
}
# endif
if (bits & 0xFFFF0000L) {
- index += 16; bits = bits >> 16;
+ index += 16; bits = bits >> 16;
}
if (bits & 0xFF00) {
- index += 8; bits = bits >> 8;
+ index += 8; bits = bits >> 8;
}
if (bits & 0xF0) {
- index += 4; bits = bits >> 4;
+ index += 4; bits = bits >> 4;
}
if (bits & 0xC) {
- index += 2; bits = bits >> 2;
+ index += 2; bits = bits >> 2;
}
if (bits & 0x2) {
- index += 1; bits = bits >> 1;
+ index += 1; bits = bits >> 1;
}
#endif /* no BSR instruction */
@@ -1227,38 +1227,38 @@
2r100000000000 highBit
((0 to:64) collect:[:s | 1 bitShift:s])
- collect:[:n | n highBit]
+ collect:[:n | n highBit]
(((0 to:64) collect:[:s | 1 bitShift:s])
- collect:[:n | n highBit]) = (1 to:65)
+ collect:[:n | n highBit]) = (1 to:65)
"
"
Time millisecondsToRun:[
- 1000000 timesRepeat:[
- 2r1 highBit
- ]
+ 1000000 timesRepeat:[
+ 2r1 highBit
+ ]
]
"
"
Time millisecondsToRun:[
- 1000000 timesRepeat:[
- 2r1111 highBit
- ]
+ 1000000 timesRepeat:[
+ 2r1111 highBit
+ ]
]
"
"
Time millisecondsToRun:[
- 1000000 timesRepeat:[
- 2r11111111111111 highBit
- ]
+ 1000000 timesRepeat:[
+ 2r11111111111111 highBit
+ ]
]
"
"
Time millisecondsToRun:[
- 1000000 timesRepeat:[
- 2r11111111111111111111111111 highBit
- ]
+ 1000000 timesRepeat:[
+ 2r11111111111111111111111111 highBit
+ ]
]
"
@@ -3349,34 +3349,41 @@
!
intlog10
- "return the truncation of log10 of the receiver -
- stupid implementation; used to find out the number of digits needed
+ "return the truncation of log10 of the receiver.
+ The same as (self log:10) floor.
+ Stupid implementation, which is used to find out the number of digits needed
to print a number/and for conversion to a LargeInteger.
Implemented that way, to allow for tiny systems (PDAs) without a Float class
(i.e. without log)."
self <= 0 ifTrue:[
- ^ self class
- raise:#domainErrorSignal
- receiver:self
- selector:#intlog10
- arguments:#()
- errorString:'logarithm of negative integer'
+ ^ self class
+ raise:#domainErrorSignal
+ receiver:self
+ selector:#intlog10
+ arguments:#()
+ errorString:'logarithm of negative integer'
].
- self < 10 ifTrue:[^ 0].
- self < 100 ifTrue:[^ 1].
- self < 1000 ifTrue:[^ 2].
- self < 10000 ifTrue:[^ 3].
- self < 100000 ifTrue:[^ 4].
- self < 1000000 ifTrue:[^ 5].
- self < 10000000 ifTrue:[^ 6].
- self < 100000000 ifTrue:[^ 7].
+ self < 10000 ifTrue:[
+ self < 10 ifTrue:[^ 0].
+ self < 100 ifTrue:[^ 1].
+ self < 1000 ifTrue:[^ 2].
+ ^ 3
+ ].
+ self < 100000000 ifTrue:[
+ self < 100000 ifTrue:[^ 4].
+ self < 1000000 ifTrue:[^ 5].
+ self < 10000000 ifTrue:[^ 6].
+ ^ 7
+ ].
self < 1000000000 ifTrue:[^ 8].
^ 9
"
99 intlog10
- 100 intlog10
+ 100 intlog10
+ 101 intlog10
+ (101 log:10) floor
120 intlog10
-1 intlog10
"
@@ -4113,13 +4120,13 @@
!SmallInteger class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.196 2012/07/06 16:33:40 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.196 2012/07/06 16:33:40 stefan Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp §'
!
version_SVN
- ^ '$Id: SmallInteger.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+ ^ '$Id: SmallInteger.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/Smalltalk.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Smalltalk.st Fri Nov 30 17:19:23 2012 +0000
@@ -69,127 +69,127 @@
[Instance variables:]
- none - all handling is done in the VM
+ none - all handling is done in the VM
[Class variables:]
- StartBlocks <Collection> blocks to be executed in a separate process after
- everything has been initialized. These blocks will
- be deleted after execution and therefore not be
- executed after an image restart. Initial processes
- (such as the Launcher) are usually started here.
- These blocks are added by smalltalk.rc/private.rc etc.
- via #addStartBlock during early initialization.
-
- ImageStartBlocks
- <Collection> blocks to be executed in a separate process after
- everything has been initialized. These blocks will be
- executed after an image restart.
- These blocks are usually added by smalltalk_r.rc etc.
-
- ExitBlocks <Collection> blocks to evaluate before system is
- left. Not currently used (GNU-ST compatibility).
-
- SystemPath <Collection> path to search for system files (sources, bitmaps etc)
- Set to a default here, but typically changed from some
- startup.rc file
-
- PackagePath <Collection> path to search for package.
- This is going to replace the above systemPath, and a classes
- resources will eventually searched in its package directory.
- This list defines the path, where packages are searched for,
- initially this is something like /opt/smalltalk/packages.
- Set to a default here, but typically changed from some
- startup.rc file
-
- StartupClass <Class> class and selector, where the system starts up
- StartupSelector <Symbol> (right after VM initialization)
- StartupArguments <Array> If an image is saved while those being nonNil,
- the image will come up there.
- Allows for customized images to be generated from a standard ST/X.
- StandAlone programs also set those during initialization.
-
- CommandLine <String> Unix (OS-) command line
-
- CommandName <String> the command (i.e. argv[0])
-
- CommandLineArguments <Array> Unix (OS-) command line arguments broken into words
- CommandName has been stripped off.
- (initially set by the VM)
-
- SilentLoading <Boolean> OBSOLETE:
- suppresses messages during fileIn and in compiler
- (can be set to true from a customized main.c)
-
- VerboseLoading <Boolean> generate messages during fileIn and in compiler
- (can be set to true from a customized main.c)
-
- Initializing <Boolean> true while (re-)initializing
- Controls the behavior of certain error
- reporters (for example: suppress dialogBoxes)
- while the system is not yet fit for full operation.
-
- StandAlone <Boolean> true, if this is a standalone app;
- if true the process scheduler watches for
- which processes are still running, and
- exits ST/X, when the last non-background
- and non-system process exits.
- Can be set in an application-specific startup script,
- or, for standAlone programs, by C-code during initialization.
-
- HeadlessOperation if true, a non-existing Display connection
- <Boolean> will NOT lead to an error-exit during startup.
- Default is false.
- Can be set in an application-specific startup script,
- or, for standAlone programs, by C-code during initialization.
-
- LogDoits <Boolean> if true, doits are also logged in the changes
- file. Default is false, since the changes file
- may become huge if every tiny doIt is saved there ...
-
- LoadBinaries <Boolean> if true, we attempt to load classes rom a binary
- file, if present. If false, this is always suppressed.
-
- SaveEmergencyImage <Boolean> if true (the default), an emergency image
- is saved, if the main Display looses its
- connection. This is useful if you have a
- flaky display connection (serial line)
- and want to have your stuff saved automatically
- in case of a broken connection.
+ StartBlocks <Collection> blocks to be executed in a separate process after
+ everything has been initialized. These blocks will
+ be deleted after execution and therefore not be
+ executed after an image restart. Initial processes
+ (such as the Launcher) are usually started here.
+ These blocks are added by smalltalk.rc/private.rc etc.
+ via #addStartBlock during early initialization.
+
+ ImageStartBlocks
+ <Collection> blocks to be executed in a separate process after
+ everything has been initialized. These blocks will be
+ executed after an image restart.
+ These blocks are usually added by smalltalk_r.rc etc.
+
+ ExitBlocks <Collection> blocks to evaluate before system is
+ left. Not currently used (GNU-ST compatibility).
+
+ SystemPath <Collection> path to search for system files (sources, bitmaps etc)
+ Set to a default here, but typically changed from some
+ startup.rc file
+
+ PackagePath <Collection> path to search for package.
+ This is going to replace the above systemPath, and a classes
+ resources will eventually searched in its package directory.
+ This list defines the path, where packages are searched for,
+ initially this is something like /opt/smalltalk/packages.
+ Set to a default here, but typically changed from some
+ startup.rc file
+
+ StartupClass <Class> class and selector, where the system starts up
+ StartupSelector <Symbol> (right after VM initialization)
+ StartupArguments <Array> If an image is saved while those being nonNil,
+ the image will come up there.
+ Allows for customized images to be generated from a standard ST/X.
+ StandAlone programs also set those during initialization.
+
+ CommandLine <String> Unix (OS-) command line
+
+ CommandName <String> the command (i.e. argv[0])
+
+ CommandLineArguments <Array> Unix (OS-) command line arguments broken into words
+ CommandName has been stripped off.
+ (initially set by the VM)
+
+ SilentLoading <Boolean> OBSOLETE:
+ suppresses messages during fileIn and in compiler
+ (can be set to true from a customized main.c)
+
+ VerboseLoading <Boolean> generate messages during fileIn and in compiler
+ (can be set to true from a customized main.c)
+
+ Initializing <Boolean> true while (re-)initializing
+ Controls the behavior of certain error
+ reporters (for example: suppress dialogBoxes)
+ while the system is not yet fit for full operation.
+
+ StandAlone <Boolean> true, if this is a standalone app;
+ if true the process scheduler watches for
+ which processes are still running, and
+ exits ST/X, when the last non-background
+ and non-system process exits.
+ Can be set in an application-specific startup script,
+ or, for standAlone programs, by C-code during initialization.
+
+ HeadlessOperation if true, a non-existing Display connection
+ <Boolean> will NOT lead to an error-exit during startup.
+ Default is false.
+ Can be set in an application-specific startup script,
+ or, for standAlone programs, by C-code during initialization.
+
+ LogDoits <Boolean> if true, doits are also logged in the changes
+ file. Default is false, since the changes file
+ may become huge if every tiny doIt is saved there ...
+
+ LoadBinaries <Boolean> if true, we attempt to load classes rom a binary
+ file, if present. If false, this is always suppressed.
+
+ SaveEmergencyImage <Boolean> if true (the default), an emergency image
+ is saved, if the main Display looses its
+ connection. This is useful if you have a
+ flaky display connection (serial line)
+ and want to have your stuff saved automatically
+ in case of a broken connection.
strictly private classVariables (helpers):
- CachedClasses <Collection> known classes (cached for faster class enumeration)
-
- CachedAbbreviations
- <Dictionary> className to filename mappings
-
- RealSystemPath <Collection> cached collection of directories along the path
- which really exist. Caching avoids long checks
- for existing directories on broken NFS volumes.
-
- SourcePath <Collection> cached names of really existing directories
- These are remembered, as in NFS systems,
- ResourcePath the time to lookup files may become long
- BinaryPath (especially, if some directories are on machines
- FileInPath which are not up ...).
- Therefore, the set of really
- existing directories is cached when the SystemPath
- is walked the first time.
- A consequence is that you have to invoke
- flushSystemPath, when you create any of those
- directories while running
- (and want the running ST/X to look there)
+ CachedClasses <Collection> known classes (cached for faster class enumeration)
+
+ CachedAbbreviations
+ <Dictionary> className to filename mappings
+
+ RealSystemPath <Collection> cached collection of directories along the path
+ which really exist. Caching avoids long checks
+ for existing directories on broken NFS volumes.
+
+ SourcePath <Collection> cached names of really existing directories
+ These are remembered, as in NFS systems,
+ ResourcePath the time to lookup files may become long
+ BinaryPath (especially, if some directories are on machines
+ FileInPath which are not up ...).
+ Therefore, the set of really
+ existing directories is cached when the SystemPath
+ is walked the first time.
+ A consequence is that you have to invoke
+ flushSystemPath, when you create any of those
+ directories while running
+ (and want the running ST/X to look there)
[author:]
- Claus Gittinger
+ Claus Gittinger
[see also:]
- ObjectMemory
- StandaloneStartup
- GetOpt
- ReadEvalPrintLoop
+ ObjectMemory
+ StandaloneStartup
+ GetOpt
+ ReadEvalPrintLoop
"
!
@@ -307,20 +307,20 @@
|envString i langString terrString|
StandAlone isNil ifTrue:[
- StandAlone := false.
+ StandAlone := false.
].
HeadlessOperation isNil ifTrue:[
- HeadlessOperation := false.
+ HeadlessOperation := false.
].
"
extract Language and LanguageTerritory from LANG variable.
valid are for example:
- en_en / en
- en_us
- en_gb
- de_de / de
- de_at (for Austria)
+ en_en / en
+ en_us
+ en_gb
+ de_de / de
+ de_at (for Austria)
"
Language := #en.
@@ -328,41 +328,41 @@
"Format of LANG is: language[_territory][.codeset][@modifier]
- language ISO-639 Language code
- territory ISO-3166 Contry code"
+ language ISO-639 Language code
+ territory ISO-3166 Contry code"
envString := OperatingSystem getLanguage.
envString size > 0 ifTrue:[
- i := envString indexOf:$@.
- (i ~~ 0) ifTrue:[
- LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
- envString := envString copyTo:(i - 1).
- ] ifFalse:[
- LanguageModifier := nil.
- ].
- i := envString indexOf:$..
- (i ~~ 0) ifTrue:[
- LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol.
- envString := envString copyTo:(i - 1).
- ] ifFalse:[
- LanguageCodeset := #'iso8859-1'.
- ].
- i := envString indexOf:$_.
- (i == 0) ifTrue:[
- langString := envString.
- terrString := envString
- ] ifFalse:[
- langString := envString copyTo:(i - 1).
- terrString := envString copyFrom:(i + 1)
- ].
- langString := langString asLowercase.
- terrString := terrString asLowercase.
- (langString = 'c' or:[terrString = 'c']) ifTrue:[
- ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
- ] ifFalse:[
- Language := langString asSymbol.
- LanguageTerritory := terrString asSymbol
- ]
+ i := envString indexOf:$@.
+ (i ~~ 0) ifTrue:[
+ LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
+ envString := envString copyTo:(i - 1).
+ ] ifFalse:[
+ LanguageModifier := nil.
+ ].
+ i := envString indexOf:$..
+ (i ~~ 0) ifTrue:[
+ LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol.
+ envString := envString copyTo:(i - 1).
+ ] ifFalse:[
+ LanguageCodeset := #'iso8859-1'.
+ ].
+ i := envString indexOf:$_.
+ (i == 0) ifTrue:[
+ langString := envString.
+ terrString := envString
+ ] ifFalse:[
+ langString := envString copyTo:(i - 1).
+ terrString := envString copyFrom:(i + 1)
+ ].
+ langString := langString asLowercase.
+ terrString := terrString asLowercase.
+ (langString = 'c' or:[terrString = 'c']) ifTrue:[
+ ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
+ ] ifFalse:[
+ Language := langString asSymbol.
+ LanguageTerritory := terrString asSymbol
+ ]
].
"
@@ -583,8 +583,8 @@
This one is the very first entry into the smalltalk world,
right after startup, ususally immediately followed by Smalltalk>>start.
Notice:
- this is not called when an image is restarted; in this
- case the show starts in Smalltalk>>restart."
+ this is not called when an image is restarted; in this
+ case the show starts in Smalltalk>>restart."
|idx|
@@ -594,7 +594,7 @@
AbstractOperatingSystem initializeConcreteClass.
CommandLineArguments isNil ifTrue:[
- CommandLineArguments := #('stx').
+ CommandLineArguments := #('stx').
].
CommandLine := CommandLineArguments copy.
CommandLineArguments := CommandLineArguments asOrderedCollection.
@@ -606,39 +606,39 @@
DebuggingStandAlone := false.
StandAlone ifTrue:[
- InfoPrinting := false.
- ObjectMemory infoPrinting:false.
-
- idx := CommandLineArguments indexOf:'--debug'.
- idx ~~ 0 ifTrue:[
- DebuggingStandAlone := true.
- ].
- DebuggingStandAlone ifTrue:[
- Inspector := MiniInspector.
- Debugger := MiniDebugger.
- ].
+ InfoPrinting := false.
+ ObjectMemory infoPrinting:false.
+
+ idx := CommandLineArguments indexOf:'--debug'.
+ idx ~~ 0 ifTrue:[
+ DebuggingStandAlone := true.
+ ].
+ DebuggingStandAlone ifTrue:[
+ Inspector := MiniInspector.
+ Debugger := MiniDebugger.
+ ].
] ifFalse:[
- "/
- "/ define low-level debugging tools - graphical classes are not prepared yet
- "/ to handle things.
- "/ This will bring us into the MiniDebugger when an error occurs during startup.
- "/
- Inspector := MiniInspector.
- Debugger := MiniDebugger.
+ "/
+ "/ define low-level debugging tools - graphical classes are not prepared yet
+ "/ to handle things.
+ "/ This will bring us into the MiniDebugger when an error occurs during startup.
+ "/
+ Inspector := MiniInspector.
+ Debugger := MiniDebugger.
].
Error handle:[:ex |
- StandAlone ifTrue:[
- DebuggingStandAlone ifFalse:[
- 'Startup Error - use --debug command line argument for more info' errorPrintCR.
- Smalltalk exit:1.
- ].
- 'Startup Error' errorPrintCR.
- thisContext fullPrintAll.
- ].
- ex reject.
+ StandAlone ifTrue:[
+ DebuggingStandAlone ifFalse:[
+ 'Startup Error - use --debug command line argument for more info' errorPrintCR.
+ Smalltalk exit:1.
+ ].
+ 'Startup Error' errorPrintCR.
+ thisContext fullPrintAll.
+ ].
+ ex reject.
] do:[
- self basicInitializeSystem
+ self basicInitializeSystem
].
"Modified: / 12-10-2010 / 11:27:47 / cg"
@@ -810,10 +810,10 @@
declarePoolDictionary:poolDictionaryName
^ SharedPool subclass:(poolDictionaryName asSymbol)
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:nil
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:nil
"Modified: / 07-02-2012 / 15:56:16 / cg"
!
@@ -939,9 +939,9 @@
|val|
(self includesKey:aKey) ifTrue:[
- (val := self at:aKey) notNil ifTrue:[
- ^ aBlock value:val
- ]
+ (val := self at:aKey) notNil ifTrue:[
+ ^ aBlock value:val
+ ]
].
^ nil
@@ -2152,29 +2152,29 @@
packageDirName := self getPackageFileName:packageDirName.
(packageDirName notNil and:[Class tryLocalSourceFirst]) ifTrue:[
- (self loadExtensionsFromDirectory:packageDirName language: language) ifTrue:[
- ^ true.
- ].
- packageDirName := nil. "do not try again"
+ (self loadExtensionsFromDirectory:packageDirName language: language) ifTrue:[
+ ^ true.
+ ].
+ packageDirName := nil. "do not try again"
].
"
if there is a sourceCodeManager, ask it first for the extensions
"
(Smalltalk at:#AbstractSourceCodeManager) notNil ifTrue:[
- mgr := AbstractSourceCodeManager managerForPackage: aPackageId
+ mgr := AbstractSourceCodeManager managerForPackage: aPackageId
].
mgr notNil ifTrue:[
- extensionsFilename := 'extensions.' , language sourceFileSuffix.
-
- projectDefinition := ProjectDefinition definitionClassForPackage:aPackageId.
- projectDefinition notNil ifTrue:[
- mod := aPackageId asPackageId module.
- dir := aPackageId asPackageId directory.
- extensionsRevisionString := projectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
- extensionsRevisionString notNil ifTrue:[
- extensionsRevisionInfo := mgr revisionInfoFromString:extensionsRevisionString inClass:nil.
- extensionsRevisionInfo notNil ifTrue:[
+ extensionsFilename := 'extensions.' , language sourceFileSuffix.
+
+ projectDefinition := ProjectDefinition definitionClassForPackage:aPackageId.
+ projectDefinition notNil ifTrue:[
+ mod := aPackageId asPackageId module.
+ dir := aPackageId asPackageId directory.
+ extensionsRevisionString := projectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
+ extensionsRevisionString notNil ifTrue:[
+ extensionsRevisionInfo := mgr revisionInfoFromString:extensionsRevisionString inClass:nil.
+ extensionsRevisionInfo notNil ifTrue:[
extensionsRevisionInfo fileName = extensionsFilename ifFalse:[
"JV@2011-10-23: following condition is never satisfied for
filed-in packages. The whole scheme of extensionVersion_XXX
@@ -2190,33 +2190,33 @@
^ false
]
]
- ]
- ].
- SourceCodeManagerError handle:[:ex |
- ] do:[
- inStream := mgr streamForExtensionFile:extensionsFilename package:aPackageId directory:dir module:mod cache:true.
- ].
- ].
- inStream isNil ifTrue:[
- SourceCodeManagerError handle:[:ex |
- ] do:[
- inStream := mgr getMostRecentSourceStreamForFile:extensionsFilename inPackage:aPackageId.
- ].
- ].
- inStream notNil ifTrue:[
- Class withoutUpdatingChangeSetDo:[
- inStream fileIn.
- ].
- inStream close.
- VerboseLoading ifTrue:[
- Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
- ].
- ^ true
- ]
+ ]
+ ].
+ SourceCodeManagerError handle:[:ex |
+ ] do:[
+ inStream := mgr streamForExtensionFile:extensionsFilename package:aPackageId directory:dir module:mod cache:true.
+ ].
+ ].
+ inStream isNil ifTrue:[
+ SourceCodeManagerError handle:[:ex |
+ ] do:[
+ inStream := mgr getMostRecentSourceStreamForFile:extensionsFilename inPackage:aPackageId.
+ ].
+ ].
+ inStream notNil ifTrue:[
+ Class withoutUpdatingChangeSetDo:[
+ inStream fileIn.
+ ].
+ inStream close.
+ VerboseLoading ifTrue:[
+ Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
+ ].
+ ^ true
+ ]
].
packageDirName notNil ifTrue:[
- ^ self loadExtensionsFromDirectory:packageDirName language: language
+ ^ self loadExtensionsFromDirectory:packageDirName language: language
].
^ false
@@ -2244,13 +2244,13 @@
f := packageDir / ('extensions.' , language sourceFileSuffix).
f exists ifTrue:[
- Class withoutUpdatingChangeSetDo:[
- f fileIn.
- ].
- VerboseLoading ifTrue:[
- Transcript showCR:('loaded extensions: ' , f pathName).
- ].
- ^ true
+ Class withoutUpdatingChangeSetDo:[
+ f fileIn.
+ ].
+ VerboseLoading ifTrue:[
+ Transcript showCR:('loaded extensions: ' , f pathName).
+ ].
+ ^ true
].
^ false
@@ -2404,12 +2404,12 @@
loadOK loadErrorOccurred exePath|
packageDirOrStringOrNil notNil ifTrue:[
- packageDir := packageDirOrStringOrNil asFilename.
+ packageDir := packageDirOrStringOrNil asFilename.
].
VerboseLoading ifTrue:[
- silent := false
+ silent := false
] ifFalse:[
- silent := (SilentLoading or:[ StandAlone ]) or:[ InfoPrinting not ].
+ silent := (SilentLoading or:[ StandAlone ]) or:[ InfoPrinting not ].
].
"For now: have to read the project definition first!!
@@ -2423,36 +2423,36 @@
"if not, file it in ..."
(projectDefinitionClass isNil and:[packageDir notNil]) ifTrue:[
- projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageString.
- "/ try to load the project definition class
- projectDefinitionFilename := (packageDir / projectDefinitionClassName) withSuffix:'st'.
- projectDefinitionFilename exists ifFalse:[
- projectDefinitionFilename := (packageDir / 'source' / projectDefinitionClassName) withSuffix:'st'.
- ].
- projectDefinitionFilename exists ifTrue:[
- Class withoutUpdatingChangesDo:[
- Smalltalk silentlyLoadingDo:[
- projectDefinitionFilename fileIn.
- ].
- ].
- projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
- ].
+ projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageString.
+ "/ try to load the project definition class
+ projectDefinitionFilename := (packageDir / projectDefinitionClassName) withSuffix:'st'.
+ projectDefinitionFilename exists ifFalse:[
+ projectDefinitionFilename := (packageDir / 'source' / projectDefinitionClassName) withSuffix:'st'.
+ ].
+ projectDefinitionFilename exists ifTrue:[
+ Class withoutUpdatingChangesDo:[
+ Smalltalk silentlyLoadingDo:[
+ projectDefinitionFilename fileIn.
+ ].
+ ].
+ projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
+ ].
].
projectDefinitionClass notNil ifTrue:[
- projectDefinitionClass autoload.
- somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
- (silent not and:[somethingHasBeenLoaded]) ifTrue:[
- Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageString , ' from project definition').
- ].
- ^ true.
+ projectDefinitionClass autoload.
+ somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
+ (silent not and:[somethingHasBeenLoaded]) ifTrue:[
+ Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageString , ' from project definition').
+ ].
+ ^ true.
].
"/ no project-definition class.
"Is there a shared library (.dll or .so) ?"
shLibName := aPackageString asPackageId libraryName asFilename
- withSuffix:ObjectFileLoader sharedLibrarySuffix.
+ withSuffix:ObjectFileLoader sharedLibrarySuffix.
"/ silent ifFalse:[
"/ Transcript showCR:('looking for binary classLib file: ' , shLibName pathName).
@@ -2460,75 +2460,75 @@
exePath := OperatingSystem pathOfSTXExecutable asFilename directory.
binaryClassLibraryFilename := exePath / shLibName.
binaryClassLibraryFilename exists ifFalse:[
- exePath baseName = 'bin' ifTrue:[
- binaryClassLibraryFilename := exePath directory / 'lib' / shLibName.
- ].
- binaryClassLibraryFilename exists ifFalse:[
- binaryClassLibraryFilename := exePath directory / 'plugin' / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
+ exePath baseName = 'bin' ifTrue:[
+ binaryClassLibraryFilename := exePath directory / 'lib' / shLibName.
+ ].
+ binaryClassLibraryFilename exists ifFalse:[
+ binaryClassLibraryFilename := exePath directory / 'plugin' / shLibName.
+ binaryClassLibraryFilename exists ifFalse:[
"/ binaryClassLibraryFilename := Filename currentDirectory / shLibName.
"/ binaryClassLibraryFilename exists ifFalse:[
- packageDir notNil ifTrue:[
- binaryClassLibraryFilename := packageDir / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- "/ mhmh - is this a good idea ? (temporary kludge)
- binaryClassLibraryFilename := packageDir / 'objbc' / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- binaryClassLibraryFilename := packageDir / 'objvc' / shLibName.
- ]
- ]
- ]
+ packageDir notNil ifTrue:[
+ binaryClassLibraryFilename := packageDir / shLibName.
+ binaryClassLibraryFilename exists ifFalse:[
+ "/ mhmh - is this a good idea ? (temporary kludge)
+ binaryClassLibraryFilename := packageDir / 'objbc' / shLibName.
+ binaryClassLibraryFilename exists ifFalse:[
+ binaryClassLibraryFilename := packageDir / 'objvc' / shLibName.
+ ]
+ ]
+ ]
"/ ].
- ].
- ].
+ ].
+ ].
].
binaryClassLibraryFilename exists ifTrue:[
- ObjectFileLoader::ObjectFileLoadErrorNotification handle:[:ex |
- loadErrorOccurred := true.
- ex proceedWith:true.
- ] do:[
- loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
- ].
- loadOK ifTrue:[
- silent ifFalse:[
- Transcript showCR:('loaded package: ' , aPackageString , ' from binary classLib file: ' , binaryClassLibraryFilename pathName).
- ].
- doLoadAsAutoloaded ifFalse:[
- "/ force autoloading...
- Smalltalk allClassesDo:[:eachClass |
- eachClass package == aPackageString ifTrue:[eachClass autoload].
- ].
- ].
- ^ true
- ].
- loadErrorOccurred ifTrue:[
- self breakPoint:#cg.
- projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
- projectDefinitionClass notNil ifTrue:[
- "/ load prerequisites...
- projectDefinitionClass loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
- self breakPoint:#cg.
- ].
- ].
+ ObjectFileLoader::ObjectFileLoadErrorNotification handle:[:ex |
+ loadErrorOccurred := true.
+ ex proceedWith:true.
+ ] do:[
+ loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
+ ].
+ loadOK ifTrue:[
+ silent ifFalse:[
+ Transcript showCR:('loaded package: ' , aPackageString , ' from binary classLib file: ' , binaryClassLibraryFilename pathName).
+ ].
+ doLoadAsAutoloaded ifFalse:[
+ "/ force autoloading...
+ Smalltalk allClassesDo:[:eachClass |
+ eachClass package == aPackageString ifTrue:[eachClass autoload].
+ ].
+ ].
+ ^ true
+ ].
+ loadErrorOccurred ifTrue:[
+ self breakPoint:#cg.
+ projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
+ projectDefinitionClass notNil ifTrue:[
+ "/ load prerequisites...
+ projectDefinitionClass loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
+ self breakPoint:#cg.
+ ].
+ ].
].
packageDir isNil ifTrue:[
- ^ false.
+ ^ false.
].
"/ loadAll ? - will be soon obsolete
"/ mhmh - this will vanish soon...
loadAllFilename := packageDir / 'loadAll'.
loadAllFilename exists ifFalse:[
- loadAllFilename := packageDir / 'loadall'.
+ loadAllFilename := packageDir / 'loadall'.
].
loadAllFilename exists ifTrue:[
- (self loadPackage:aPackageString fromLoadAllFile:loadAllFilename) ifTrue:[
- silent ifFalse:[
- Transcript showCR:('loaded package: ' , aPackageString , ' from loadAll file: ' , loadAllFilename pathName).
- ].
- ^ true
- ]
+ (self loadPackage:aPackageString fromLoadAllFile:loadAllFilename) ifTrue:[
+ silent ifFalse:[
+ Transcript showCR:('loaded package: ' , aPackageString , ' from loadAll file: ' , loadAllFilename pathName).
+ ].
+ ^ true
+ ]
].
packageName := packageDir baseName.
@@ -2657,13 +2657,13 @@
Smalltalk installAutoloadedClassesFrom:abbrevFile pathName.
doLoadAsAutoloaded ifFalse:[
- "/ force autoloading...
- Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
+ "/ force autoloading...
+ Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
].
self loadExtensionsFromDirectory:packageDir.
VerboseLoading ifTrue:[
- Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
+ Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
].
^ true
@@ -2687,27 +2687,27 @@
"/ If that happens, we restart the set-building here
"/
[(classes := CachedClasses) isNil] whileTrue:[
- CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
- self keysAndValuesDo:[:eachName :eachGlobal |
- (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
- "/ sigh - would like to skip over aliases
- "/ but this cannot be done simply by comparing
- "/ the classes name against the store-key
- "/ i.e. cannot do:
- "/ anObject name == sym ifTrue:[
- "/ classes add:anObject
- "/ ]
- "/ because that would lead to ignore all java
- "/ classes, which are stored under a different
- "/ key.
-
- (eachGlobal name == eachName
- or:[eachGlobal isJavaClass]) ifTrue:[
- classes add:eachGlobal
- ].
- ]
- ].
- NumberOfClassesHint := classes size.
+ CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
+ self keysAndValuesDo:[:eachName :eachGlobal |
+ (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
+ "/ sigh - would like to skip over aliases
+ "/ but this cannot be done simply by comparing
+ "/ the classes name against the store-key
+ "/ i.e. cannot do:
+ "/ anObject name == sym ifTrue:[
+ "/ classes add:anObject
+ "/ ]
+ "/ because that would lead to ignore all java
+ "/ classes, which are stored under a different
+ "/ key.
+
+ (eachGlobal name == eachName
+ or:[eachGlobal isJavaClass]) ifTrue:[
+ classes add:eachGlobal
+ ].
+ ]
+ ].
+ NumberOfClassesHint := classes size.
].
^ classes
@@ -3452,18 +3452,18 @@
startBlocks := self startBlocks.
startBlocks notNil ifTrue:[
- 'Smalltalk [info]: execute startBlocks...' infoPrintCR.
- startBlocks do:[:aBlock|
- Error handle:[:ex |
- InfoPrinting == true ifTrue:[
- 'Smalltalk [warning]: error cought in startBlock: ' infoPrint.
- ex description infoPrintCR.
- ex infoPrintCR.
- ex pass.
- ].
- ] do: aBlock
- ].
- startBlocks removeAll.
+ 'Smalltalk [info]: execute startBlocks...' infoPrintCR.
+ startBlocks do:[:aBlock|
+ Error handle:[:ex |
+ InfoPrinting == true ifTrue:[
+ 'Smalltalk [warning]: error cought in startBlock: ' infoPrint.
+ ex description infoPrintCR.
+ ex infoPrintCR.
+ ex pass.
+ ].
+ ] do: aBlock
+ ].
+ startBlocks removeAll.
].
"Created: / 07-01-2012 / 12:58:39 / cg"
@@ -3489,43 +3489,43 @@
thisIsARestart := imageName notNil.
graphicalMode ifTrue:[
- Display isNil ifTrue:[
- (StartupClass notNil
- and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
- self openDisplay.
- ].
- ].
+ Display isNil ifTrue:[
+ (StartupClass notNil
+ and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
+ self openDisplay.
+ ].
+ ].
].
StandAlone ifFalse:[
- "
- enable the graphical debugger/inspector
- (they could have been (re)defined as autoloaded in the patches file)
- "
- self initStandardTools.
+ "
+ enable the graphical debugger/inspector
+ (they could have been (re)defined as autoloaded in the patches file)
+ "
+ self initStandardTools.
].
"
if there is a display, start its event dispatcher
"
Display notNil ifTrue:[
- Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
- SaveEmergencyImage == true ifTrue:[
- 'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
- ObjectMemory primSnapShotOn:'crash.img'.
- ].
- 'Display [warning]: broken display connection - exit.' infoPrintCR.
- self exit.
- ].
- Display startDispatch.
+ Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
+ SaveEmergencyImage == true ifTrue:[
+ 'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
+ ObjectMemory primSnapShotOn:'crash.img'.
+ ].
+ 'Display [warning]: broken display connection - exit.' infoPrintCR.
+ self exit.
+ ].
+ Display startDispatch.
].
idx := CommandLineArguments indexOf:'--browserWindow:'.
IsPlugin := (idx ~~ 0).
IsPlugin ifTrue:[
- 'Smalltalk [info]: startup browser window...' infoPrintCR.
- self browserWindowStartup.
- "/ not reached
+ 'Smalltalk [info]: startup browser window...' infoPrintCR.
+ self browserWindowStartup.
+ "/ not reached
].
Initializing := false.
@@ -3536,49 +3536,49 @@
"/ Therefore, it is now done by an extra user-process.
process := [
- 'Smalltalk [info]: startup process 1 active.' infoPrintCR.
- StartBlocks notNil ifTrue:[
- self executeStartBlocks.
- StartBlocks := nil.
- ].
- ImageStartBlocks notNil ifTrue:[
- 'Smalltalk [info]: execute imageStartBlocks...' infoPrintCR.
- ImageStartBlocks do:[:aBlock|
- aBlock value
- ].
- ].
- StandAlone ifFalse:[
- (SilentLoading == true) ifFalse:[ "i.e. undefined counts as false"
- thisIsARestart ifTrue:[
- Transcript cr.
- Transcript showCR:('Smalltalk restarted from:'
- , imageName
- , ' (saved '
- , ObjectMemory imageSaveTime printString
- , ')' ).
- ] ifFalse:[
- Transcript showCR:(self hello).
- Transcript showCR:(self copyrightString).
- ].
- Transcript cr.
- ].
-
- DemoMode==true ifTrue:[
- Transcript showCR:'*** Restricted use: ***'.
- Transcript showCR:'*** This program may be used for education only. ***'.
- Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE ***'.
- Transcript showCR:'*** for more details. ***'.
- Transcript cr.
- ].
- ].
-
- thisIsARestart ifTrue:[
- "/
- "/ the final late notification - users can now assume that
- "/ views, forms etc. have been recreated.
-
- ObjectMemory changed:#returnFromSnapshot.
- ]
+ 'Smalltalk [info]: startup process 1 active.' infoPrintCR.
+ StartBlocks notNil ifTrue:[
+ self executeStartBlocks.
+ StartBlocks := nil.
+ ].
+ ImageStartBlocks notNil ifTrue:[
+ 'Smalltalk [info]: execute imageStartBlocks...' infoPrintCR.
+ ImageStartBlocks do:[:aBlock|
+ aBlock value
+ ].
+ ].
+ StandAlone ifFalse:[
+ (SilentLoading == true) ifFalse:[ "i.e. undefined counts as false"
+ thisIsARestart ifTrue:[
+ Transcript cr.
+ Transcript showCR:('Smalltalk restarted from:'
+ , imageName
+ , ' (saved '
+ , ObjectMemory imageSaveTime printString
+ , ')' ).
+ ] ifFalse:[
+ Transcript showCR:(self hello).
+ Transcript showCR:(self copyrightString).
+ ].
+ Transcript cr.
+ ].
+
+ DemoMode==true ifTrue:[
+ Transcript showCR:'*** Restricted use: ***'.
+ Transcript showCR:'*** This program may be used for education only. ***'.
+ Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE ***'.
+ Transcript showCR:'*** for more details. ***'.
+ Transcript cr.
+ ].
+ ].
+
+ thisIsARestart ifTrue:[
+ "/
+ "/ the final late notification - users can now assume that
+ "/ views, forms etc. have been recreated.
+
+ ObjectMemory changed:#returnFromSnapshot.
+ ]
] newProcess.
@@ -3595,63 +3595,63 @@
"/ message.
(StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
- "
- allow more customization by reading an image specific rc-file
- "
- thisIsARestart ifTrue:[
- (imageName asFilename hasSuffix:'img') ifTrue:[
- imageName := imageName copyWithoutLast:4
- ].
- self fileIn:(imageName , '.rc')
- ].
+ "
+ allow more customization by reading an image specific rc-file
+ "
+ thisIsARestart ifTrue:[
+ (imageName asFilename hasSuffix:'img') ifTrue:[
+ imageName := imageName copyWithoutLast:4
+ ].
+ self fileIn:(imageName , '.rc')
+ ].
"/ Display notNil ifTrue:[
"/ Display exitOnLastClose:true.
"/ ].
"/ Processor exitWhenNoMoreUserProcesses:true.
- process := [
- 'Smalltalk [info]: startup process 2 active.' infoPrintCR.
- StandAlone ifTrue:[
- AbortOperationRequest handle:[:ex |
- 'Smalltalk [info]: aborted - exit.' infoPrintCR.
- OperatingSystem exit:1
- ] do:[
- ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (1)') infoPrintCR.
- StartupClass perform:StartupSelector withArguments:StartupArguments.
- ]
- ] ifFalse:[
- ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (2)') infoPrintCR.
- StartupClass perform:StartupSelector withArguments:StartupArguments.
- ].
-
- "/
- "/ non-GUI apps exit after the startup;
- "/ assume that GUI apps have created & opened some view ...
- "/
- Display isNil ifTrue:[
- 'Smalltalk [info]: no Display - exit.' infoPrintCR.
- Smalltalk exit.
- ].
- "/
- "/ GUI apps exit after the last user process has finished
- "/
- Display exitOnLastClose:true.
- Processor exitWhenNoMoreUserProcesses:true.
- ] newProcess.
- process priority:(Processor userSchedulingPriority).
- process name:'main'.
- process beGroupLeader.
- process resume.
- process := nil. "do not refer to process"
+ process := [
+ 'Smalltalk [info]: startup process 2 active.' infoPrintCR.
+ StandAlone ifTrue:[
+ AbortOperationRequest handle:[:ex |
+ 'Smalltalk [info]: aborted - exit.' infoPrintCR.
+ OperatingSystem exit:1
+ ] do:[
+ ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (1)') infoPrintCR.
+ StartupClass perform:StartupSelector withArguments:StartupArguments.
+ ]
+ ] ifFalse:[
+ ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (2)') infoPrintCR.
+ StartupClass perform:StartupSelector withArguments:StartupArguments.
+ ].
+
+ "/
+ "/ non-GUI apps exit after the startup;
+ "/ assume that GUI apps have created & opened some view ...
+ "/
+ Display isNil ifTrue:[
+ 'Smalltalk [info]: no Display - exit.' infoPrintCR.
+ Smalltalk exit.
+ ].
+ "/
+ "/ GUI apps exit after the last user process has finished
+ "/
+ Display exitOnLastClose:true.
+ Processor exitWhenNoMoreUserProcesses:true.
+ ] newProcess.
+ process priority:(Processor userSchedulingPriority).
+ process name:'main'.
+ process beGroupLeader.
+ process resume.
+ process := nil. "do not refer to process"
].
StandAlone ifTrue:[
- Display notNil ifTrue:[
- FlyByHelp notNil ifTrue:[
- FlyByHelp start
- ].
- ].
+ Display notNil ifTrue:[
+ FlyByHelp notNil ifTrue:[
+ FlyByHelp start
+ ].
+ ].
].
"
@@ -3662,13 +3662,13 @@
or:[process notNil
or:[HeadlessOperation
or:[StandAlone]]]) ifTrue:[
- Processor dispatchLoop.
- "done - the last process finished"
- 'Smalltalk [info]: last process finished - exit.' infoPrintCR.
+ Processor dispatchLoop.
+ "done - the last process finished"
+ 'Smalltalk [info]: last process finished - exit.' infoPrintCR.
] ifFalse:[
- StandAlone ifFalse:[
- self readEvalPrint
- ]
+ StandAlone ifFalse:[
+ self readEvalPrint
+ ]
].
self exit
@@ -3730,15 +3730,15 @@
#earlySystemInstallation is sent for ST80 compatibility
#earlyRestart is send first, nothing has been setup yet.
- (should be used to flush all device dependent entries)
+ (should be used to flush all device dependent entries)
#restarted is send right after.
- (should be used to recreate external resources (fds, bitmaps etc)
+ (should be used to recreate external resources (fds, bitmaps etc)
#returnFromSnapshot is sent last
- (should be used to restart processes, reOpen Streams which cannot
- be automatically be reopened (i.e. Sockets, Pipes) and so on.
- (Notice that positionable fileStreams are already reopened and repositioned)
+ (should be used to restart processes, reOpen Streams which cannot
+ be automatically be reopened (i.e. Sockets, Pipes) and so on.
+ (Notice that positionable fileStreams are already reopened and repositioned)
"
|deb insp transcript idx|
@@ -3764,12 +3764,12 @@
idx := CommandLineArguments indexOf:'-q'.
idx == 0 ifTrue:[
- idx := CommandLineArguments indexOf:'--silent'.
+ idx := CommandLineArguments indexOf:'--silent'.
].
idx ~~ 0 ifTrue:[
- Object infoPrinting:false.
- ObjectMemory infoPrinting:false.
- CommandLineArguments removeAtIndex:idx.
+ Object infoPrinting:false.
+ ObjectMemory infoPrinting:false.
+ CommandLineArguments removeAtIndex:idx.
].
"/
@@ -3804,7 +3804,7 @@
insp := Inspector.
deb := Debugger.
deb notNil ifTrue:[
- deb reinitialize
+ deb reinitialize
].
Inspector := MiniInspector.
Debugger := MiniDebugger.
@@ -3817,7 +3817,7 @@
"/ ObjectFileLoader; therefore, must reload before doing any notifications.
ObjectFileLoader notNil ifTrue:[
- ObjectFileLoader reloadAllRememberedObjectFiles.
+ ObjectFileLoader reloadAllRememberedObjectFiles.
].
"/
@@ -3826,9 +3826,9 @@
"/ a display during early startup.
Screen notNil ifTrue:[
- Screen allScreens do:[:aDisplay |
- aDisplay invalidateConnection
- ].
+ Screen allScreens do:[:aDisplay |
+ aDisplay invalidateConnection
+ ].
].
ObjectMemory changed:#earlySystemInstallation.
@@ -3844,7 +3844,7 @@
"/ (mostly view/GC/color & font stuff)
ObjectMemory
- changed:#earlyRestart; changed:#restarted.
+ changed:#earlyRestart; changed:#restarted.
"/
"/ start catching SIGINT and SIGQUIT
@@ -3858,80 +3858,80 @@
idx := CommandLineArguments indexOf:'--faststart'.
idx == 0 ifTrue:[
- idx := CommandLineArguments indexOf:'--fastStart'.
+ idx := CommandLineArguments indexOf:'--fastStart'.
].
idx ~~ 0 ifTrue:[
- CommandLineArguments removeAtIndex:idx.
+ CommandLineArguments removeAtIndex:idx.
] ifFalse:[
- CallbackSignal := QuerySignal new.
- [
- Class withoutUpdatingChangesDo:[
- (self fileIn:(self commandName , '_r.rc')) ifFalse:[
- "no _r.rc file where executable is; try default smalltalk_r.rc"
- self fileIn:'smalltalk_r.rc'
- ].
- ]
- ] on:CallbackSignal do:[:ex|
- "/ now, display and view-stuff works;
- "/ back to the previous debugging interface
-
- Inspector := insp.
- Debugger := deb.
-
- "/ reinstall Transcript, if not changed during restart.
- "/ if there was no Transcript, go to stderr
-
- (transcript notNil and:[Transcript == Stderr]) ifTrue:[
- Transcript := transcript.
- ].
- Initializing := false.
- ex proceed.
- ].
- CallbackSignal := nil.
+ CallbackSignal := QuerySignal new.
+ [
+ Class withoutUpdatingChangesDo:[
+ (self fileIn:(self commandName , '_r.rc')) ifFalse:[
+ "no _r.rc file where executable is; try default smalltalk_r.rc"
+ self fileIn:'smalltalk_r.rc'
+ ].
+ ]
+ ] on:CallbackSignal do:[:ex|
+ "/ now, display and view-stuff works;
+ "/ back to the previous debugging interface
+
+ Inspector := insp.
+ Debugger := deb.
+
+ "/ reinstall Transcript, if not changed during restart.
+ "/ if there was no Transcript, go to stderr
+
+ (transcript notNil and:[Transcript == Stderr]) ifTrue:[
+ Transcript := transcript.
+ ].
+ Initializing := false.
+ ex proceed.
+ ].
+ CallbackSignal := nil.
].
"/ reinitialization (restart) of Display is normally performed
"/ in the restart script. If this has not been run for some reason,
"/ do in now.
Initializing ifTrue:[
- Display notNil ifTrue:[
- [
- Display reinitializeFor:Screen defaultDisplayName.
- ] on:Screen deviceOpenErrorSignal do:[
- 'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
- Screen defaultDisplayName errorPrintCR.
- OperatingSystem exit:1.
- ].
- ].
- "/ now, display and view-stuff works;
- "/ back to the previous debugging interface
-
- Inspector := insp.
- Debugger := deb.
-
- "/ reinstall Transcript, if not changed during restart.
- "/ if there was no Transcript, go to stderr
-
- (transcript notNil and:[Transcript == Stderr]) ifTrue:[
- Transcript := transcript.
- ].
- Initializing := false.
+ Display notNil ifTrue:[
+ [
+ Display reinitializeFor:Screen defaultDisplayName.
+ ] on:Screen deviceOpenErrorSignal do:[
+ 'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
+ Screen defaultDisplayName errorPrintCR.
+ OperatingSystem exit:1.
+ ].
+ ].
+ "/ now, display and view-stuff works;
+ "/ back to the previous debugging interface
+
+ Inspector := insp.
+ Debugger := deb.
+
+ "/ reinstall Transcript, if not changed during restart.
+ "/ if there was no Transcript, go to stderr
+
+ (transcript notNil and:[Transcript == Stderr]) ifTrue:[
+ Transcript := transcript.
+ ].
+ Initializing := false.
].
Screen notNil ifTrue:[
- "clean up leftover screens (and views) that haven't been reopened.
- Operate on a copy, since brokenConnection removes us from AllScreens"
- Screen allScreens copy do:[:eachDisplay |
- eachDisplay isOpen ifFalse:[
- 'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
- eachDisplay errorPrintCR.
- eachDisplay cleanupAfterDispatch; brokenConnection.
- ]
- ].
+ "clean up leftover screens (and views) that haven't been reopened.
+ Operate on a copy, since brokenConnection removes us from AllScreens"
+ Screen allScreens copy do:[:eachDisplay |
+ eachDisplay isOpen ifFalse:[
+ 'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
+ eachDisplay errorPrintCR.
+ eachDisplay cleanupAfterDispatch; brokenConnection.
+ ]
+ ].
].
deb := insp := transcript := nil. "avoid dangling refs"
(StartupClass perform:#keepSplashWindowOpen ifNotUnderstood:[false]) ifFalse:[
- self hideSplashWindow. "/ if there is one, it's now time to hide it
+ self hideSplashWindow. "/ if there is one, it's now time to hide it
].
self mainStartup:true
@@ -4045,6 +4045,8 @@
removeAtIndex:idx+1; removeAtIndex:idx.
self startSchedulerAndBackgroundCollector.
+ Initializing := false.
+
process := [
arg = '-' ifTrue:[
self fileInStream:Stdin
@@ -4080,6 +4082,8 @@
removeAtIndex:idx+1; removeAtIndex:idx.
self startSchedulerAndBackgroundCollector.
+ Initializing := false.
+
self
fileInStream:arg readStream
lazy:nil
@@ -4105,6 +4109,8 @@
commandFile notNil ifTrue:[
self startSchedulerAndBackgroundCollector.
+ Initializing := false.
+
(self secureFileIn:commandFile) ifFalse:[
('Smalltalk [error]: startup file "', commandFile, '" not found.') errorPrintCR.
OperatingSystem exit:1.
@@ -4189,15 +4195,15 @@
|p|
p :=
- [
- self executeStartBlocks.
- ] newProcess.
+ [
+ self executeStartBlocks.
+ ] newProcess.
p
- priority:(Processor userSchedulingPriority);
- name:'start block handler';
- beGroupLeader;
- resume.
+ priority:(Processor userSchedulingPriority);
+ name:'start block handler';
+ beGroupLeader;
+ resume.
"Modified: / 07-01-2012 / 12:59:01 / cg"
! !
@@ -4869,77 +4875,77 @@
|s2 l abbrevFileName info clsName cls abbrev package cat numClassInstVars words w|
anAbbrevFileStream isFileStream ifTrue:[
- abbrevFileName := anAbbrevFileStream pathName.
- info := 'declared from: ', abbrevFileName.
+ abbrevFileName := anAbbrevFileStream pathName.
+ info := 'declared from: ', abbrevFileName.
].
KnownPackages isNil ifTrue:[
- KnownPackages := Set new.
+ KnownPackages := Set new.
].
"/ yes, create any required nameSpace, without asking user.
Class createNameSpaceQuerySignal answer:true do:[
- [anAbbrevFileStream atEnd] whileFalse:[
- l := anAbbrevFileStream nextLine withoutSeparators.
- "Skip empty lines and comments"
- (l notEmpty and:[l first ~= $#]) ifTrue:[
- "/ must do it manually, caring for quoted strings.
+ [anAbbrevFileStream atEnd] whileFalse:[
+ l := anAbbrevFileStream nextLine withoutSeparators.
+ "Skip empty lines and comments"
+ (l notEmpty and:[l first ~= $#]) ifTrue:[
+ "/ must do it manually, caring for quoted strings.
"/ words := line asCollectionOfWords.
- words := OrderedCollection new.
- s2 := l readStream.
- [s2 atEnd] whileFalse:[
- s2 skipSeparators.
- s2 peek == $' ifTrue:[
- s2 next.
- w := s2 upTo:$'.
- s2 skipSeparators.
- ] ifFalse:[
- w := s2 upToSeparator
- ].
- words add:w
- ].
- words size < 3 ifTrue:[
- 'Smalltalk [warning]: bad abbrev entry' errorPrint.
- anAbbrevFileStream isFileStream ifTrue:[
- ' (in ''' errorPrint.
- anAbbrevFileStream pathName errorPrint.
- ''')' errorPrint
- ].
- ': ' errorPrint. l errorPrintCR
- ] ifFalse:[
- clsName := (words at:1) asSymbol.
- abbrev := (words at:2).
- package := (words at:3) asSymbol.
- cat := words at:4 ifAbsent:nil.
- numClassInstVars := words at:5 ifAbsent:'0'.
- numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
+ words := OrderedCollection new.
+ s2 := l readStream.
+ [s2 atEnd] whileFalse:[
+ s2 skipSeparators.
+ s2 peek == $' ifTrue:[
+ s2 next.
+ w := s2 upTo:$'.
+ s2 skipSeparators.
+ ] ifFalse:[
+ w := s2 upToSeparator
+ ].
+ words add:w
+ ].
+ words size < 3 ifTrue:[
+ 'Smalltalk [warning]: bad abbrev entry' errorPrint.
+ anAbbrevFileStream isFileStream ifTrue:[
+ ' (in ''' errorPrint.
+ anAbbrevFileStream pathName errorPrint.
+ ''')' errorPrint
+ ].
+ ': ' errorPrint. l errorPrintCR
+ ] ifFalse:[
+ clsName := (words at:1) asSymbol.
+ abbrev := (words at:2).
+ package := (words at:3) asSymbol.
+ cat := words at:4 ifAbsent:nil.
+ numClassInstVars := words at:5 ifAbsent:'0'.
+ numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
"/ KnownPackages add:package.
- (cat size == 0) ifTrue:[
- cat := 'autoloaded'
- ].
-
- "/ on the fly, update the abbreviations
- self setFilename:abbrev forClass:clsName package:package.
-
- "/ ' autoloaded: ' print. clsName print. ' in ' print. cat printCR.
-
- cls := self
- installAutoloadedClassNamed:clsName
- category:cat
- package:package
- revision:nil
- numClassInstVars:numClassInstVars.
+ (cat size == 0) ifTrue:[
+ cat := 'autoloaded'
+ ].
+
+ "/ on the fly, update the abbreviations
+ self setFilename:abbrev forClass:clsName package:package.
+
+ "/ ' autoloaded: ' print. clsName print. ' in ' print. cat printCR.
+
+ cls := self
+ installAutoloadedClassNamed:clsName
+ category:cat
+ package:package
+ revision:nil
+ numClassInstVars:numClassInstVars.
"/ info notNil ifTrue:[
"/ cls setComment:info.
"/ ].
- ]
- ]
- ]
+ ]
+ ]
+ ]
]
!
@@ -5028,12 +5034,12 @@
dirsConsulted := Set new.
self
- recursiveInstallAutoloadedClassesFrom:aTopDirectory
- rememberIn:dirsConsulted
- maxLevels:15
- noAutoload:false
- packageTop:nil
- showSplashInLevels:-1.
+ recursiveInstallAutoloadedClassesFrom:aTopDirectory
+ rememberIn:dirsConsulted
+ maxLevels:15
+ noAutoload:false
+ packageTop:nil
+ showSplashInLevels:-1.
"
@@ -5075,48 +5081,48 @@
maxLevels == 0 ifTrue:[
"/ 'Smalltalk [warning]: max directory nesting reached.' infoPrintCR.
- ^ self
+ ^ self
].
dir := aDirectory asFilename.
dirName := dir pathName.
(dirsConsulted includes:dirName) ifTrue:[
- ^ self
+ ^ self
].
dirsConsulted add:dirName.
(dir / 'NOPACKAGES') exists ifTrue:[
- ^ self.
+ ^ self.
].
(dir / 'NOSUBAUTOLOAD') exists ifTrue:[
- ^ self.
+ ^ self.
].
noAutoloadHere := noAutoloadIn.
noAutoloadHere ifFalse:[
- (dir / 'NOAUTOLOAD') exists ifTrue:[
- noAutoloadHere := true.
- ].
+ (dir / 'NOAUTOLOAD') exists ifTrue:[
+ noAutoloadHere := true.
+ ].
] ifTrue:[
- (dir / 'AUTOLOAD') exists ifTrue:[
- noAutoloadHere := false.
- ].
+ (dir / 'AUTOLOAD') exists ifTrue:[
+ noAutoloadHere := false.
+ ].
].
((dir / 'loadAll') exists or:[(dir / 'abbrev.stc') exists]) ifTrue:[
- packageTopPath notNil ifTrue:[
- KnownPackages isNil ifTrue:[
- KnownPackages := Set new.
- ].
- pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
- KnownPackages add:pkgName
- ].
+ packageTopPath notNil ifTrue:[
+ KnownPackages isNil ifTrue:[
+ KnownPackages := Set new.
+ ].
+ pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
+ KnownPackages add:pkgName
+ ].
].
showSplashInLevels >= 0 ifTrue:[
- self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
- bindWith:(dirName contractAtBeginningTo:35)).
+ self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
+ bindWith:(dirName contractAtBeginningTo:35)).
].
"/
@@ -5124,57 +5130,57 @@
"/ below; however, still traverse the directories to find packages ...
"/
noAutoloadHere ifFalse:[
- [
- self installAutoloadedClassesFromAbbrevFile:(dir / 'abbrev.stc').
- ] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
+ [
+ self installAutoloadedClassesFromAbbrevFile:(dir / 'abbrev.stc').
+ ] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
].
[
- directoryContents := dir directoryContents asSet. "asSet to speed up remove"
+ directoryContents := dir directoryContents asSet. "asSet to speed up remove"
] on:FileStream openErrorSignal do:[:ex|
- "non-accessable directory: we are done"
- ^ self
+ "non-accessable directory: we are done"
+ ^ self
].
directoryContents removeAllFoundIn:#(
- 'objbc'
- 'objvc'
- 'doc'
- 'CVS'
- 'bitmaps'
- 'resources'
- 'source'
- 'not_delivered'
- 'not_ported'
- ).
+ 'objbc'
+ 'objvc'
+ 'doc'
+ 'CVS'
+ 'bitmaps'
+ 'resources'
+ 'source'
+ 'not_delivered'
+ 'not_ported'
+ ).
dir baseName = 'stx' ifTrue:[
- directoryContents removeAllFoundIn:#(
- 'configurations'
- 'include'
- 'rules'
- 'stc'
- 'support'
- ).
+ directoryContents removeAllFoundIn:#(
+ 'configurations'
+ 'include'
+ 'rules'
+ 'stc'
+ 'support'
+ ).
].
directoryContents do:[:eachFilenameString |
- |f|
-
- f := dir / eachFilenameString.
- f isDirectory ifTrue:[
- self
- recursiveInstallAutoloadedClassesFrom:f
- rememberIn:dirsConsulted
- maxLevels:maxLevels-1
- noAutoload:noAutoloadHere
- packageTop:packageTopPath
- showSplashInLevels:showSplashInLevels - 1.
- ]
+ |f|
+
+ f := dir / eachFilenameString.
+ f isDirectory ifTrue:[
+ self
+ recursiveInstallAutoloadedClassesFrom:f
+ rememberIn:dirsConsulted
+ maxLevels:maxLevels-1
+ noAutoload:noAutoloadHere
+ packageTop:packageTopPath
+ showSplashInLevels:showSplashInLevels - 1.
+ ]
].
showSplashInLevels >= 0 ifTrue:[
- self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
- bindWith:(dirName contractAtBeginningTo:35)).
+ self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
+ bindWith:(dirName contractAtBeginningTo:35)).
].
"
@@ -5452,9 +5458,9 @@
(path := self getBinaryFileName:aFileName) isNil ifTrue:[^ false].
ok := (ObjectFileLoader loadClass:aClassName fromObjectFile:path) notNil.
ok ifTrue:[
- VerboseLoading ifTrue:[
- Transcript show:' loaded ' , aClassName , ' from ' ; showCR:aFileName.
- ]
+ VerboseLoading ifTrue:[
+ Transcript show:' loaded ' , aClassName , ' from ' ; showCR:aFileName.
+ ]
].
^ ok
@@ -6205,66 +6211,66 @@
"/ prerequisites in makefiles. But if you renamed such a stc-compiled class,
"/ the filename remains the same, but SVN __ALWAYS__ keep container name
"/ and class name in sync. Therefore build files gets messed up. Indeed, this
-"/ should be fixed in code that files-out the package and generates build files.
+"/ should be fixed in code that files-out the package and generates build files.
"/ Certainly a hack, but do not remove this until fixed elsewhere
compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
(compatQuery notNil
and:[compatQuery isLoaded
- and:[compatQuery query not]]) ifTrue:[
- nm := aClassOrClassName isBehavior
- ifTrue:[aClassOrClassName name]
- ifFalse:[aClassOrClassName].
- nm := nm copyReplaceAll:$: with:$_.
- ^nm
+ and:[compatQuery query not]]) ifTrue:[
+ nm := aClassOrClassName isBehavior
+ ifTrue:[aClassOrClassName name]
+ ifFalse:[aClassOrClassName].
+ nm := nm copyReplaceAll:$: with:$_.
+ ^nm
].
"/ Same for another query for new libscm...
compatQuery := Smalltalk classNamed: 'SCMCompatModeQuery'.
(compatQuery notNil
and:[compatQuery isLoaded
- and:[compatQuery query not]]) ifTrue:[
- nm := aClassOrClassName isBehavior
- ifTrue:[aClassOrClassName name]
- ifFalse:[aClassOrClassName].
- nm := nm copyReplaceAll:$: with:$_.
- ^nm
+ and:[compatQuery query not]]) ifTrue:[
+ nm := aClassOrClassName isBehavior
+ ifTrue:[aClassOrClassName name]
+ ifFalse:[aClassOrClassName].
+ nm := nm copyReplaceAll:$: with:$_.
+ ^nm
].
aClassOrClassName isBehavior ifTrue:[
- cls := aClassOrClassName.
+ cls := aClassOrClassName.
] ifFalse:[
- cls := Smalltalk classNamed:aClassOrClassName.
- cls isNil ifTrue:[
- nameWithPrefix := aClassOrClassName.
- nameWithoutPrefix := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
- ].
+ cls := Smalltalk classNamed:aClassOrClassName.
+ cls isNil ifTrue:[
+ nameWithPrefix := aClassOrClassName.
+ nameWithoutPrefix := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
+ ].
].
cls notNil ifTrue:[
- nonMetaclass := cls theNonMetaclass.
- nm := nonMetaclass getClassFilename.
- nm isNil ifTrue:[
- cls revisionInfo notNil ifTrue:[
- nm := cls revisionInfo fileName.
- ].
- ].
- nm notNil ifTrue:[
- ^ nm asFilename withoutSuffix baseName
- ].
- nameWithPrefix := nonMetaclass name.
- nameWithoutPrefix := nonMetaclass nameWithoutPrefix.
+ nonMetaclass := cls theNonMetaclass.
+ nm := nonMetaclass getClassFilename.
+ nm isNil ifTrue:[
+ cls revisionInfo notNil ifTrue:[
+ nm := cls revisionInfo fileName.
+ ].
+ ].
+ nm notNil ifTrue:[
+ ^ nm asFilename withoutSuffix baseName
+ ].
+ nameWithPrefix := nonMetaclass name.
+ nameWithoutPrefix := nonMetaclass nameWithoutPrefix.
].
CachedAbbreviations notNil ifTrue:[
- nameWithPrefix := nameWithPrefix asSymbol.
- (CachedAbbreviations includesKey:nameWithPrefix) ifTrue:[
- ^ (CachedAbbreviations at:nameWithPrefix) asFilename baseName
- ].
- nameWithoutPrefix := nameWithoutPrefix asSymbol.
- (CachedAbbreviations includesKey:nameWithoutPrefix) ifTrue:[
- ^ (CachedAbbreviations at:nameWithoutPrefix) asFilename baseName
- ].
+ nameWithPrefix := nameWithPrefix asSymbol.
+ (CachedAbbreviations includesKey:nameWithPrefix) ifTrue:[
+ ^ (CachedAbbreviations at:nameWithPrefix) asFilename baseName
+ ].
+ nameWithoutPrefix := nameWithoutPrefix asSymbol.
+ (CachedAbbreviations includesKey:nameWithoutPrefix) ifTrue:[
+ ^ (CachedAbbreviations at:nameWithoutPrefix) asFilename baseName
+ ].
].
^ nameWithPrefix copyReplaceAll:$: with:$_
@@ -7701,7 +7707,13 @@
ST/X revision Naming is:
<major>.<minor>.<revision>.<release>"
- ^ 1
+ |releaseNumber|
+
+ releaseNumber := Smalltalk versionBuildNumber.
+ releaseNumber isEmpty ifTrue:[
+ ^ 0.
+ ].
+ ^ releaseNumber
"
Smalltalk releaseNr
@@ -7768,26 +7780,22 @@
"return the executables build number - that's the jenkins build #.
Empty if not built by jenkins"
-"
+
%{ /* NOCONTEXT */
extern char *__getBuildNumberString();
RETURN (__MKSTRING(__getBuildNumberString() COMMA_SND) );
%}.
-"
^ ''
"
Smalltalk versionBuildNumber
"
-
- "Created: / 26-11-2012 / 13:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionDate
- "{ Pragma: +optSpace }"
-
- "return the executables build date - thats the date when the smalltalk
+
+ "return the executables build date - that's the date when the smalltalk
executable was built"
%{ /* NOCONTEXT */
@@ -7812,7 +7820,8 @@
self minorVersionNr printString ,
'.',
self revisionNr printString,
- 'b')
+ 'b.',
+ self releaseNr printString)
"
@@ -7837,13 +7846,13 @@
!Smalltalk class methodsFor:'documentation'!
version
- ^ '$Id: Smalltalk.st 10872 2012-11-27 08:58:37Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1000 2012/11/23 17:44:05 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.997 2012/10/29 11:43:52 cg Exp §'
+ ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1000 2012/11/23 17:44:05 stefan Exp '
!
version_SVN
- ^ '$Id:: Smalltalk.st 10872 2012-11-27 08:58:37Z vranyj1 $'
+ ^ '$Id:: Smalltalk.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/TimeoutNotification.st Wed Nov 28 10:22:05 2012 +0000
+++ b/TimeoutNotification.st Fri Nov 30 17:19:23 2012 +0000
@@ -15,7 +15,7 @@
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
- category:'Kernel-Exceptions'
+ category:'Kernel-Exceptions-Notifications'
!
!TimeoutNotification class methodsFor:'documentation'!
@@ -43,9 +43,9 @@
!TimeoutNotification class methodsFor:'documentation'!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.1 2010/08/20 10:16:29 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.2 2012/11/23 12:13:33 cg Exp §'
!
version_SVN
- ^ '$Id: TimeoutNotification.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+ ^ '$Id: TimeoutNotification.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/UserPreferences.st Wed Nov 28 10:22:05 2012 +0000
+++ b/UserPreferences.st Fri Nov 30 17:19:23 2012 +0000
@@ -1919,8 +1919,6 @@
!
showAcceptCancelBarInBrowser
- "experimental."
-
^ self at:#showAcceptCancelBarInBrowser ifAbsent:true
"
@@ -4142,11 +4140,11 @@
!UserPreferences class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.316 2012/10/22 17:24:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.316 2012/10/22 17:24:42 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp §'
!
version_SVN
--- a/WeakArray.st Wed Nov 28 10:22:05 2012 +0000
+++ b/WeakArray.st Fri Nov 30 17:19:23 2012 +0000
@@ -361,11 +361,7 @@
"a helper for deepCopy; only indices for which this method returns
false are copied in a deep copy."
- index == 1 ifTrue:[
- ^ true "/ skip dependents
- ].
- ^ false
-
+ ^ index == 1 "/ skip dependents
! !
!WeakArray methodsFor:'dependents access'!
@@ -1020,15 +1016,15 @@
!WeakArray class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.67 2012/03/26 17:02:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012/11/24 12:55:25 stefan Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.67 2012/03/26 17:02:56 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012/11/24 12:55:25 stefan Exp §'
!
version_SVN
- ^ '$Id: WeakArray.st 10804 2012-04-13 13:18:13Z vranyj1 $'
+ ^ '$Id: WeakArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
WeakArray initialize!
--- a/Win32OperatingSystem.st Wed Nov 28 10:22:05 2012 +0000
+++ b/Win32OperatingSystem.st Fri Nov 30 17:19:23 2012 +0000
@@ -814,6 +814,7 @@
"Modified: 7.1.1997 / 19:36:11 / stefan"
! !
+
!Win32OperatingSystem class methodsFor:'OS signal constants'!
sigABRT
@@ -3962,14 +3963,6 @@
^ self primitiveFailed.
!
-closeHandle: handle
- "low level handle close"
-
- <apicall: ulongReturn "CloseHandle" ( handle ) module: "kernel32.dll" >
-
- "Modified (comment): / 12-08-2011 / 16:37:35 / cg"
-!
-
createDirectory:aPathName
"create a new directory with name 'aPathName', which may be an absolute
path, or relative to the current directory.
@@ -6905,26 +6898,31 @@
!
duplicateHandle:aHandle to:targetProcessHandle
- |hMe spaceForTargetHandle rslt|
-
- spaceForTargetHandle := ExternalLong new.
+ |hMe spaceForTargetHandle rslt addr|
+
+ spaceForTargetHandle := ExternalLong unprotectedNew.
hMe := self getCurrentProcess.
rslt := self
- primDuplicateHandle_hSourcProcessHandle:hMe
- hSourceHandle:aHandle
- hTargetProcesshandle:targetProcessHandle
- lpTargetHandle:spaceForTargetHandle
- dwDesiredAccess:0
- bInheritHandle:false
- dwOptions:2 "DUPLICATE_SAME_ACCESS".
+ primDuplicateHandle_hSourcProcessHandle:hMe
+ hSourceHandle:aHandle
+ hTargetProcesshandle:targetProcessHandle
+ lpTargetHandle:spaceForTargetHandle
+ dwDesiredAccess:0
+ bInheritHandle:false
+ dwOptions:2 "DUPLICATE_SAME_ACCESS".
rslt ifFalse:[
- self primitiveFailed.
- ^ nil
- ].
- ^ ExternalAddress newAddress:(spaceForTargetHandle value).
+ spaceForTargetHandle free.
+ self primitiveFailed.
+ ^ nil
+ ].
+
+ addr := spaceForTargetHandle value.
+ spaceForTargetHandle free.
+ ^ ExternalAddress newAddress:addr.
"Created: / 18-09-2007 / 16:34:25 / cg"
+ "Modified: / 21-11-2012 / 12:14:06 / anwild"
!
getAllProcesses
@@ -7120,24 +7118,6 @@
"
!
-multiByteToWideCharCp: cp flags: flags lpstr: lpstr cchstr: cchstr lpwstr: lpwstr cchwstr: cchwstr
- "Convert the multi-byte string encoding in <lpstr> to a Unicode encoding in <lpwstr>."
-
- " int MultiByteToWideChar(
- UINT CodePage, // code page
- DWORD dwFlags, // character-type options
- LPCSTR lpMultiByteStr, // address of string to map
- int cchMultiByte, // number of characters in string
- LPWSTR lpWideCharStr, // address of wide-character buffer
- int cchWideChar // size of buffer
- );"
-
- <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32) module: "kernel32.dll" >
- ^self primitiveFailed
-
- "Modified (comment): / 12-08-2011 / 16:37:06 / cg"
-!
-
playSound:fileName
self playSound:fileName mode:1
@@ -7219,34 +7199,6 @@
"Created: / 18-12-2006 / 13:01:41 / User"
!
-wideCharToMultiByteCp: codePage
- flags: dwFlags
- lpwstr: lpWideCharStr
- cchwstr: cchwstr
- lpstr: lpstr
- cchlpstr: cchlpstr
- default: default
- defaultUsed: defaultUsed
-
- "Convert the Unicode encoding in <lpWideCharStr> to a multi-byte string encoding in <lpstr>."
-
- "int WideCharToMultiByte(
- UINT CodePage, // code page
- DWORD dwFlags, // performance and mapping flags
- LPCWSTR lpWideCharStr, // address of wide-character string
- int cchWideChar, // number of characters in string
- LPSTR lpMultiByteStr, // address of buffer for new string
- int cchMultiByte, // size of buffer
- LPCSTR lpDefaultChar, // address of default for unmappable characters
- LPBOOL lpUsedDefaultChar // address of flag set when default char. used
- );"
-
- <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32 structIn structOut) module: "kernel32.dll" >
- ^self primitiveFailed
-
- "Modified (comment): / 12-08-2011 / 16:37:14 / cg"
-!
-
writePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
^self primWritePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
@@ -7997,25 +7949,25 @@
This method is mainly provided to augment error reports with some system
information.
(in case of system/version specific OS errors, conditional workarounds and patches
- may be based upon this info).
+ may be based upon this info).
Your application should NOT depend upon this in any way.
The returned info may (or may not) contain:
- #system -> some operating system identification (irix, Linux, nt, win32s ...)
- #version -> OS version (some os version identification)
- #release -> OS release (3.5, 1.2.1 ...)
- #node -> some host identification (hostname)
- #domain -> domain name (hosts domain)
- #machine -> type of machine (i586, mips ...)
+ #system -> some operating system identification (irix, Linux, nt, win32s ...)
+ #version -> OS version (some os version identification)
+ #release -> OS release (3.5, 1.2.1 ...)
+ #node -> some host identification (hostname)
+ #domain -> domain name (hosts domain)
+ #machine -> type of machine (i586, mips ...)
win32:
- #physicalRam -> total amount of physical memory
- #freeRam -> amount of free memory
- #swapSize -> size of swapSpace (page file)
- #freeSwap -> free bytes in swapSpace
- #virtualRam -> total amount of virtual memory
- #freeVirtual -> amount of free virtual memory
- #memoryLoad -> percentage of memory usage (useless)
+ #physicalRam -> total amount of physical memory
+ #freeRam -> amount of free memory
+ #swapSize -> size of swapSpace (page file)
+ #freeSwap -> free bytes in swapSpace
+ #virtualRam -> total amount of virtual memory
+ #freeVirtual -> amount of free virtual memory
+ #memoryLoad -> percentage of memory usage (useless)
"
|sys node rel ver minorVer majorVer mach dom info arch
@@ -8041,20 +7993,23 @@
majorVer = __mkSmallInteger(verMajor);
if (HIWORD(vsn) & 0x8000) {
- sys = @symbol(win95);
+ sys = @symbol(win95);
} else {
- if ((verMajor > 5)
- || ((verMajor == 5) && (verMinor >= 1))) {
- sys = @symbol(xp);
- if (verMajor >= 6) {
- sys = @symbol(vista);
- if (verMinor >= 1) {
- sys = @symbol(win7);
- }
- }
- } else {
- sys = @symbol(nt);
- }
+ if ((verMajor > 5)
+ || ((verMajor == 5) && (verMinor >= 1))) {
+ sys = @symbol(xp);
+ if (verMajor >= 6) {
+ sys = @symbol(vista);
+ if (verMinor >= 1) {
+ sys = @symbol(win7);
+ if (verMinor >= 2) {
+ sys = @symbol(win8);
+ }
+ }
+ }
+ } else {
+ sys = @symbol(nt);
+ }
}
len = snprintf(vsnBuffer, sizeof(vsnBuffer), "%d.%d", verMajor, verMinor);
rel = __MKSTRING_L(vsnBuffer, len);
@@ -8080,160 +8035,160 @@
#endif
{
#ifdef PROCESSOR_ARCHITECTURE_INTEL
- case PROCESSOR_ARCHITECTURE_INTEL:
- arch = @symbol(intel);
- break;
+ case PROCESSOR_ARCHITECTURE_INTEL:
+ arch = @symbol(intel);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_AMD64
- case PROCESSOR_ARCHITECTURE_AMD64:
- arch = @symbol(x64);
- break;
+ case PROCESSOR_ARCHITECTURE_AMD64:
+ arch = @symbol(x64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MIPS
- case PROCESSOR_ARCHITECTURE_MIPS:
- arch = @symbol(mips);
- break;
+ case PROCESSOR_ARCHITECTURE_MIPS:
+ arch = @symbol(mips);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA
- case PROCESSOR_ARCHITECTURE_ALPHA:
- arch = @symbol(alpha);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA:
+ arch = @symbol(alpha);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA64
- case PROCESSOR_ARCHITECTURE_ALPHA64:
- arch = @symbol(alpha64);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA64:
+ arch = @symbol(alpha64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_PPC
- case PROCESSOR_ARCHITECTURE_PPC:
- arch = @symbol(ppc);
- break;
+ case PROCESSOR_ARCHITECTURE_PPC:
+ arch = @symbol(ppc);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ARM
- case PROCESSOR_ARCHITECTURE_ARM:
- arch = @symbol(arm);
- break;
+ case PROCESSOR_ARCHITECTURE_ARM:
+ arch = @symbol(arm);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_SHX
- case PROCESSOR_ARCHITECTURE_SHX:
- arch = @symbol(shx);
- break;
+ case PROCESSOR_ARCHITECTURE_SHX:
+ arch = @symbol(shx);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_IA64
- case PROCESSOR_ARCHITECTURE_IA64:
- arch = @symbol(ia64);
- break;
+ case PROCESSOR_ARCHITECTURE_IA64:
+ arch = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MSIL
- case PROCESSOR_ARCHITECTURE_MSIL:
- arch = @symbol(msil);
- break;
-#endif
- default:
- arch = @symbol(unknown);
- break;
+ case PROCESSOR_ARCHITECTURE_MSIL:
+ arch = @symbol(msil);
+ break;
+#endif
+ default:
+ arch = @symbol(unknown);
+ break;
}
switch (sysInfo.dwProcessorType) {
#ifdef PROCESSOR_INTEL_386
- case PROCESSOR_INTEL_386:
- mach = @symbol(i386);
- break;
+ case PROCESSOR_INTEL_386:
+ mach = @symbol(i386);
+ break;
#endif
#ifdef PROCESSOR_INTEL_486
- case PROCESSOR_INTEL_486:
- mach = @symbol(i486);
- break;
+ case PROCESSOR_INTEL_486:
+ mach = @symbol(i486);
+ break;
#endif
#ifdef PROCESSOR_INTEL_PENTIUM
- case PROCESSOR_INTEL_PENTIUM:
- mach = @symbol(i586);
- break;
+ case PROCESSOR_INTEL_PENTIUM:
+ mach = @symbol(i586);
+ break;
#endif
#ifdef PROCESSOR_INTEL_860
- case PROCESSOR_INTEL_860:
- mach = @symbol(i860);
- break;
+ case PROCESSOR_INTEL_860:
+ mach = @symbol(i860);
+ break;
#endif
#ifdef PROCESSOR_INTEL_IA64
- case PROCESSOR_INTEL_IA64:
- mach = @symbol(ia64);
- break;
+ case PROCESSOR_INTEL_IA64:
+ mach = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R2000
- case PROCESSOR_MIPS_R2000:
- mach = @symbol(r2000);
- break;
+ case PROCESSOR_MIPS_R2000:
+ mach = @symbol(r2000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R3000
- case PROCESSOR_MIPS_R3000:
- mach = @symbol(r3000);
- break;
+ case PROCESSOR_MIPS_R3000:
+ mach = @symbol(r3000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R4000
- case PROCESSOR_MIPS_R4000:
- mach = @symbol(r4000);
- break;
+ case PROCESSOR_MIPS_R4000:
+ mach = @symbol(r4000);
+ break;
#endif
#ifdef PROCESSOR_ALPHA_21064
- case PROCESSOR_ALPHA_21064:
- mach = @symbol(alpha21064);
- break;
+ case PROCESSOR_ALPHA_21064:
+ mach = @symbol(alpha21064);
+ break;
#endif
#ifdef PROCESSOR_ARM720
- case PROCESSOR_ARM720:
- mach = @symbol(arm720);
- break;
+ case PROCESSOR_ARM720:
+ mach = @symbol(arm720);
+ break;
#endif
#ifdef PROCESSOR_ARM820
- case PROCESSOR_ARM820:
- mach = @symbol(arm820);
- break;
+ case PROCESSOR_ARM820:
+ mach = @symbol(arm820);
+ break;
#endif
#ifdef PROCESSOR_ARM920
- case PROCESSOR_ARM920:
- mach = @symbol(arm920);
- break;
+ case PROCESSOR_ARM920:
+ mach = @symbol(arm920);
+ break;
#endif
#ifdef PROCESSOR_ARM_7TDMI
- case PROCESSOR_ARM_7TDMI:
- mach = @symbol(arm70001);
- break;
+ case PROCESSOR_ARM_7TDMI:
+ mach = @symbol(arm70001);
+ break;
#endif
#ifdef PROCESSOR_PPC_601
- case PROCESSOR_PPC_601:
- mach = @symbol(ppc601);
- break;
+ case PROCESSOR_PPC_601:
+ mach = @symbol(ppc601);
+ break;
#endif
#ifdef PROCESSOR_PPC_603
- case PROCESSOR_PPC_603:
- mach = @symbol(ppc603);
- break;
+ case PROCESSOR_PPC_603:
+ mach = @symbol(ppc603);
+ break;
#endif
#ifdef PROCESSOR_PPC_604
- case PROCESSOR_PPC_604:
- mach = @symbol(ppc604);
- break;
+ case PROCESSOR_PPC_604:
+ mach = @symbol(ppc604);
+ break;
#endif
#ifdef PROCESSOR_PPC_620
- case PROCESSOR_PPC_620:
- mach = @symbol(ppc620);
- break;
-#endif
-
- default:
- sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
- mach = __MKSTRING(vsnBuffer);
- break;
+ case PROCESSOR_PPC_620:
+ mach = @symbol(ppc620);
+ break;
+#endif
+
+ default:
+ sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
+ mach = __MKSTRING(vsnBuffer);
+ break;
}
numberOfCPUs = __MKUINT(sysInfo.dwNumberOfProcessors);
%}.
node isNil ifTrue:[
- node := self getHostName.
+ node := self getHostName.
].
dom isNil ifTrue:[
- dom := self getDomainName.
+ dom := self getDomainName.
].
info := IdentityDictionary new.
@@ -13543,139 +13498,176 @@
examples
"
retrieve an existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
+ [exEnd]
retrieve a non-existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
+ [exEnd]
ask a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
- Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNamed:'CurrentVersion').
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
+ Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNamed:'CurrentVersion').
+ [exEnd]
create a sub-key (if not already present):
- [exBegin]
- |k subKey|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- subKey := k createSubKeyNamed:'RegistryDemo'
- [exEnd]
+ [exBegin]
+ |k subKey|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ subKey := k createSubKeyNamed:'RegistryDemo'
+ [exEnd]
change a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
+ [exEnd]
delete a value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k deleteValueNamed:'FooBarBaz'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k deleteValueNamed:'FooBarBaz'.
+ [exEnd]
delete a key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- k deleteSubKeyNamed:'RegistryDemo'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ k deleteSubKeyNamed:'RegistryDemo'.
+ [exEnd]
enumerate keys:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k subKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k subKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
enumerate all keys (recursive):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k allSubKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k allSubKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
fetch value by index:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNameAtIndex:0)
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNameAtIndex:0)
+ [exEnd]
enumerate value names:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesDo:[:nm |
- Transcript showCR:nm.
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesDo:[:nm |
+ Transcript showCR:nm.
+ ]
+ [exEnd]
enumerate values:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesAndValuesDo:[:nm :val |
- Transcript showCR:(nm , ' -> ' , val storeString).
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesAndValuesDo:[:nm :val |
+ Transcript showCR:(nm , ' -> ' , val storeString).
+ ]
+ [exEnd]
search for a value (where does NT store the domain ?):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
- k subKeysDo:[:subKey |
- subKey subKeysDo:[:subSubKey |
- |tcp params|
-
- (subSubKey path asLowercase endsWith:'services') ifTrue:[
- tcp := subSubKey subKeyNamed:'tcpip'.
- tcp notNil ifTrue:[
- params := tcp subKeyNamed:'parameters'.
- params notNil ifTrue:[
- Transcript showCR:'Domain is found in ' , params path ,
- ' value: ' , (params valueNamed:'Domain').
- params close.
- ].
- tcp close.
- ]
- ]
- ]
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
+ k subKeysDo:[:subKey |
+ subKey subKeysDo:[:subSubKey |
+ |tcp params|
+
+ (subSubKey path asLowercase endsWith:'services') ifTrue:[
+ tcp := subSubKey subKeyNamed:'tcpip'.
+ tcp notNil ifTrue:[
+ params := tcp subKeyNamed:'parameters'.
+ params notNil ifTrue:[
+ Transcript showCR:'Domain is found in ' , params path ,
+ ' value: ' , (params valueNamed:'Domain').
+ params close.
+ ].
+ tcp close.
+ ]
+ ]
+ ]
+ ]
+ [exEnd]
+ register an exe for shell-open:
+ [exBegin]
+ |k stx shell open cmd st_af edit st owl list id|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
+ stx := k createSubKeyNamed:'SmalltalkX.exe'.
+ shell := stx createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
+ st_af := k createSubKeyNamed:'st_auto_file'.
+ shell := st_af createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --open ',Character doubleQuote,'%1',Character doubleQuote).
+ edit := shell createSubKeyNamed:'edit'.
+ cmd := edit createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
+ st := k createSubKeyNamed:'.st'.
+ owl := st createSubKeyNamed:'OpenWithList'.
+ list := owl valueNames.
+ (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
+ Transcript showCR:'already registered.'.
+ ] ifFalse:[
+ id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
+ owl valueNamed:id asString put:'SmalltalkX.exe'.
+ ]
+ [exEnd]
+
+
"
@@ -14390,24 +14382,25 @@
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(valueIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
- nameBuffer, &nameSize,
- NULL,
- &valueType,
- NULL, NULL)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- valueName = __MKSTRING(nameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ &valueType,
+ NULL, NULL)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = '\0';
+ valueName = __MKSTRING(nameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ valueName
@@ -14857,12 +14850,12 @@
idx := 0.
[true] whileTrue:[
- valueName := self valueNameAtIndex:idx.
- valueName isNil ifTrue:[
- ^self
- ].
- aBlock value:valueName.
- idx := idx + 1.
+ valueName := self valueNameAtIndex:idx.
+ valueName isNil ifTrue:[
+ ^self
+ ].
+ aBlock value:valueName.
+ idx := idx + 1.
]
! !
@@ -16459,15 +16452,15 @@
!Win32OperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.439 2012/10/29 11:40:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.439 2012/10/29 11:40:57 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp §'
!
version_SVN
- ^ '$Id: Win32OperatingSystem.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+ ^ '$Id: Win32OperatingSystem.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !
--- a/abbrev.stc Wed Nov 28 10:22:05 2012 +0000
+++ b/abbrev.stc Fri Nov 30 17:19:23 2012 +0000
@@ -394,3 +394,7 @@
UnixFileDescriptorHandle UnixFileDescriptorHandle stx:libbasic 'OS-Unix' 0
UnixFileHandle UnixFileHandle stx:libbasic 'OS-Unix' 0
UnixOperatingSystem UnixOperatingSystem stx:libbasic 'OS-Unix' 0
+MethodNotAppropriateError MethodNotAppropriateError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+AbstractClassInstantiationError AbstractClassInstantiationError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+InvalidTypeError InvalidTypeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+
--- a/bc.mak Wed Nov 28 10:22:05 2012 +0000
+++ b/bc.mak Fri Nov 30 17:19:23 2012 +0000
@@ -335,8 +335,10 @@
$(OUTDIR)InvalidCodeError.$(O) InvalidCodeError.$(H): InvalidCodeError.st $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)InvalidModeError.$(O) InvalidModeError.$(H): InvalidModeError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)InvalidOperationError.$(O) InvalidOperationError.$(H): InvalidOperationError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)InvalidTypeError.$(O) InvalidTypeError.$(H): InvalidTypeError.st $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)KeyNotFoundError.$(O) KeyNotFoundError.$(H): KeyNotFoundError.st $(INCLUDE_TOP)\stx\libbasic\NotFoundError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)MallocFailure.$(O) MallocFailure.$(H): MallocFailure.st $(INCLUDE_TOP)\stx\libbasic\AllocationFailure.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)MethodNotAppropriateError.$(O) MethodNotAppropriateError.$(H): MethodNotAppropriateError.st $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)NonBooleanReceiverError.$(O) NonBooleanReceiverError.$(H): NonBooleanReceiverError.st $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)OpenError.$(O) OpenError.$(H): OpenError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)PositionError.$(O) PositionError.$(H): PositionError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -352,6 +354,7 @@
$(OUTDIR)WeakDependencyDictionary.$(O) WeakDependencyDictionary.$(H): WeakDependencyDictionary.st $(INCLUDE_TOP)\stx\libbasic\WeakIdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)WriteError.$(O) WriteError.$(H): WriteError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)WrongProceedabilityError.$(O) WrongProceedabilityError.$(H): WrongProceedabilityError.st $(INCLUDE_TOP)\stx\libbasic\SignalError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AbstractClassInstantiationError.$(O) AbstractClassInstantiationError.$(H): AbstractClassInstantiationError.st $(INCLUDE_TOP)\stx\libbasic\MethodNotAppropriateError.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BadLiteralsError.$(O) BadLiteralsError.$(H): BadLiteralsError.st $(INCLUDE_TOP)\stx\libbasic\InvalidCodeError.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)DecodingError.$(O) DecodingError.$(H): DecodingError.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderError.$(H) $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)EncodingError.$(O) EncodingError.$(H): EncodingError.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderError.$(H) $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/libInit.cc Wed Nov 28 10:22:05 2012 +0000
+++ b/libInit.cc Fri Nov 30 17:19:23 2012 +0000
@@ -1,5 +1,5 @@
/*
- * $Header$
+ * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.186 2012/11/02 15:07:06 cg Exp $
*
* DO NOT EDIT
* automagically generated from the projectDefinition: stx_libbasic.
@@ -302,8 +302,10 @@
_InvalidCodeError_Init(pass,__pRT__,snd);
_InvalidModeError_Init(pass,__pRT__,snd);
_InvalidOperationError_Init(pass,__pRT__,snd);
+_InvalidTypeError_Init(pass,__pRT__,snd);
_KeyNotFoundError_Init(pass,__pRT__,snd);
_MallocFailure_Init(pass,__pRT__,snd);
+_MethodNotAppropriateError_Init(pass,__pRT__,snd);
_NonBooleanReceiverError_Init(pass,__pRT__,snd);
_OpenError_Init(pass,__pRT__,snd);
_PositionError_Init(pass,__pRT__,snd);
@@ -319,6 +321,7 @@
_WeakDependencyDictionary_Init(pass,__pRT__,snd);
_WriteError_Init(pass,__pRT__,snd);
_WrongProceedabilityError_Init(pass,__pRT__,snd);
+_AbstractClassInstantiationError_Init(pass,__pRT__,snd);
_BadLiteralsError_Init(pass,__pRT__,snd);
_DecodingError_Init(pass,__pRT__,snd);
_EncodingError_Init(pass,__pRT__,snd);
@@ -343,6 +346,9 @@
_ImmutableString_Init(pass,__pRT__,snd);
_InvalidEncodingError_Init(pass,__pRT__,snd);
_PipeStream_Init(pass,__pRT__,snd);
+_MethodNotAppropriateError_Init(pass,__pRT__,snd);
+_AbstractClassInstantiationError_Init(pass,__pRT__,snd);
+_InvalidTypeError_Init(pass,__pRT__,snd);
_Symbol_Init(pass,__pRT__,snd);
_Unicode16String_Init(pass,__pRT__,snd);
_MethodWithBreakpoints_Init(pass,__pRT__,snd);
@@ -356,14 +362,19 @@
_UnixOperatingSystem_Init(pass,__pRT__,snd);
#endif /* UNIX */
#ifdef WIN32
-_Win32Process_Init(pass,__pRT__,snd);
_WindowsDesktop_Init(pass,__pRT__,snd);
_PCFilename_Init(pass,__pRT__,snd);
-_Win32Handle_Init(pass,__pRT__,snd);
+_Win32Constants_Init(pass,__pRT__,snd);
_Win32FILEHandle_Init(pass,__pRT__,snd);
-_Win32Constants_Init(pass,__pRT__,snd);
+_Win32Handle_Init(pass,__pRT__,snd);
_Win32OperatingSystem_Init(pass,__pRT__,snd);
+_Win32Process_Init(pass,__pRT__,snd);
#endif /* WIN32 */
+#ifdef VMS
+_OpenVMSFileHandle_Init(pass,__pRT__,snd);
+_OpenVMSFilename_Init(pass,__pRT__,snd);
+_OpenVMSOperatingSystem_Init(pass,__pRT__,snd);
+#endif /* VMS */
__END_PACKAGE__();
--- a/libbasic.rc Wed Nov 28 10:22:05 2012 +0000
+++ b/libbasic.rc Fri Nov 30 17:19:23 2012 +0000
@@ -3,7 +3,7 @@
// automagically generated from the projectDefinition: stx_libbasic.
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 6,2,1,102
+ FILEVERSION 6,2,1,108
PRODUCTVERSION 6,2,2,1
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
BEGIN
VALUE "CompanyName", "eXept Software AG\0"
VALUE "FileDescription", "Smalltalk/X Basic Classes (LIB)\0"
- VALUE "FileVersion", "6.2.1.102\0"
+ VALUE "FileVersion", "6.2.1.108\0"
VALUE "InternalName", "stx:libbasic\0"
VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
VALUE "ProductName", "Smalltalk/X\0"
VALUE "ProductVersion", "6.2.2.1\0"
- VALUE "ProductDate", "Thu, 18 Oct 2012 13:48:42 GMT\0"
+ VALUE "ProductDate", "Fri, 02 Nov 2012 15:04:42 GMT\0"
END
END
--- a/stx_libbasic.st Wed Nov 28 10:22:05 2012 +0000
+++ b/stx_libbasic.st Fri Nov 30 17:19:23 2012 +0000
@@ -480,6 +480,9 @@
ImmutableString
InvalidEncodingError
PipeStream
+ MethodNotAppropriateError
+ AbstractClassInstantiationError
+ InvalidTypeError
Symbol
Unicode16String
#'CharacterEncoderImplementations::EBCDIC'
@@ -567,13 +570,13 @@
!stx_libbasic class methodsFor:'documentation'!
version
- ^ '$Id: stx_libbasic.st 10860 2012-10-31 17:49:25Z vranyj1 $'
+ ^ '$Id: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1 $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.101 2012/07/18 17:13:14 cg Exp §'
+ ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.101 2012/07/18 17:13:14 cg Exp '
!
version_SVN
- ^ '$Id:: stx_libbasic.st 10860 2012-10-31 17:49:25Z vranyj1 $'
+ ^ '$Id:: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1 $'
! !