--- a/AbstractTime.st Thu Aug 19 21:39:34 2010 +0100
+++ b/AbstractTime.st Thu Aug 26 11:12:57 2010 +0100
@@ -1154,16 +1154,17 @@
!AbstractTime class methodsFor:'documentation'!
version
- ^ '$Id: AbstractTime.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: AbstractTime.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.68 2010/03/31 13:52:36 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.70 2010/08/19 11:20:32 cg Exp '
!
version_SVN
- ^ '$Id: AbstractTime.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: AbstractTime.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/ArithmeticValue.st Thu Aug 19 21:39:34 2010 +0100
+++ b/ArithmeticValue.st Thu Aug 26 11:12:57 2010 +0100
@@ -203,6 +203,7 @@
^ self == ArithmeticValue
! !
+
!ArithmeticValue methodsFor:'arithmetic'!
* something
@@ -767,6 +768,15 @@
^ aShortFloat retry:#= coercing:self
!
+integerQuotientFromInteger:anInteger
+ "anInteger does not know how to divide by the receiver -
+ retry the operation by coercing to higher generality"
+
+ ^ anInteger retry:#// coercing:self
+
+ "Created: / 09-08-2010 / 19:49:26 / cg"
+!
+
lessFromFixedPoint:aFixedPoint
"the receiver does not know how to compare to a fixedPoint number -
retry the operation by coercing to higher generality"
@@ -822,6 +832,15 @@
"Modified: 17.4.1996 / 12:33:33 / cg"
!
+moduluFromInteger:anInteger
+ "anInteger does not know how to divide by the receiver -
+ retry the operation by coercing to higher generality"
+
+ ^ anInteger retry:#\\ coercing:self
+
+ "Created: / 09-08-2010 / 19:51:45 / cg"
+!
+
productFromComplex:aComplex
"the receiver does not know how to multiply a complex -
retry the operation by coercing to higher generality"
@@ -1314,15 +1333,15 @@
!ArithmeticValue class methodsFor:'documentation'!
version
- ^ '$Id: ArithmeticValue.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: ArithmeticValue.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.86 2010/08/02 11:33:27 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.87 2010/08/09 17:52:46 cg Exp '
!
version_SVN
- ^ '$Id: ArithmeticValue.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: ArithmeticValue.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
ArithmeticValue initialize!
@@ -1330,3 +1349,4 @@
+
--- a/Block.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Block.st Thu Aug 26 11:12:57 2010 +0100
@@ -548,7 +548,6 @@
"Created: 15.11.1996 / 11:38:37 / cg"
! !
-
!Block methodsFor:'accessing'!
home
@@ -606,7 +605,6 @@
^ nargs
! !
-
!Block methodsFor:'compatibility-Cola & Pepsi'!
arity
@@ -2015,15 +2013,14 @@
exceptionBlock's value is returned. The receiver's code must be prepared
for premature returning (by adding ensure blocks, as required)"
- |showStopper me signal retVal done|
+ |showStopper me retVal done|
done := false.
me := Processor activeProcess.
- signal := Signal new notifierString:'timeout'.
- showStopper := [ done ifFalse:[ me interruptWith:[ done ifFalse:[ signal raise ]] ]].
-
- signal handle:[:ex |
+ showStopper := [ done ifFalse:[ me interruptWith:[ done ifFalse:[ TimeoutNotification raiseRequest ]] ]].
+
+ TimeoutNotification handle:[:ex |
retVal := exceptionBlock value.
] do:[
[
@@ -2048,7 +2045,7 @@
"
"Modified: / 21-05-2010 / 12:19:57 / sr"
- "Modified: / 01-07-2010 / 12:42:54 / cg"
+ "Modified: / 20-08-2010 / 12:16:58 / cg"
! !
!Block methodsFor:'exception handling private'!
@@ -2928,15 +2925,15 @@
!Block class methodsFor:'documentation'!
version
- ^ '$Id: Block.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Block.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Block.st,v 1.181 2010/07/01 10:43:17 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Block.st,v 1.182 2010/08/20 10:17:59 cg Exp '
!
version_SVN
- ^ '$Id: Block.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Block.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Block initialize!
@@ -2945,3 +2942,4 @@
+
--- a/CharacterArray.st Thu Aug 19 21:39:34 2010 +0100
+++ b/CharacterArray.st Thu Aug 26 11:12:57 2010 +0100
@@ -4122,6 +4122,39 @@
! !
+!CharacterArray methodsFor:'matching - regex'!
+
+hasAnyRegexMatches: rxString
+ "return true, if any substrings in the receiver, matches the regular expression in rxString"
+
+ rxString asRegex matchesIn:self do:[:m | ^ true].
+ ^ false
+
+ "
+ '1234 abcd 3456 defg' hasAnyRegexMatches:'[0-9]+'
+ 'abcd 3456 defg' hasAnyRegexMatches:'[0-9]+'
+ 'abcd xxax defg' hasAnyRegexMatches:'[0-9]+'
+ "
+
+ "Created: / 13-08-2010 / 17:09:05 / sr"
+!
+
+hasAnyRegexMatchesIgnoringCase: rxString
+ "return true, if any substrings in the receiver, matches the regular expression in rxString"
+
+ rxString asRegexIgnoringCase matchesIn:self do:[:m | ^ true].
+ ^ false
+
+ "
+ 'ABCD XYZ DEFG' hasAnyRegexMatchesIgnoringCase:'[a-z]+'
+ 'ABCD XYZ DEFG' hasAnyRegexMatches:'[a-z]+'
+
+ '1234 abcd 3456 defg' hasAnyRegexMatchesIgnoringCase:'[a-z]+'
+ 'abcd 3456 defg' hasAnyRegexMatchesIgnoringCase:'[a-z]+'
+ "
+
+ "Created: / 13-08-2010 / 17:11:11 / sr"
+! !
!CharacterArray methodsFor:'padded copying'!
@@ -4741,56 +4774,64 @@
(next == $%) ifTrue:[
aStream nextPut:$%.
] ifFalse:[
- next == $< ifTrue:[
- idx2 := self indexOf:$> startingAt:idx+2.
- key := self copyFrom:idx+2 to:idx2-1.
- idx := idx2 - 1.
- key := key asSymbolIfInterned.
- (#(cr tab nl return lf ff null) includesIdentical:key) ifTrue:[
- aStream nextPut:(Character perform:key).
- ].
- ] ifFalse:[
- (next between:$1 and:$9) ifTrue:[
- v := argArrayOrDictionary at:(next digitValue) ifAbsent:nil
+ next == $< ifTrue:[
+ idx2 := self indexOf:$> startingAt:idx+2.
+ key := self copyFrom:idx+2 to:idx2-1.
+ idx := idx2 - 1.
+ key := key asSymbolIfInterned.
+ (#(cr tab nl return lf ff null) includesIdentical:key) ifTrue:[
+ aStream nextPut:(Character perform:key).
+ ].
] ifFalse:[
- next == $( ifTrue:[
- idx2 := self indexOf:$) startingAt:idx+2.
- key := self copyFrom:idx+2 to:idx2-1.
- idx := idx2 - 1.
- key := key asSymbolIfInterned ? key.
- (argArrayOrDictionary includesKey:key) ifTrue:[
- v := argArrayOrDictionary at:key
- ] ifFalse:[
- (key size == 1 and:[ argArrayOrDictionary includesKey:(key at:1)]) ifTrue:[
- v := argArrayOrDictionary at:(key at:1)
+ (next between:$1 and:$9) ifTrue:[
+ v := argArrayOrDictionary at:(next digitValue) ifAbsent:nil
+ ] ifFalse:[
+ next == $( ifTrue:[
+ idx2 := self indexOf:$) startingAt:idx+2.
+ key := self copyFrom:idx+2 to:idx2-1.
+ idx := idx2 - 1.
+ (argArrayOrDictionary includesKey:key) ifTrue:[
+ v := argArrayOrDictionary at:key
] ifFalse:[
- key isNumeric ifTrue:[
- key := Integer readFrom:key onError:nil.
+ key := key asSymbolIfInterned ? key.
+ (argArrayOrDictionary includesKey:key) ifTrue:[
+ v := argArrayOrDictionary at:key
+ ] ifFalse:[
+ (key size == 1 and:[ argArrayOrDictionary includesKey:(key at:1)]) ifTrue:[
+ v := argArrayOrDictionary at:(key at:1)
+ ] ifFalse:[
+ key isNumeric ifTrue:[
+ key := Integer readFrom:key onError:nil.
+ ].
+ v := argArrayOrDictionary at:key ifAbsent:nil
+ ]
].
- v := argArrayOrDictionary at:key ifAbsent:nil
- ]
+ ].
+ ] ifFalse:[
+ next isLetterOrDigit ifTrue:[
+ "so next is a non-numeric single character."
+ v := argArrayOrDictionary
+ at:next
+ ifAbsent:[
+ "try symbol instead of character"
+ argArrayOrDictionary
+ at:next asSymbol
+ ifAbsent:[String with:$% with:next].
+ ].
+ ] ifFalse:[
+ v := String with:$% with:next.
+ ].
+ ]
+ ].
+ v notNil ifTrue:[
+ v isBlock ifTrue:[
+ v := v value
].
- ] ifFalse:[
- "so next is a non-numeric single character.
- This would not work with Arrays, since they have integer indizes"
- argArrayOrDictionary isSequenceable ifFalse:[
- v := argArrayOrDictionary at:next ifAbsent:[
- "try symbol instead of character"
- argArrayOrDictionary at:next asSymbol ifAbsent:[String with:$% with:next].
- ].
- ] ifTrue:[
- v := String with:$% with:next. "No match, keep original sequence"
- ].
- ]
- ].
- v notNil ifTrue:[
- v isBlock ifTrue:[
- v := v value
+
+ v printOn:aStream.
].
-
- v printOn:aStream.
- ].
- ]].
+ ]
+ ].
start := idx + 2
].
@@ -4825,6 +4866,8 @@
'hello %1 %a %b' expandPlaceholdersWith:dict on:s.
].
"
+
+ "Modified: / 12-08-2010 / 13:23:10 / cg"
!
firstLine
@@ -5821,15 +5864,15 @@
!CharacterArray class methodsFor:'documentation'!
version
- ^ '$Id: CharacterArray.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: CharacterArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.433 2010/05/11 17:14:29 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.437 2010/08/13 15:11:58 sr Exp '
!
version_SVN
- ^ '$Id: CharacterArray.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: CharacterArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
CharacterArray initialize!
@@ -5838,3 +5881,5 @@
+
+
--- a/Collection.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Collection.st Thu Aug 26 11:12:57 2010 +0100
@@ -458,6 +458,39 @@
self emptyCollectionError.
!
+at:aKey ifNilOrAbsentPut:valueBlock
+ "try to fetch the element at aKey. If either the key is invalid (as in a Dictionary)
+ or there is no element stored under that key (as in an Array), set the element
+ from the valueBlock and return it.
+ Useful for lazy initialization of collections."
+
+ |val|
+
+ val := self at:aKey ifAbsent:[ self at:aKey put:valueBlock value ].
+ val isNil ifTrue:[
+ self at:aKey put:(val := valueBlock value).
+ ].
+ ^ val
+
+ "
+ |d|
+
+ d := Dictionary new.
+ d at:#foo ifNilOrAbsentPut:[ 'hello' ].
+ d
+ "
+
+ "
+ |a|
+
+ a := Array new:10.
+ a at:1 ifNilOrAbsentPut:[ 'hello' ].
+ a
+ "
+
+ "Created: / 24-08-2010 / 17:07:21 / cg"
+!
+
atAll:indexCollection put:anObject
"put anObject into all indexes from indexCollection in the receiver.
This abstract implementation requires that the receiver supports
@@ -1233,8 +1266,8 @@
!
sum:aBlock
- "for each element in the receiver, evaluate the argument, aBlock
- and sum up the results. Return the total sum or 0 for an empty collection.
+ "for each element in the receiver, evaluate the argument, aBlock and sum up the results.
+ Return the total sum or 0 for an empty collection.
Similar to (self collect...) sum, but avoids creation of an intermediate collection."
|sum|
@@ -1255,6 +1288,8 @@
((1 to:10) collect:[:n | n squared]) sum
((1 to:10) sum:[:n | n squared])
"
+
+ "Modified: / 23-08-2010 / 18:19:42 / cg"
! !
!Collection methodsFor:'converting'!
@@ -2267,6 +2302,14 @@
"
!
+keysDo:aBlock
+ "evaluate the argument, aBlock for every key in the collection."
+
+ self keysAndValuesDo:[:k :v | aBlock value:k]
+
+ "Created: / 24-08-2010 / 10:12:14 / cg"
+!
+
map:selector
"for lisp fans - similar to collect"
@@ -3167,6 +3210,32 @@
"Modified: / 11-07-2010 / 17:05:25 / cg"
!
+maxApplying:aBlock
+ "return the maximum value from applying aBlock to each element in the receiver collection,
+ using < to compare elements.
+ Raises an error, if the receiver is empty."
+
+ self emptyCheck.
+
+ ^ self
+ inject:nil
+ into:[:maxSoFar :this |
+ |v|
+
+ v := aBlock value:this.
+ (maxSoFar isNil or:[maxSoFar < v])
+ ifTrue:[v]
+ ifFalse:[maxSoFar]
+ ]
+
+ "
+ #(15 1 -9 -20 10 5) max -> 15
+ #(15 1 -9 -20 10 5) maxApplying:[:el | el abs] -> 20
+ "
+
+ "Created: / 23-08-2010 / 11:02:50 / cg"
+!
+
min
"return the minimum value in the receiver collection,
using < to compare elements.
@@ -3192,6 +3261,32 @@
"Modified: / 11-07-2010 / 17:06:38 / cg"
!
+minApplying:aBlock
+ "return the minimum value from applying aBlock to each element in the receiver collection,
+ using < to compare elements.
+ Raises an error, if the receiver is empty."
+
+ self emptyCheck.
+
+ ^ self
+ inject:nil
+ into:[:minSoFar :this |
+ |v|
+
+ v := aBlock value:this.
+ (minSoFar isNil or:[v < minSoFar])
+ ifTrue:[v]
+ ifFalse:[minSoFar]
+ ]
+
+ "
+ #(15 -1 -9 10 5) min -> -9
+ #(15 -1 -9 10 5) minApplying:[:el | el abs] -> 1
+ "
+
+ "Created: / 23-08-2010 / 11:01:42 / cg"
+!
+
minMax
"return the minimum and maximum values in the receiver collection
as a two element array, using #< to compare elements.
@@ -3736,15 +3831,15 @@
!Collection class methodsFor:'documentation'!
version
- ^ '$Id: Collection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Collection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.246 2010/08/07 17:18:25 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.250 2010/08/24 15:10:11 cg Exp '
!
version_SVN
- ^ '$Id: Collection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Collection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Collection initialize!
@@ -3752,3 +3847,4 @@
+
--- a/Context.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Context.st Thu Aug 26 11:12:57 2010 +0100
@@ -12,11 +12,11 @@
"{ Package: 'stx:libbasic' }"
Object variableSubclass:#Context
- instanceVariableNames:'flags sender* home receiver selector searchClass method lineNr
- retvalTemp handle*'
- classVariableNames:'InvalidReturnSignal SingleStepInterruptRequest'
- poolDictionaries:''
- category:'Kernel-Methods'
+ instanceVariableNames:'flags sender* home receiver selector searchClass method lineNr
+ retvalTemp handle*'
+ classVariableNames:'InvalidReturnSignal SingleStepInterruptRequest'
+ poolDictionaries:''
+ category:'Kernel-Methods'
!
!Context class methodsFor:'documentation'!
@@ -502,8 +502,13 @@
method
"return the method for which the receiver was created.
- To save time during normal execution, this information is not held in the
- context, but computed here on request."
+ Change with ST/X vsn 6:
+ In older versions, the method was not stored in the context, but a lookup
+ was simulated using selector and class.
+ (which occasionally returned the wrong method - especially in the debugger,
+ when the debugged method was changed).
+ This has been changed - especially to support Jan's meta-object protocol.
+ It is now stored in the context"
|c sender sendersSelector m|
@@ -2390,15 +2395,15 @@
!Context class methodsFor:'documentation'!
version
- ^ '$Id: Context.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Context.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Context.st,v 1.157 2010/04/07 17:36:33 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Context.st,v 1.158 2010/08/14 10:56:21 cg Exp '
!
version_SVN
- ^ '$Id: Context.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Context.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Context initialize!
@@ -2407,3 +2412,4 @@
+
--- a/Dictionary.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Dictionary.st Thu Aug 26 11:12:57 2010 +0100
@@ -1546,7 +1546,7 @@
!
keysDo:aBlock
- "perform the block for all keys in the collection.
+ "evaluate the argument, aBlock for every key in the collection.
See also:
#associationsDo: (which passes key-value associations)
@@ -1569,6 +1569,8 @@
aBlock value:key
]
]
+
+ "Modified: / 24-08-2010 / 10:13:58 / cg"
!
keysSelect:aBlock
@@ -2055,18 +2057,19 @@
!Dictionary class methodsFor:'documentation'!
version
- ^ '$Id: Dictionary.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Dictionary.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.101 2010/02/26 10:48:56 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.102 2010/08/24 08:28:27 cg Exp '
!
version_SVN
- ^ '$Id: Dictionary.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Dictionary.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Dictionary initialize!
+
--- a/GenericException.st Thu Aug 19 21:39:34 2010 +0100
+++ b/GenericException.st Thu Aug 26 11:12:57 2010 +0100
@@ -209,9 +209,11 @@
<context: #return>
^ (self newException
- suspendedContext:thisContext sender
- errorString:messageText)
- raiseSignal.
+ suspendedContext:thisContext sender
+ errorString:messageText)
+ raiseSignal.
+
+ "Modified: / 10-08-2010 / 09:41:56 / cg"
! !
!GenericException class methodsFor:'Compatibility-Squeak'!
@@ -541,13 +543,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender)
- raise
-
- "Modified: / 2.5.1996 / 16:36:23 / cg"
- "Modified: / 5.3.1998 / 16:44:36 / stefan"
- "Created: / 23.7.1999 / 14:07:17 / stefan"
+ ^ self basicNew
+ raiseIn:thisContext sender
+
+ "Created: / 23-07-1999 / 14:07:17 / stefan"
+ "Modified: / 10-08-2010 / 09:30:42 / cg"
!
raiseErrorString:aString
@@ -557,13 +557,12 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender errorString:aString)
- raise.
-
- "Modified: / 9.5.1996 / 15:17:59 / cg"
- "Modified: / 12.3.1998 / 15:15:22 / stefan"
- "Created: / 23.7.1999 / 14:07:33 / stefan"
+ ^ self basicNew
+ raiseErrorString:aString
+ in:thisContext sender
+
+ "Created: / 23-07-1999 / 14:07:33 / stefan"
+ "Modified: / 10-08-2010 / 09:34:37 / cg"
!
raiseErrorString:aString in:aContext
@@ -573,13 +572,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:aContext errorString:aString)
- raise.
-
- "Modified: / 9.5.1996 / 15:17:59 / cg"
- "Modified: / 12.3.1998 / 15:15:22 / stefan"
- "Created: / 23.7.1999 / 14:07:33 / stefan"
+ ^ self basicNew
+ raiseErrorString:aString in:aContext
+
+ "Created: / 23-07-1999 / 14:07:33 / stefan"
+ "Modified: / 10-08-2010 / 09:35:37 / cg"
!
raiseFrom:something
@@ -605,13 +602,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender)
- raiseRequest.
-
- "Modified: / 2.5.1996 / 16:36:52 / cg"
- "Modified: / 5.3.1998 / 16:50:46 / stefan"
- "Created: / 23.7.1999 / 14:08:24 / stefan"
+ ^ self basicNew
+ raiseRequestIn:thisContext sender
+
+ "Created: / 23-07-1999 / 14:08:24 / stefan"
+ "Modified: / 10-08-2010 / 09:37:06 / cg"
!
raiseRequestErrorString:aString
@@ -621,9 +616,10 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender errorString:aString)
- raiseRequest
+ ^ self basicNew
+ raiseRequestErrorString:aString in:thisContext sender
+
+ "Modified: / 10-08-2010 / 09:40:38 / cg"
!
raiseRequestFrom:something
@@ -649,13 +645,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender parameter:aParameter)
- raiseRequest.
-
- "Modified: / 9.5.1996 / 15:13:20 / cg"
- "Modified: / 12.3.1998 / 15:16:57 / stefan"
- "Created: / 23.7.1999 / 14:08:48 / stefan"
+ ^ self basicNew
+ raiseRequestWith:aParameter in:thisContext sender
+
+ "Created: / 23-07-1999 / 14:08:48 / stefan"
+ "Modified: / 10-08-2010 / 09:57:14 / cg"
!
raiseRequestWith:aParameter errorString:aString
@@ -665,13 +659,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender parameter:aParameter errorString:aString)
- raiseRequest
-
- "Modified: / 9.5.1996 / 15:13:35 / cg"
- "Modified: / 12.3.1998 / 15:17:52 / stefan"
- "Created: / 23.7.1999 / 14:08:57 / stefan"
+ ^ self basicNew
+ raiseRequestWith:aParameter errorString:aString in:thisContext sender
+
+ "Created: / 23-07-1999 / 14:08:57 / stefan"
+ "Modified: / 10-08-2010 / 09:56:55 / cg"
!
raiseRequestWith:aParameter errorString:aString in:aContext
@@ -683,13 +675,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter errorString:aString)
- raiseRequest
-
- "Modified: / 26.7.1996 / 16:29:27 / cg"
- "Modified: / 12.3.1998 / 15:18:34 / stefan"
- "Created: / 23.7.1999 / 14:09:07 / stefan"
+ ^ self basicNew
+ raiseRequestWith:aParameter errorString:aString in:aContext
+
+ "Created: / 23-07-1999 / 14:09:07 / stefan"
+ "Modified: / 10-08-2010 / 09:56:36 / cg"
!
raiseRequestWith:aParameter in:aContext
@@ -700,9 +690,10 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter)
- raiseRequest
+ ^ self basicNew
+ raiseRequestWith:aParameter in:aContext
+
+ "Modified: / 10-08-2010 / 09:56:12 / cg"
!
raiseSignal
@@ -791,13 +782,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender parameter:aParameter)
- raise.
-
- "Modified: / 9.5.1996 / 15:14:24 / cg"
- "Modified: / 12.3.1998 / 15:19:11 / stefan"
- "Created: / 23.7.1999 / 14:09:27 / stefan"
+ ^ self basicNew
+ raiseWith:aParameter in:thisContext sender
+
+ "Created: / 23-07-1999 / 14:09:27 / stefan"
+ "Modified: / 10-08-2010 / 09:51:11 / cg"
!
raiseWith:aParameter errorString:aString
@@ -808,13 +797,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:thisContext sender parameter:aParameter errorString:aString)
- raise.
-
- "Modified: / 9.5.1996 / 15:14:32 / cg"
- "Modified: / 12.3.1998 / 15:19:40 / stefan"
- "Created: / 23.7.1999 / 14:09:36 / stefan"
+ ^ self basicNew
+ raiseWith:aParameter errorString:aString in:thisContext sender.
+
+ "Created: / 23-07-1999 / 14:09:36 / stefan"
+ "Modified: / 10-08-2010 / 09:52:59 / cg"
!
raiseWith:aParameter errorString:aString in:aContext
@@ -827,13 +814,11 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter errorString:aString)
- raise.
-
- "Modified: / 26.7.1996 / 16:29:42 / cg"
- "Modified: / 12.3.1998 / 15:20:12 / stefan"
- "Created: / 23.7.1999 / 14:09:46 / stefan"
+ ^ self basicNew
+ raiseWith:aParameter errorString:aString in:aContext.
+
+ "Created: / 23-07-1999 / 14:09:46 / stefan"
+ "Modified: / 10-08-2010 / 09:52:10 / cg"
!
raiseWith:aParameter in:aContext
@@ -845,9 +830,10 @@
<context: #return>
<resource: #skipInDebuggersWalkBack>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter)
- raise.
+ ^ self basicNew
+ raiseWith:aParameter in:aContext
+
+ "Modified: / 10-08-2010 / 09:52:38 / cg"
!
signalWith:messageText
@@ -1172,9 +1158,12 @@
!
creator
- "return the creator of the exception"
-
- ^ signal
+ "return the creator of the exception;
+ same as signal, for compatibility"
+
+ ^ signal ? self class
+
+ "Modified: / 10-08-2010 / 09:23:18 / cg"
!
errorString
@@ -1359,15 +1348,9 @@
signal
"return the signal, that caused the exception"
- ^ signal
-!
-
-signal:aSignal
- "set the signal, that caused the exception"
-
- signal := aSignal
-
- "Created: / 5.3.1998 / 16:02:46 / stefan"
+ ^ signal ? self class
+
+ "Modified: / 10-08-2010 / 09:22:33 / cg"
!
suspendedContext
@@ -1446,9 +1429,11 @@
Subclasses may redefine this."
proceedable notNil ifTrue:[^ proceedable].
- ^ signal mayProceed.
-
- "Created: / 23.7.1999 / 14:48:26 / stefan"
+ signal notNil ifTrue:[^ signal mayProceed].
+ ^ self class mayProceed.
+
+ "Created: / 23-07-1999 / 14:48:26 / stefan"
+ "Modified: / 10-08-2010 / 09:39:15 / cg"
!
noHandler
@@ -1849,6 +1834,22 @@
!GenericException methodsFor:'private'!
+checkProceedable
+ "helper for all raiseRequest methods"
+
+ self mayProceed ifFalse:[
+ StrictRaising ifTrue:[
+ "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
+ WrongProceedabilityError raiseRequestWith:signal
+ ] ifFalse:[
+ self class name infoPrint.
+ ' [warning]: raised with wrong proceedability' infoPrintCR.
+ ]
+ ].
+
+ "Created: / 10-08-2010 / 09:54:41 / cg"
+!
+
doCallAction
"call the action proper
- needed an extra method to have a raise-marked context around
@@ -1904,10 +1905,13 @@
originator isNil ifTrue:[
originator := suspendedContext homeReceiver
].
-
- signal isExceptionCreator ifFalse:[
- "not an exception or Signal - there is something wrong here..."
- GenericException raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+ signal isNil ifTrue:[
+ signal := self class
+ ] ifFalse:[
+ signal isExceptionCreator ifFalse:[
+ "not an exception or Signal - there is something wrong here..."
+ Error "GenericException" raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+ ]
].
"now, start searching for a handler.
@@ -1977,9 +1981,9 @@
"
^ self doCallAction
- "Created: / 12.5.1996 / 15:09:39 / cg"
- "Modified: / 9.11.1997 / 14:48:44 / cg"
- "Modified: / 3.8.1999 / 11:20:41 / stefan"
+ "Created: / 12-05-1996 / 15:09:39 / cg"
+ "Modified: / 03-08-1999 / 11:20:41 / stefan"
+ "Modified: / 10-08-2010 / 09:26:14 / cg"
! !
!GenericException methodsFor:'raising'!
@@ -2001,6 +2005,37 @@
"Modified: / 3.8.1999 / 13:33:01 / stefan"
!
+raiseErrorString:aString in:aContext
+ "raise the signal nonproceedable.
+ The argument, aString is used as messageText"
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ messageText := aString.
+ proceedable := false.
+
+ ^ self doRaise
+
+ "Created: / 10-08-2010 / 09:33:43 / cg"
+!
+
+raiseIn:aContext
+ "actually raise a non-proceedable exception"
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ proceedable := false.
+
+ ^ self doRaise
+
+ "Modified: / 03-08-1999 / 13:33:01 / stefan"
+ "Created: / 10-08-2010 / 09:30:19 / cg"
+!
+
raiseRequest
"actually raise a proceedable exception."
@@ -2011,21 +2046,48 @@
suspendedContext := raiseContext sender
].
- self mayProceed ifFalse:[
- StrictRaising ifTrue:[
- "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
- WrongProceedabilityError raiseRequestWith:signal
- ] ifFalse:[
- self class name infoPrint.
- ' [warning]: raised with wrong proceedability' infoPrintCR.
- ]
- ].
+ self checkProceedable.
proceedable := true.
^ self doRaise
"Modified: / 04-08-1999 / 08:05:12 / stefan"
- "Modified: / 10-07-2010 / 19:48:42 / cg"
+ "Modified: / 10-08-2010 / 09:55:00 / cg"
+!
+
+raiseRequestErrorString:errorString in:aContext
+ "actually raise a proceedable exception."
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ messageText := errorString.
+
+ self checkProceedable.
+
+ proceedable := true.
+ ^ self doRaise
+
+ "Modified: / 04-08-1999 / 08:05:12 / stefan"
+ "Created: / 10-08-2010 / 09:40:05 / cg"
+!
+
+raiseRequestIn:aContext
+ "actually raise a proceedable exception."
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+
+ self checkProceedable.
+
+ proceedable := true.
+ ^ self doRaise
+
+ "Modified: / 04-08-1999 / 08:05:12 / stefan"
+ "Created: / 10-08-2010 / 09:36:45 / cg"
!
raiseRequestWith:aParameter errorString:aString
@@ -2041,6 +2103,43 @@
"Created: / 23.7.1999 / 14:08:57 / stefan"
!
+raiseRequestWith:aParameter errorString:aString in:aContext
+ "actually raise a proceedable exception."
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ parameter := aParameter.
+ messageText := aString.
+
+ self checkProceedable.
+
+ proceedable := true.
+ ^ self doRaise
+
+ "Modified: / 04-08-1999 / 08:05:12 / stefan"
+ "Created: / 10-08-2010 / 09:55:48 / cg"
+!
+
+raiseRequestWith:aParameter in:aContext
+ "actually raise a proceedable exception."
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ parameter := aParameter.
+
+ self checkProceedable.
+
+ proceedable := true.
+ ^ self doRaise
+
+ "Modified: / 04-08-1999 / 08:05:12 / stefan"
+ "Created: / 10-08-2010 / 09:53:51 / cg"
+!
+
raiseSignal
"actually raise an exception (whatever the proceedability is)."
@@ -2064,6 +2163,39 @@
^ (self
suspendedContext:thisContext sender parameter:aParameter errorString:aString)
raise.
+!
+
+raiseWith:aParameter errorString:aString in:aContext
+ "raise the signal nonproceedable.
+ The argument, aString is used as messageText"
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ messageText := aString.
+ parameter := aParameter.
+ proceedable := false.
+
+ ^ self doRaise
+
+ "Created: / 10-08-2010 / 09:51:51 / cg"
+!
+
+raiseWith:aParameter in:aContext
+ "raise the signal nonproceedable.
+ The argument, aString is used as messageText"
+
+ <context: #return>
+
+ raiseContext := thisContext.
+ suspendedContext := aContext.
+ parameter := aParameter.
+ proceedable := false.
+
+ ^ self doRaise
+
+ "Created: / 10-08-2010 / 09:50:54 / cg"
! !
!GenericException methodsFor:'setup'!
@@ -2133,18 +2265,19 @@
!GenericException class methodsFor:'documentation'!
version
- ^ '$Id: GenericException.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: GenericException.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.125 2010/07/10 17:49:23 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.126 2010/08/10 08:34:53 cg Exp '
!
version_SVN
- ^ '$Id: GenericException.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: GenericException.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
GenericException initialize!
+
--- a/InlineObjectClassDescription.st Thu Aug 19 21:39:34 2010 +0100
+++ b/InlineObjectClassDescription.st Thu Aug 26 11:12:57 2010 +0100
@@ -42,14 +42,25 @@
a classes name is asked for."
^ #'Inline Object'
+!
+
+nameSpace
+ ^ nil
+
+ "Created: / 13-08-2010 / 18:23:33 / cg"
! !
!InlineObjectClassDescription class methodsFor:'documentation'!
version
- ^ '$Id: InlineObjectClassDescription.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+ ^ '$Id: InlineObjectClassDescription.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_SVN
- ^ '$Id: InlineObjectClassDescription.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+ ^ '$Id: InlineObjectClassDescription.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+ ^ '§Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010/08/13 16:57:49 cg Exp §'
! !
+
--- a/Integer.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Integer.st Thu Aug 26 11:12:57 2010 +0100
@@ -1139,6 +1139,7 @@
^ self == Integer
! !
+
!Integer methodsFor:'Compatibility-Dolphin'!
& aNumber
@@ -2572,7 +2573,11 @@
!
binco:kIn
+ "an alternative name for the binomial coefficient for squeak compatibility"
+
^ self binomialCoefficient:kIn
+
+ "Modified: / 17-08-2010 / 17:29:07 / cg"
!
binomialCoefficient:kIn
@@ -2806,12 +2811,12 @@
fib_helper
"compute the fibionacci number for the receiver.
- Fib(n) = Fib(n-1) + Fib(n-2)
-
- Knuth:
- Fib(n+m) = Fib(m) * Fib(n+1) + Fib(m-1) * Fib(n)
-
- This is about 3 times faster than fib_iterative.
+ Fib(n) = Fib(n-1) + Fib(n-2)
+
+ Knuth:
+ Fib(n+m) = Fib(m) * Fib(n+1) + Fib(m-1) * Fib(n)
+
+ This is about 3 times faster than fib_iterative.
"
|fibUsingDict dict|
@@ -2819,61 +2824,61 @@
dict := Dictionary new:100.
fibUsingDict := [:x |
- |n fib fibN fibNp1 fibNm1 fibXm1 fibXm2 fibXp1|
-
- x <= 30 ifTrue:[
- "/ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
- fib := #(1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
- ) at:x
- ] ifFalse:[
- fib := dict at:x ifAbsent:nil.
- fib isNil ifTrue:[
- fibXm1 := dict at:(x-1) ifAbsent:nil.
- fibXm1 notNil ifTrue:[
- fibXm2 := dict at:(x-2) ifAbsent:nil.
- fibXm2 notNil ifTrue:[
- fib := fibXm1 + fibXm2.
- ] ifFalse:[
- fibXp1 := dict at:(x+1) ifAbsent:nil.
- fibXp1 notNil ifTrue:[
- fib := fibXp1 - fibXm1.
- ]
- ]
- ].
-
- fib isNil ifTrue:[
- n := x // 2.
- x odd ifTrue:[
- "/ m is set to n+1; therefore:
- "/ Fib(x) = Fib(n+n+1) ; x odd; setting n = (x-1)/2
- "/ using Knuth:
- "/ Fib(n+n+1) = Fib(n+1) * Fib(n+1) + Fib(n+1-1) * Fib(n)
- "/ = (Fib(n+1) ^ 2) + (Fib(n) ^ 2)
- fibN := fibUsingDict value:n.
- fibNp1 := fibUsingDict value:(n+1).
- fib := fibN squared + fibNp1 squared
- ] ifFalse:[
- "/ as
- "/ Fib(n+1) = Fib(n) + Fib(n-1)
- "/ therefore:
- "/ Fib(n) = Fib(n+1) - Fib(n-1)
- "/ and, since n is even, n+1 and n-1 are odd, and can be computed as above.
- "/ This gives us:
- "/ Fib(x) = Fib(x+1) - Fib(x-1) ; x even; setting n = x/2
- "/ = Fib(n+n+1) - Fib(n+n-1)
- "/ = Fib(n+n+1) - Fib((n-1)+(n-1)+1)
- "/ = ((Fib(n+1)^2) + (Fib(n)^2)) - ((Fib((n-1)+1)^2) + (Fib((n-1))^2))
- "/ = (Fib(n+1)^2) + (Fib(n)^2) - (Fib(n)^2) - (Fib((n-1))^2)
- "/ = (Fib(n+1)^2) - (Fib((n-1))^2)
- fibNm1 := fibUsingDict value:(n-1).
- fibNp1 := fibUsingDict value:(n+1).
- fib := fibNp1 squared - fibNm1 squared
- ].
- ].
- dict at:x put:fib.
- ]
- ].
- fib
+ |n fib fibN fibNp1 fibNm1 fibXm1 fibXm2 fibXp1|
+
+ x <= 30 ifTrue:[
+ "/ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
+ fib := #(1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
+ ) at:x
+ ] ifFalse:[
+ fib := dict at:x ifAbsent:nil.
+ fib isNil ifTrue:[
+ fibXm1 := dict at:(x-1) ifAbsent:nil.
+ fibXm1 notNil ifTrue:[
+ fibXm2 := dict at:(x-2) ifAbsent:nil.
+ fibXm2 notNil ifTrue:[
+ fib := fibXm1 + fibXm2.
+ ] ifFalse:[
+ fibXp1 := dict at:(x+1) ifAbsent:nil.
+ fibXp1 notNil ifTrue:[
+ fib := fibXp1 - fibXm1.
+ ]
+ ]
+ ].
+
+ fib isNil ifTrue:[
+ n := x // 2.
+ x odd ifTrue:[
+ "/ m is set to n+1; therefore:
+ "/ Fib(x) = Fib(n+n+1) ; x odd; setting n = (x-1)/2
+ "/ using Knuth:
+ "/ Fib(n+n+1) = Fib(n+1) * Fib(n+1) + Fib(n+1-1) * Fib(n)
+ "/ = (Fib(n+1) ^ 2) + (Fib(n) ^ 2)
+ fibN := fibUsingDict value:n.
+ fibNp1 := fibUsingDict value:(n+1).
+ fib := fibN squared + fibNp1 squared
+ ] ifFalse:[
+ "/ as
+ "/ Fib(n+1) = Fib(n) + Fib(n-1)
+ "/ therefore:
+ "/ Fib(n) = Fib(n+1) - Fib(n-1)
+ "/ and, since n is even, n+1 and n-1 are odd, and can be computed as above.
+ "/ This gives us:
+ "/ Fib(x) = Fib(x+1) - Fib(x-1) ; x even; setting n = x/2
+ "/ = Fib(n+n+1) - Fib(n+n-1)
+ "/ = Fib(n+n+1) - Fib((n-1)+(n-1)+1)
+ "/ = ((Fib(n+1)^2) + (Fib(n)^2)) - ((Fib((n-1)+1)^2) + (Fib((n-1))^2))
+ "/ = (Fib(n+1)^2) + (Fib(n)^2) - (Fib(n)^2) - (Fib((n-1))^2)
+ "/ = (Fib(n+1)^2) - (Fib((n-1))^2)
+ fibNm1 := fibUsingDict value:(n-1).
+ fibNp1 := fibUsingDict value:(n+1).
+ fib := fibNp1 squared - fibNm1 squared
+ ].
+ ].
+ dict at:x put:fib.
+ ]
+ ].
+ fib
].
^ fibUsingDict value:self
@@ -2896,6 +2901,8 @@
1 to:100 do:[:i | self assert:(i fib_iterative = i fib_helper) ]
1 to:100 do:[:i | self assert:(i fib_iterative = i fib) ]
"
+
+ "Modified: / 17-08-2010 / 17:29:34 / cg"
!
gcd:anInteger
@@ -2943,16 +2950,15 @@
result := LargeInteger basicNew numberOfDigits:(b // 8)+1.
b := b+1.
[b > 0] whileTrue:[
- rem >= self ifTrue:[
- rem := rem -= self.
- result digitBytes bitSetAt:b.
- ].
- rem := rem mul2.
- b := b - 1.
+ rem >= self ifTrue:[
+ rem := rem -= self.
+ result digitBytes bitSetAt:b.
+ ].
+ rem := rem mul2.
+ b := b - 1.
].
^ result compressed.
-
"
333 integerReciprocal (2 raisedTo:18) // 333
393 integerReciprocal
@@ -2962,7 +2968,8 @@
10239552311579 integerReciprocal
"
- "Modified: / 3.5.1999 / 14:27:18 / stefan"
+ "Modified: / 03-05-1999 / 14:27:18 / stefan"
+ "Modified: / 17-08-2010 / 17:30:22 / cg"
!
integerSqrt
@@ -3059,18 +3066,17 @@
primeFactors
"return a collection of prime factors of the receiver.
For prime numbers, an empty collection is returned.
- Can take a long time for big numbers
- (win a nobel price, if you find something quick)"
+ Can take a long time for big numbers"
^ self primeFactorsUpTo:nil
"
2 to:10000 do:[:n |
- self assert:((n isPrime and:[ n primeFactors isEmpty])
- or:[ n isPrime not and:[n primeFactors product = n]])
+ self assert:((n isPrime and:[ n primeFactors isEmpty])
+ or:[ n isPrime not and:[n primeFactors product = n]])
]
3 to:10000 do:[:n |
- self assert:(n factorial primeFactors product = n factorial)
+ self assert:(n factorial primeFactors product = n factorial)
]
13195 primeFactors
@@ -3091,18 +3097,22 @@
1000000000 primeFactors
Time millisecondsToRun:[
- 1000 timesRepeat:[
- 10000000000000000000000000000000000000 primeFactors
- ]
+ 1000 timesRepeat:[
+ 10000000000000000000000000000000000000 primeFactors
+ ]
] 421
"
+
+ "Modified: / 17-08-2010 / 17:27:33 / cg"
!
primeFactorsUpTo:limitArgOrNil
"return a collection of prime factors of the receiver.
For prime numbers, an empty collection is returned.
Can take a long time for big numbers
- (win a nobel price, if you find something quick)"
+ (win a nobel price, if you find something quick (*)
+
+ (*):which does not mean that the code below is optimal - far from it !!"
|rest n factors limit lastPrime checkThisFactor nextTry|
@@ -3110,77 +3120,77 @@
rest := self.
limit := (rest // 2).
limitArgOrNil notNil ifTrue:[
- limit := limit min:limitArgOrNil.
+ limit := limit min:limitArgOrNil.
].
"/ try to get the number down fast:
n := rest lowBit.
n ~~ 1 ifTrue:[
- self == 2 ifTrue:[^ #() ].
- factors add:2 withOccurrences:(n-1).
- rest := rest rightShift:(n-1).
+ self == 2 ifTrue:[^ #() ].
+ factors add:2 withOccurrences:(n-1).
+ rest := rest rightShift:(n-1).
].
checkThisFactor := [:prime |
- prime*prime > rest ifTrue:[
- (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
- ^ factors.
- ].
-
- [rest \\ prime == 0] whileTrue:[
- factors add:prime.
- rest := rest // prime.
- rest == 1 ifTrue:[^ factors].
- ].
- lastPrime := prime.
- ].
+ prime*prime > rest ifTrue:[
+ (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
+ ^ factors.
+ ].
+
+ [rest \\ prime == 0] whileTrue:[
+ factors add:prime.
+ rest := rest // prime.
+ rest == 1 ifTrue:[^ factors].
+ ].
+ lastPrime := prime.
+ ].
limit <= 2000 ifTrue:[
- Integer primesUpTo2000 do:checkThisFactor.
- ^ factors
+ Integer primesUpTo2000 do:checkThisFactor.
+ ^ factors
].
"/ actually, all of the code is duplicated; once for primes from a table,
"/ and then primes as generated on the fly. The prime generation involves a prime-test,
"/ which may slow things down quite a bit.
"/ (the primesUpTo uses a faster sieve, but can only represent primes to upTo (say)
- "/ a few millions.
+ "/ a few millions).
Integer primesUpTo:(limit min:(1000000 max:Integer primeCacheSize)) do:checkThisFactor.
nextTry := lastPrime + 2.
[ nextTry <= limit ] whileTrue:[
- "/ now, we are beyond the list of pre-generated primes.
- "/ change our strategy to: see if it divides an odd number;
- "/ if so, add the divisor's prime factors.
- nextTry*nextTry > rest ifTrue:[
- (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
- ^ factors.
- ].
- [(rest \\ nextTry) == 0] whileTrue:[
- "/ can only happen relatively late after the last prime,
- "/ because otherwise, the primeFactors of nextTry would already have
- "/ been found as divisors.
- "/ first chance is: (lastPrime + 2) squared
- nextTry < lastPrime squared ifTrue:[
- "/ nextTry is a prime !!
- factors add:nextTry
- ] ifFalse:[
- factors addAll:(nextTry primeFactors).
- ].
- rest := rest // nextTry.
- ].
- nextTry := nextTry + 2.
+ "/ now, we are beyond the list of pre-generated primes.
+ "/ change our strategy to: see if it divides an odd number;
+ "/ if so, add the divisor's prime factors.
+ nextTry*nextTry > rest ifTrue:[
+ (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
+ ^ factors.
+ ].
+ [(rest \\ nextTry) == 0] whileTrue:[
+ "/ can only happen relatively late after the last prime,
+ "/ because otherwise, the primeFactors of nextTry would already have
+ "/ been found as divisors.
+ "/ first chance is: (lastPrime + 2) squared
+ nextTry < lastPrime squared ifTrue:[
+ "/ nextTry is a prime !!
+ factors add:nextTry
+ ] ifFalse:[
+ factors addAll:(nextTry primeFactors).
+ ].
+ rest := rest // nextTry.
+ ].
+ nextTry := nextTry + 2.
].
^ factors
"
2 to:10000 do:[:n |
- self assert:((n isPrime and:[ n primeFactors isEmpty])
- or:[ n isPrime not and:[n primeFactors product = n]])
+ self assert:((n isPrime and:[ n primeFactors isEmpty])
+ or:[ n isPrime not and:[n primeFactors product = n]])
]
3 to:10000 do:[:n |
- self assert:(n factorial primeFactors product = n factorial)
+ self assert:(n factorial primeFactors product = n factorial)
]
13195 primeFactors
@@ -3201,11 +3211,13 @@
1000000000 primeFactors
Time millisecondsToRun:[
- 1000 timesRepeat:[
- 10000000000000000000000000000000000000 primeFactors
- ]
+ 1000 timesRepeat:[
+ 10000000000000000000000000000000000000 primeFactors
+ ]
] 421
"
+
+ "Modified: / 17-08-2010 / 17:28:05 / cg"
!
raisedTo:exp mod:mod
@@ -3929,6 +3941,7 @@
"Modified: 15.10.1997 / 18:43:49 / cg"
! !
+
!Integer methodsFor:'special access'!
exponent
@@ -4707,15 +4720,15 @@
!Integer class methodsFor:'documentation'!
version
- ^ '$Id: Integer.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Integer.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Integer.st,v 1.248 2010/08/02 10:34:20 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Integer.st,v 1.251 2010/08/17 15:32:31 cg Exp '
!
version_SVN
- ^ '$Id: Integer.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Integer.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Integer initialize!
@@ -4724,3 +4737,4 @@
+
--- a/KeyedCollection.st Thu Aug 19 21:39:34 2010 +0100
+++ b/KeyedCollection.st Thu Aug 26 11:12:57 2010 +0100
@@ -153,14 +153,6 @@
^ self subclassResponsibility
"Created: / 19.6.1998 / 00:56:52 / cg"
-!
-
-keysDo:aBlock
- "evaluate aBlock for each key"
-
- self keysAndValuesDo:[:elKey :elValue | aBlock value:elKey]
-
- "Created: / 19.6.1998 / 00:56:34 / cg"
! !
!KeyedCollection methodsFor:'removing'!
@@ -208,16 +200,17 @@
!KeyedCollection class methodsFor:'documentation'!
version
- ^ '$Id: KeyedCollection.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: KeyedCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.7 2010/01/29 16:42:18 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010/08/24 08:29:08 cg Exp '
!
version_SVN
- ^ '$Id: KeyedCollection.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: KeyedCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/LargeInteger.st Thu Aug 19 21:39:34 2010 +0100
+++ b/LargeInteger.st Thu Aug 26 11:12:57 2010 +0100
@@ -1031,29 +1031,29 @@
bitAt:anIntegerIndex
"return the value of the index's bit (index starts at 1) as 0 or 1.
Notice: the result of bitAt: on negative receivers is not
- defined in the language standard (since the implementation
- is free to choose any internal representation for integers)"
+ defined in the language standard (since the implementation
+ is free to choose any internal representation for integers)"
%{ /* NOCONTEXT */
if (__isSmallInteger(anIntegerIndex)) {
- INT idx = __smallIntegerVal(anIntegerIndex) - 1;
-
- if (idx >= 0) {
- int v1;
- int byteOffset = idx / 8;
- int digitLen = __stringSize(__INST(digitByteArray));
-
- if (digitLen < byteOffset) {
- RETURN(__mkSmallInteger(0));
- }
-
- v1 = (__byteArrayVal(__INST(digitByteArray)))[byteOffset];
- if (v1 & (1 << (idx % 8))) {
- RETURN(__mkSmallInteger(1));
- } else {
- RETURN(__mkSmallInteger(0));
- }
- }
+ INT idx = __smallIntegerVal(anIntegerIndex) - 1;
+
+ if (idx >= 0) {
+ int v1;
+ int byteOffset = idx / 8;
+ int digitLen = __byteArraySize(__INST(digitByteArray));
+
+ if (digitLen < byteOffset) {
+ RETURN(__mkSmallInteger(0));
+ }
+
+ v1 = (__byteArrayVal(__INST(digitByteArray)))[byteOffset];
+ if (v1 & (1 << (idx % 8))) {
+ RETURN(__mkSmallInteger(1));
+ } else {
+ RETURN(__mkSmallInteger(0));
+ }
+ }
}
%}.
^ super bitAt:anIntegerIndex
@@ -1068,6 +1068,8 @@
TestCase assert:( 16rFFFFFFFF01FF bitAt:9 ) == 1
TestCase assert:( 16rFFFFFFFF01FF bitAt:10 ) == 0
"
+
+ "Modified: / 10-08-2010 / 12:33:04 / cg"
!
bitXor:anInteger
@@ -5139,17 +5141,18 @@
!LargeInteger class methodsFor:'documentation'!
version
- ^ '$Id: LargeInteger.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: LargeInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.201 2010/04/14 08:00:14 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.202 2010/08/10 10:34:11 cg Exp '
!
version_SVN
- ^ '$Id: LargeInteger.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: LargeInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/Make.proto Thu Aug 19 21:39:34 2010 +0100
+++ b/Make.proto Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.231 2010/08/20 10:18:30 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic.
@@ -231,6 +231,7 @@
$(OUTDIR)RecursiveStoreError.$(O) RecursiveStoreError.$(H): RecursiveStoreError.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)/stx/libbasic/HashStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TimeoutNotification.$(O) TimeoutNotification.$(H): TimeoutNotification.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)/stx/libbasic/ControlInterrupt.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -381,9 +382,10 @@
$(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)/stx/libbasic/NonPositionableExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.st $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.st $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(INCLUDE_TOP)/stx/libbasic/AbstractOperatingSystem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(STCHDR)
+$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.st $(STCHDR)
+$(OUTDIR)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.st $(STCHDR)
+$(OUTDIR)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
+
--- a/Make.spec Thu Aug 19 21:39:34 2010 +0100
+++ b/Make.spec Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.spec,v 1.108 2010/08/20 10:18:38 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic.
@@ -336,6 +336,7 @@
PipeStream \
Symbol \
Unicode16String \
+ TimeoutNotification \
WIN32_CLASSES= \
CharacterEncoderImplementations::MS_Baltic \
@@ -638,6 +639,7 @@
$(OUTDIR)PipeStream.$(O) \
$(OUTDIR)Symbol.$(O) \
$(OUTDIR)Unicode16String.$(O) \
+ $(OUTDIR)TimeoutNotification.$(O) \
WIN32_OBJS= \
$(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) \
@@ -652,3 +654,4 @@
+
--- a/MessageNotUnderstood.st Thu Aug 19 21:39:34 2010 +0100
+++ b/MessageNotUnderstood.st Thu Aug 26 11:12:57 2010 +0100
@@ -144,7 +144,7 @@
].
sel := self selector.
sel class == Symbol ifTrue:[
- description := description , ' does not understand: #' , sel.
+ description := description , ' does not understand: ' , sel storeString.
"/ description := sel, ' not understood by ' , description.
] ifFalse:[
"a non-symbol selector may happen when things go mad in a primitive,
@@ -162,14 +162,21 @@
2 perform:55
nil // 2
"
+
+ "Modified: / 19-08-2010 / 15:33:03 / cg"
! !
!MessageNotUnderstood class methodsFor:'documentation'!
version
- ^ '$Id: MessageNotUnderstood.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+ ^ '$Id: MessageNotUnderstood.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
-version_SVN
- ^ '$Id: MessageNotUnderstood.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+version_SVN
+ ^ '$Id: MessageNotUnderstood.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+ ^ '§Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010/08/19 13:44:12 cg Exp §'
! !
+
--- a/NamespaceAwareLookup.st Thu Aug 19 21:39:34 2010 +0100
+++ b/NamespaceAwareLookup.st Thu Aug 26 11:12:57 2010 +0100
@@ -9,6 +9,8 @@
other person. No title to or ownership of the software is
hereby transferred.
"
+'From Smalltalk/X, Version:6.1.2 on 19-08-2010 at 10:16:13 PM' !
+
"{ Package: 'stx:libbasic' }"
Lookup subclass:#NamespaceAwareLookup
@@ -349,7 +351,7 @@
!NamespaceAwareLookup class methodsFor:'documentation'!
version_SVN
- ^ '$Id: NamespaceAwareLookup.st 10567 2010-08-19 20:39:34Z vranyj1 $'
+ ^ '$Id: NamespaceAwareLookup.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
NamespaceAwareLookup initialize!
--- a/Object.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Object.st Thu Aug 26 11:12:57 2010 +0100
@@ -2106,6 +2106,7 @@
%}
! !
+
!Object methodsFor:'converting'!
-> anObject
@@ -2678,12 +2679,16 @@
(aBooleanOrBlock value) ifFalse:[
AssertionFailedError
raiseRequestWith:self
- errorString:('Assertion failed', ' { ',thisContext sender printString,' }')
+ errorString:('Assertion failed in ',
+ thisContext sender printString,
+ '[', thisContext sender lineNumber printString,']')
].
"
self assert:false
"
+
+ "Modified: / 20-08-2010 / 17:13:06 / cg"
!
assert:aBooleanOrBlock message:messageIfFailing
@@ -9328,16 +9333,17 @@
!Object class methodsFor:'documentation'!
version
- ^ '$Id: Object.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Object.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.651 2010/08/05 15:40:40 sr Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.652 2010/08/20 15:51:57 cg Exp '
!
version_SVN
- ^ '$Id: Object.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Object.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Object initialize!
+
--- a/Process.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Process.st Thu Aug 26 11:12:57 2010 +0100
@@ -747,6 +747,16 @@
suspendActions := nil.
"Created: 12.1.1997 / 00:36:16 / cg"
+!
+
+removeExitAction:anExitAction ifAbsent:exceptionBlock
+ "remove the identical exitAction; if found, remove and return it;
+ if not, return the value from evaluating exceptionBlock"
+
+ exitActions notNil ifTrue:[
+ ^ exitActions removeIdentical:anExitAction ifAbsent:exceptionBlock.
+ ].
+ ^ exceptionBlock value.
! !
!Process methodsFor:'accessing-stack'!
@@ -2043,18 +2053,19 @@
!Process class methodsFor:'documentation'!
version
- ^ '$Id: Process.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+ ^ '$Id: Process.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Process.st,v 1.170 2010/03/06 13:45:45 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Process.st,v 1.171 2010/08/13 07:40:24 sr Exp '
!
version_SVN
- ^ '$Id: Process.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+ ^ '$Id: Process.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Process initialize!
+
--- a/Registry.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Registry.st Thu Aug 26 11:12:57 2010 +0100
@@ -276,7 +276,7 @@
executor := anObject executor.
executor notNil ifTrue:[
- self register:anObject as:(anObject executor)
+ self register:anObject as:executor.
].
!
@@ -514,9 +514,14 @@
!Registry class methodsFor:'documentation'!
version
- ^ '$Id: Registry.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+ ^ '$Id: Registry.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_SVN
- ^ '$Id: Registry.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+ ^ '$Id: Registry.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+ ^ 'Header: /cvs/stx/stx/libbasic/Registry.st,v 1.61 2010/08/11 10:06:08 stefan Exp '
! !
+
--- a/SequenceableCollection.st Thu Aug 19 21:39:34 2010 +0100
+++ b/SequenceableCollection.st Thu Aug 26 11:12:57 2010 +0100
@@ -2076,6 +2076,7 @@
"
! !
+
!SequenceableCollection methodsFor:'converting'!
asCollectionOfSubCollectionsOfSize:pieceSize
@@ -4484,6 +4485,22 @@
"Modified: 9.5.1996 / 00:57:23 / cg"
!
+keysDo:aBlock
+ "evaluate the argument, aBlock for every key in the collection.
+ That is: enumerate the indices.
+ Here mostly for protocol compatibility."
+
+ 1 to:self size do:aBlock
+
+ "
+ #(one two three four five six)
+ keysDo:[:key | Transcript show:key; space; showCR:element
+ ]
+ "
+
+ "Created: / 24-08-2010 / 10:11:23 / cg"
+!
+
nonNilElementsDo:aBlock
"evaluate the argument, aBlock for every non-nil element in the collection."
@@ -7832,15 +7849,15 @@
!SequenceableCollection class methodsFor:'documentation'!
version
- ^ '$Id: SequenceableCollection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: SequenceableCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.298 2010/08/07 23:16:59 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.299 2010/08/24 08:16:49 cg Exp '
!
version_SVN
- ^ '$Id: SequenceableCollection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: SequenceableCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
SequenceableCollection initialize!
@@ -7849,3 +7866,4 @@
+
--- a/Signal.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Signal.st Thu Aug 26 11:12:57 2010 +0100
@@ -510,13 +510,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:thisContext sender)
- raise
+ ^ self newException
+ raiseIn:thisContext sender
- "Modified: / 2.5.1996 / 16:36:23 / cg"
- "Modified: / 5.3.1998 / 16:44:36 / stefan"
- "Created: / 23.7.1999 / 14:07:17 / stefan"
+ "Created: / 23-07-1999 / 14:07:17 / stefan"
+ "Modified: / 10-08-2010 / 09:58:57 / cg"
!
raiseErrorString:aString
@@ -525,13 +523,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) errorString:aString)
- raise.
+ ^ self newException
+ raiseErrorString:aString in:thisContext sender
- "Modified: / 9.5.1996 / 15:17:59 / cg"
- "Modified: / 12.3.1998 / 15:15:22 / stefan"
- "Created: / 23.7.1999 / 14:07:33 / stefan"
+ "Created: / 23-07-1999 / 14:07:33 / stefan"
+ "Modified: / 10-08-2010 / 09:59:22 / cg"
!
raiseErrorString:aString in:aContext
@@ -540,13 +536,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:aContext errorString:aString)
- raise.
+ ^ self newException
+ raiseErrorString:aString in:aContext
- "Modified: / 9.5.1996 / 15:17:59 / cg"
- "Modified: / 12.3.1998 / 15:15:22 / stefan"
- "Created: / 23.7.1999 / 14:07:33 / stefan"
+ "Created: / 23-07-1999 / 14:07:33 / stefan"
+ "Modified: / 10-08-2010 / 09:59:58 / cg"
!
raiseFrom:something
@@ -556,12 +550,11 @@
<context: #return>
^ (self newException
- suspendedContext:(thisContext sender) parameter:something originator:something)
+ suspendedContext:(thisContext sender) parameter:something originator:something)
raise
- "Modified: / 2.5.1996 / 16:36:38 / cg"
- "Modified: / 5.3.1998 / 16:49:55 / stefan"
- "Created: / 23.7.1999 / 14:07:59 / stefan"
+ "Created: / 23-07-1999 / 14:07:59 / stefan"
+ "Modified: / 10-08-2010 / 09:58:36 / cg"
!
raiseRequest
@@ -570,13 +563,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:thisContext sender)
- raiseRequest.
+ ^ self newException
+ raiseRequestIn:thisContext sender
- "Modified: / 2.5.1996 / 16:36:52 / cg"
- "Modified: / 5.3.1998 / 16:50:46 / stefan"
- "Created: / 23.7.1999 / 14:08:24 / stefan"
+ "Created: / 23-07-1999 / 14:08:24 / stefan"
+ "Modified: / 10-08-2010 / 10:00:13 / cg"
!
raiseRequestErrorString:aString
@@ -585,9 +576,10 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) errorString:aString)
- raiseRequest
+ ^ self newException
+ raiseRequestErrorString:aString in:thisContext sender
+
+ "Modified: / 10-08-2010 / 10:00:40 / cg"
!
raiseRequestFrom:something
@@ -611,13 +603,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) parameter:aParameter)
- raiseRequest.
+ ^ self newException
+ raiseRequestWith:aParameter in:thisContext sender
- "Modified: / 9.5.1996 / 15:13:20 / cg"
- "Modified: / 12.3.1998 / 15:16:57 / stefan"
- "Created: / 23.7.1999 / 14:08:48 / stefan"
+ "Created: / 23-07-1999 / 14:08:48 / stefan"
+ "Modified: / 10-08-2010 / 10:01:00 / cg"
!
raiseRequestWith:aParameter errorString:aString
@@ -626,13 +616,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) parameter:aParameter errorString:aString)
- raiseRequest
+ ^ self newException
+ raiseRequestWith:aParameter errorString:aString in:thisContext sender
- "Modified: / 9.5.1996 / 15:13:35 / cg"
- "Modified: / 12.3.1998 / 15:17:52 / stefan"
- "Created: / 23.7.1999 / 14:08:57 / stefan"
+ "Created: / 23-07-1999 / 14:08:57 / stefan"
+ "Modified: / 10-08-2010 / 10:01:38 / cg"
!
raiseRequestWith:aParameter errorString:aString in:aContext
@@ -643,13 +631,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter errorString:aString)
- raiseRequest
+ ^ self newException
+ raiseRequestWith:aParameter errorString:aString in:aContext
- "Modified: / 26.7.1996 / 16:29:27 / cg"
- "Modified: / 12.3.1998 / 15:18:34 / stefan"
- "Created: / 23.7.1999 / 14:09:07 / stefan"
+ "Created: / 23-07-1999 / 14:09:07 / stefan"
+ "Modified: / 10-08-2010 / 10:02:08 / cg"
!
raiseRequestWith:aParameter in:aContext
@@ -659,9 +645,10 @@
<context: #return>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter)
- raiseRequest
+ ^ self newException
+ raiseRequestWith:aParameter in:aContext
+
+ "Modified: / 10-08-2010 / 10:02:26 / cg"
!
raiseSignal
@@ -743,13 +730,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) parameter:aParameter)
- raise.
+ ^ self newException
+ raiseWith:aParameter in:thisContext sender
- "Modified: / 9.5.1996 / 15:14:24 / cg"
- "Modified: / 12.3.1998 / 15:19:11 / stefan"
- "Created: / 23.7.1999 / 14:09:27 / stefan"
+ "Created: / 23-07-1999 / 14:09:27 / stefan"
+ "Modified: / 10-08-2010 / 10:02:51 / cg"
!
raiseWith:aParameter errorString:aString
@@ -759,13 +744,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:(thisContext sender) parameter:aParameter errorString:aString)
- raise.
+ ^ self newException
+ raiseWith:aParameter errorString:aString in:thisContext sender
- "Modified: / 9.5.1996 / 15:14:32 / cg"
- "Modified: / 12.3.1998 / 15:19:40 / stefan"
- "Created: / 23.7.1999 / 14:09:36 / stefan"
+ "Created: / 23-07-1999 / 14:09:36 / stefan"
+ "Modified: / 10-08-2010 / 10:03:29 / cg"
!
raiseWith:aParameter errorString:aString in:aContext
@@ -777,13 +760,11 @@
<context: #return>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter errorString:aString)
- raise.
+ ^ self newException
+ raiseWith:aParameter errorString:aString in:aContext
- "Modified: / 26.7.1996 / 16:29:42 / cg"
- "Modified: / 12.3.1998 / 15:20:12 / stefan"
- "Created: / 23.7.1999 / 14:09:46 / stefan"
+ "Created: / 23-07-1999 / 14:09:46 / stefan"
+ "Modified: / 10-08-2010 / 10:03:19 / cg"
!
raiseWith:aParameter in:aContext
@@ -794,9 +775,10 @@
<context: #return>
- ^ (self newException
- suspendedContext:aContext parameter:aParameter)
- raise.
+ ^ self newException
+ raiseWith:aParameter in:aContext
+
+ "Modified: / 10-08-2010 / 10:03:05 / cg"
!
signalWith:messageText
@@ -982,16 +964,17 @@
!Signal class methodsFor:'documentation'!
version
- ^ '$Id: Signal.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Signal.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Signal.st,v 1.108 2009/10/01 07:38:26 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010/08/10 08:35:38 cg Exp '
!
version_SVN
- ^ '$Id: Signal.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Signal.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/SmallInteger.st Thu Aug 19 21:39:34 2010 +0100
+++ b/SmallInteger.st Thu Aug 26 11:12:57 2010 +0100
@@ -545,7 +545,7 @@
Be careful with negative results: 9 // 4 = 2,
while -9 // 4 = -3.
The following is always true:
- (receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
+ (receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
See #quo: which returns -2 in the latter."
%{ /* NOCONTEXT */
@@ -563,61 +563,61 @@
INT dividend, divisor, rslt;
if (__isSmallInteger(aNumber)) {
- divisor = __intVal(aNumber);
- if (divisor != 0) {
- dividend = __intVal(self);
- rslt = dividend / divisor;
- /*
- * Optimized to speed up positive result
- */
- if (rslt <= 0) {
- if (rslt == 0) {
- if ((dividend ^ divisor) < 0) {
- /*
- * result (negative) has been truncated toward 0.
- * Return -1, because we truncate toward negative inf.
- */
- rslt = -1;
- }
- } else {
- /*
- * If result (negative) has been truncated toward 0,
- * subtract 1, because we truncate toward negative inf.
- */
- if (divisor > 0) {
- if (rslt * divisor > dividend) {
- rslt--;
- }
- } else {
- if (rslt * divisor < dividend) {
- rslt--;
- }
- }
- }
- }
- RETURN ( __mkSmallInteger(rslt) );
- }
+ divisor = __intVal(aNumber);
+ if (divisor != 0) {
+ dividend = __intVal(self);
+ rslt = dividend / divisor;
+ /*
+ * Optimized to speed up positive result
+ */
+ if (rslt <= 0) {
+ if (rslt == 0) {
+ if ((dividend ^ divisor) < 0) {
+ /*
+ * result (negative) has been truncated toward 0.
+ * Return -1, because we truncate toward negative inf.
+ */
+ rslt = -1;
+ }
+ } else {
+ /*
+ * If result (negative) has been truncated toward 0,
+ * subtract 1, because we truncate toward negative inf.
+ */
+ if (divisor > 0) {
+ if (rslt * divisor > dividend) {
+ rslt--;
+ }
+ } else {
+ if (rslt * divisor < dividend) {
+ rslt--;
+ }
+ }
+ }
+ }
+ RETURN ( __mkSmallInteger(rslt) );
+ }
} else {
- if (__isFraction(aNumber)) {
- OBJ t;
- INT num, den;
-
- t = __FractionInstPtr(aNumber)->f_numerator;
- if (__isSmallInteger(t)) {
- num = __intVal(t);
- t = __FractionInstPtr(aNumber)->f_denominator;
- if (__isSmallInteger(t)) {
- den = __intVal(t);
- RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
- }
- }
- }
+ if (__isFraction(aNumber)) {
+ OBJ t;
+ INT num, den;
+
+ t = __FractionInstPtr(aNumber)->f_numerator;
+ if (__isSmallInteger(t)) {
+ num = __intVal(t);
+ t = __FractionInstPtr(aNumber)->f_denominator;
+ if (__isSmallInteger(t)) {
+ den = __intVal(t);
+ RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
+ }
+ }
+ }
}
%}.
(aNumber = 0) ifTrue:[
- ^ ZeroDivide raiseRequestWith:thisContext.
+ ^ ZeroDivide raiseRequestWith:thisContext.
].
- ^ self retry:#// coercing:aNumber
+ ^ aNumber integerQuotientFromInteger:self
"
9 // 4 ~~ 2 ifTrue:[self halt].
@@ -635,6 +635,8 @@
9 quo:-4 => -2
-9 quo:-4 => 2
"
+
+ "Modified: / 09-08-2010 / 19:50:23 / cg"
!
\\ aNumber
@@ -642,7 +644,7 @@
negative infinity. The remainder has the same sign as aNumber.
m < |aNumber| AND there is an integer k with (k * aNumber + m) = self
The following is always true:
- (receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
+ (receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
Compare with #rem:
Redefined for speed."
@@ -662,34 +664,34 @@
INT dividend, divisor, rem;
if (__isSmallInteger(aNumber)
- && (divisor = __intVal(aNumber)) != 0) {
- /*
- * Note that the sign of something modulo a negative number is undefined
- * in C!
- */
- dividend = __intVal(self);
- rem = dividend % divisor;
- if (rem) {
- if ((rem ^ divisor) < 0) {
- /* sign of remainder is different from sign of divisor */
- rem = -rem;
- }
- if ((dividend ^ divisor) < 0) {
- /* different signs, so division would have returned a
- * negative number.
- * C rounds toward zero, this code will simulate
- * rounding towards negative infinity.
- */
- rem = divisor - rem;
- }
- }
- RETURN ( __mkSmallInteger(rem) );
+ && (divisor = __intVal(aNumber)) != 0) {
+ /*
+ * Note that the sign of something modulo a negative number is undefined
+ * in C!
+ */
+ dividend = __intVal(self);
+ rem = dividend % divisor;
+ if (rem) {
+ if ((rem ^ divisor) < 0) {
+ /* sign of remainder is different from sign of divisor */
+ rem = -rem;
+ }
+ if ((dividend ^ divisor) < 0) {
+ /* different signs, so division would have returned a
+ * negative number.
+ * C rounds toward zero, this code will simulate
+ * rounding towards negative infinity.
+ */
+ rem = divisor - rem;
+ }
+ }
+ RETURN ( __mkSmallInteger(rem) );
}
%}.
(aNumber = 0) ifTrue:[
- ^ ZeroDivide raiseRequestWith:thisContext.
+ ^ ZeroDivide raiseRequestWith:thisContext.
].
- ^ self retry:#\\ coercing:aNumber
+ ^ aNumber moduluFromInteger:self
"
9 \\ 4 == 1 ifFalse:[self halt].
@@ -700,6 +702,8 @@
(-9 rem:4) == -1 ifFalse:[self halt].
1000 \\ 3600000 == 1000 ifFalse:[self halt]
"
+
+ "Modified: / 09-08-2010 / 19:52:02 / cg"
!
abs
@@ -3918,18 +3922,19 @@
!SmallInteger class methodsFor:'documentation'!
version
- ^ '$Id: SmallInteger.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: SmallInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.186 2010/08/02 10:33:35 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.187 2010/08/09 17:52:27 cg Exp '
!
version_SVN
- ^ '$Id: SmallInteger.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: SmallInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/Smalltalk.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Smalltalk.st Thu Aug 26 11:12:57 2010 +0100
@@ -7373,14 +7373,14 @@
ST/X revision Naming is:
<major>.<minor>.<revision>.<release>"
- ^ 1
+ ^ 2
"
Smalltalk revisionNr
- Smalltalk hello
- "
-
- "Modified: / 05-10-2007 / 10:13:25 / cg"
+ Smalltalk hello string
+ "
+
+ "Modified: / 12-08-2010 / 01:20:56 / cg"
!
timeStamp
@@ -7465,15 +7465,15 @@
!Smalltalk class methodsFor:'documentation'!
version
- ^ '$Id: Smalltalk.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Smalltalk.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.937 2010/08/06 13:05:23 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.938 2010/08/11 23:21:32 cg Exp '
!
version_SVN
- ^ '$Id: Smalltalk.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: Smalltalk.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
@@ -7487,3 +7487,4 @@
+
--- a/Stream.st Thu Aug 19 21:39:34 2010 +0100
+++ b/Stream.st Thu Aug 26 11:12:57 2010 +0100
@@ -194,6 +194,7 @@
^ ChunkSeparator
! !
+
!Stream methodsFor:'accessing'!
contents
@@ -2914,7 +2915,9 @@
Smalltalk at:#Transcript put:Stdout
or to use #show:/#showCR: with internal or external streams."
- (something bindWith:arg) printOn:self
+ self show:(something bindWith:arg)
+
+ "Modified: / 19-08-2010 / 15:42:00 / cg"
!
show:something with:arg1 with:arg2
@@ -2925,7 +2928,9 @@
Smalltalk at:#Transcript put:Stdout
or to use #show:/#showCR: with internal or external streams."
- (something bindWith:arg1 with:arg2) printOn:self
+ self show:(something bindWith:arg1 with:arg2)
+
+ "Modified: / 19-08-2010 / 15:42:09 / cg"
!
show:something with:arg1 with:arg2 with:arg3
@@ -2936,7 +2941,22 @@
Smalltalk at:#Transcript put:Stdout
or to use #show:/#showCR: with internal or external streams."
- (something bindWith:arg1 with:arg2 with:arg3) printOn:self
+ self show:(something bindWith:arg1 with:arg2 with:arg3)
+
+ "Modified: / 19-08-2010 / 15:42:17 / cg"
+!
+
+show:something with:arg1 with:arg2 with:arg3 with:arg4
+ "append a printed representation of the argument to the stream, expanding
+ the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+ This makes streams somewhat compatible to TextCollectors and
+ allows you to say:
+ Smalltalk at:#Transcript put:Stdout
+ or to use #show:/#showCR: with internal or external streams."
+
+ self show:(something bindWith:arg1 with:arg2 with:arg3 with:arg4)
+
+ "Created: / 19-08-2010 / 15:42:25 / cg"
!
showCR:aString
@@ -2954,6 +2974,58 @@
"Modified: 11.7.1996 / 10:01:27 / cg"
!
+showCR:something with:arg
+ "append a printed representation of the argument to the stream, expanding
+ the placeHolder %1 with the printString of arg.
+ This makes streams somewhat compatible to TextCollectors and
+ allows you to say:
+ Smalltalk at:#Transcript put:Stdout
+ or to use #show:/#showCR: with internal or external streams."
+
+ self showCR:(something bindWith:arg)
+
+ "Created: / 19-08-2010 / 15:41:46 / cg"
+!
+
+showCR:something with:arg1 with:arg2
+ "append a printed representation of the argument to the stream, expanding
+ the placeHolders %1 and %2 with the printStrings of arg1 and arg2.
+ This makes streams somewhat compatible to TextCollectors and
+ allows you to say:
+ Smalltalk at:#Transcript put:Stdout
+ or to use #show:/#showCR: with internal or external streams."
+
+ self showCR:(something bindWith:arg1 with:arg2)
+
+ "Created: / 19-08-2010 / 15:42:37 / cg"
+!
+
+showCR:something with:arg1 with:arg2 with:arg3
+ "append a printed representation of the argument to the stream, expanding
+ the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+ This makes streams somewhat compatible to TextCollectors and
+ allows you to say:
+ Smalltalk at:#Transcript put:Stdout
+ or to use #show:/#showCR: with internal or external streams."
+
+ self showCR:(something bindWith:arg1 with:arg2 with:arg3)
+
+ "Created: / 19-08-2010 / 15:42:43 / cg"
+!
+
+showCR:something with:arg1 with:arg2 with:arg3 with:arg4
+ "append a printed representation of the argument to the stream, expanding
+ the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+ This makes streams somewhat compatible to TextCollectors and
+ allows you to say:
+ Smalltalk at:#Transcript put:Stdout
+ or to use #show:/#showCR: with internal or external streams."
+
+ self showCR:(something bindWith:arg1 with:arg2 with:arg3 with:arg4)
+
+ "Created: / 19-08-2010 / 15:42:50 / cg"
+!
+
showCr:aString
"append a printed representation of the argument to the stream
and append a newline character.
@@ -3129,18 +3201,19 @@
!Stream class methodsFor:'documentation'!
version
- ^ '$Id: Stream.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Stream.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Stream.st,v 1.185 2009/12/17 15:52:07 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Stream.st,v 1.186 2010/08/19 13:43:26 cg Exp '
!
version_SVN
- ^ '$Id: Stream.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+ ^ '$Id: Stream.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
Stream initialize!
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TimeoutNotification.st Thu Aug 26 11:12:57 2010 +0100
@@ -0,0 +1,47 @@
+"
+ COPYRIGHT (c) 2010 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic' }"
+
+Notification subclass:#TimeoutNotification
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Kernel-Exceptions'
+!
+
+!TimeoutNotification class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2010 by eXept Software AG
+ All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice. This software may not
+ be provided or otherwise made available to, or used by, any
+ other person. No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"
+ Used with watchdog timers.
+"
+! !
+
+!TimeoutNotification class methodsFor:'documentation'!
+
+version_CVS
+ ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.1 2010/08/20 10:16:29 cg Exp §'
+! !
--- a/UnixOperatingSystem.st Thu Aug 19 21:39:34 2010 +0100
+++ b/UnixOperatingSystem.st Thu Aug 26 11:12:57 2010 +0100
@@ -11252,7 +11252,7 @@
!UnixOperatingSystem::SocketHandle class methodsFor:'queries'!
-getAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
+XXgetAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
"answer an Array of socket addresses for serviceName on hostName
Domain, type, protocol may be nil or specify a hint for the socket
addresses to be returned."
@@ -11626,6 +11626,76 @@
"
!
+getAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
+ "answer an Array of socket addresses for serviceName on hostName
+ Domain, type, protocol may be nil or specify a hint for the socket
+ addresses to be returned."
+
+ |result domain type proto serviceName|
+
+ domain := OperatingSystem domainCodeOf:domainArg.
+ type := OperatingSystem socketTypeCodeOf:typeArg.
+ proto := self protocolCodeOf:protoArg.
+ serviceNameArg notNil ifTrue:[
+ serviceName := serviceNameArg printString. "convert integer port numbers"
+ ].
+
+ result := self primGetAddressInfo:hostName serviceName:serviceName domainCode:domain socketTypeCode:type protocolCode:proto flags:flags.
+ result isArray ifFalse:[
+ |request|
+ request := SocketAddressInfo new
+ domain:domainArg;
+ type:typeArg;
+ protocol:protoArg;
+ canonicalName:hostName;
+ serviceName:serviceName.
+ ^ (HostNameLookupError new
+ parameter:result;
+ messageText:' - ', (result printString);
+ request:request) raiseRequest.
+ ].
+ 1 to:result size do:[:i |
+ |entry dom info|
+
+ entry := result at:i.
+
+ info := SocketAddressInfo new.
+ info
+ flags:(entry at:1);
+ domain:(dom := OperatingSystem domainSymbolOf:(entry at:2));
+ type:(OperatingSystem socketTypeSymbolOf:(entry at:3));
+ protocol:(self protocolSymbolOf:(entry at:4));
+ socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5));
+ canonicalName:(entry at:6).
+
+ result at:i put:info.
+ ].
+ ^ result
+
+ "
+ self getAddressInfo:'localhost' serviceName:nil
+ domain:nil type:nil protocol:nil flags:nil
+ self getAddressInfo:'localhost' serviceName:nil
+ domain:#inet type:#stream protocol:nil flags:nil
+ self getAddressInfo:'localhost' serviceName:nil
+ domain:#inet type:#stream protocol:#tcp flags:nil
+ self getAddressInfo:'blurb.exept.de' serviceName:nil
+ domain:#inet type:nil protocol:nil flags:nil
+ self getAddressInfo:'1.2.3.4' serviceName:'bla'
+ domain:#inet type:nil protocol:nil flags:nil
+ self getAddressInfo:'localhost' serviceName:'echo'
+ domain:#inet type:nil protocol:nil flags:nil
+ self getAddressInfo:nil serviceName:'echo'
+ domain:#inet type:nil protocol:nil flags:nil
+ self getAddressInfo:nil serviceName:nil
+ domain:#inet type:nil protocol:nil flags:nil
+ self getAddressInfo:'www.google.de' serviceName:nil
+ domain:nil type:nil protocol:nil flags:nil
+ self getAddressInfo:'smc1' serviceName:nil
+ domain:nil type:nil protocol:nil flags:nil
+ "
+!
+
getNameInfo:socketAddress wantHostName:wantHostName wantServiceName:wantServiceName datagram:useDatagram flags:flags
"answer an Array containing the hostName and serviceName
in socketAddress.
@@ -11857,6 +11927,327 @@
domain:#inet type:#stream protocol:nil flags:nil) first socketAddress
wantHostName:true wantServiceName:true datagram:false flags:0
"
+!
+
+primGetAddressInfo:hostName serviceName:serviceName domainCode:domain socketTypeCode:type protocolCode:proto flags:flags
+ "answer an Array of socket addresses for serviceName on hostName
+ Domain, type, protocol may be nil or specify a hint for the socket
+ addresses to be returned."
+
+ |error errorString result|
+
+%{ /* UNLIMITEDSTACK */ /* Don't know whether DNS, NIS, LDAP or whatever is consulted */
+#undef xxAI_NUMERICHOST /* remove xx to test gethost...() path */
+
+
+#if !defined(NO_SOCKET)
+ char *__hostName, *__serviceName;
+ int ret, cnt = 0;
+
+ if (hostName == nil) {
+ __hostName = 0;
+ } else if (__isStringLike(hostName)) {
+ __hostName = __stringVal(hostName);
+ } else {
+ error = @symbol(badArgument1);
+ goto err;
+ }
+ if (serviceName == nil) {
+ __serviceName = 0;
+ } else if (__isStringLike(serviceName)) {
+ __serviceName = __stringVal(serviceName);
+ } else {
+ error = @symbol(badArgument2);
+ goto err;
+ }
+ if (__hostName == 0 && __serviceName == 0) {
+ error = @symbol(badArgument);
+ goto err;
+ }
+
+{
+# if defined(AI_NUMERICHOST)
+ /*
+ * Use getaddrinfo()
+ */
+ struct addrinfo hints;
+ struct addrinfo *info = NULL, *infop;
+
+ memset(&hints, 0, sizeof(hints));
+ if (__isSmallInteger(domain))
+ hints.ai_family = __intVal(domain);
+ if (__isSmallInteger(type))
+ hints.ai_socktype = __intVal(type);
+ if (__isSmallInteger(proto))
+ hints.ai_protocol = __intVal(proto);
+
+ do {
+ if (hostName == nil) {
+ __hostName = 0;
+ } else if (__isStringLike(hostName)) {
+ __hostName = __stringVal(hostName);
+ }
+ if (serviceName == nil) {
+ __serviceName = 0;
+ } else if (__isStringLike(serviceName)) {
+ __serviceName = __stringVal(serviceName);
+ }
+
+// __BEGIN_INTERRUPTABLE__
+ ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
+// __END_INTERRUPTABLE__
+ } while (ret == EAI_SYSTEM && errno == EINTR);
+ if (ret != 0) {
+ switch (ret) {
+ case EAI_FAMILY:
+ error = @symbol(badProtocol);
+ break;
+ case EAI_SOCKTYPE:
+ error = @symbol(badSocketType);
+ break;
+ case EAI_BADFLAGS:
+ error = @symbol(badFlags);
+ break;
+ case EAI_NONAME:
+ error = @symbol(unknownHost);
+ break;
+ case EAI_SERVICE:
+ error = @symbol(unknownService);
+ break;
+#ifdef EAI_ADDRFAMILY
+ case EAI_ADDRFAMILY :
+ error = @symbol(unknownHostForProtocol);
+ break;
+#endif
+#ifdef EAI_NODATA
+ case EAI_NODATA:
+ error = @symbol(noAddress);
+ break;
+#endif
+ case EAI_MEMORY:
+ error = @symbol(allocationFailure);
+ break;
+ case EAI_FAIL:
+ error = @symbol(permanentFailure);
+ break;
+ case EAI_AGAIN:
+ error = @symbol(tryAgain);
+ break;
+ case EAI_SYSTEM:
+ error = @symbol(systemError);
+ break;
+ default:
+ error = @symbol(unknownError);
+ }
+ errorString = __MKSTRING(gai_strerror(ret));
+ goto err;
+ }
+ for (cnt=0, infop=info; infop; infop=infop->ai_next)
+ cnt++;
+
+ result = __ARRAY_NEW_INT(cnt);
+ if (result == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ for (infop=info, cnt=0; infop; infop=infop->ai_next, cnt++) {
+ OBJ o, resp;
+
+ resp = __ARRAY_NEW_INT(6);
+ if (resp == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+
+ __ArrayInstPtr(result)->a_element[cnt] = resp; __STORE(result, resp);
+
+ __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(infop->ai_flags);
+ __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(infop->ai_family);
+ __ArrayInstPtr(resp)->a_element[2] = __mkSmallInteger(infop->ai_socktype);
+ __ArrayInstPtr(resp)->a_element[3] = __mkSmallInteger(infop->ai_protocol);
+
+ __PROTECT__(resp);
+ o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
+ __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
+
+ if (infop->ai_canonname) {
+ __PROTECT__(resp);
+ o = __MKSTRING(infop->ai_canonname);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+ }
+ }
+
+err:
+ if (info) freeaddrinfo(info);
+
+# else /* ! AI_NUMERICHOST =============================================================*/
+
+ /*
+ * Use getservbyname() / gethostByName()
+ */
+ struct hostent *hp;
+ char **addrpp;
+ int port = 0;
+ int i;
+
+ if (__serviceName) {
+ struct servent *sp;
+ char *__proto = 0;
+
+ if (__isStringLike(protoArg))
+ __proto = __stringVal(protoArg);
+
+ sp = getservbyname(__serviceName, __proto);
+ if (sp == NULL) {
+ errorString = @symbol(unknownService);
+ error = __mkSmallInteger(-3);
+ goto err;
+ }
+ port = sp->s_port;
+ }
+
+ if (__hostName) {
+# ifdef USE_H_ERRNO
+ do {
+ if (hostName == nil) {
+ __hostName = 0;
+ } else if (__isStringLike(hostName)) {
+ __hostName = __stringVal(hostName);
+ }
+ /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
+ * uses a static data area
+ */
+ __BEGIN_INTERRUPTABLE__
+ hp = gethostbyname(__hostName);
+ __END_INTERRUPTABLE__
+ } while ((hp == NULL)
+ && (
+ (h_errno == TRY_AGAIN)
+ || errno == EINTR
+# ifdef IRIX5_3
+ || (errno == ECONNREFUSED)
+# endif
+ )
+ );
+ if (hp == 0) {
+ switch (h_errno) {
+ case HOST_NOT_FOUND:
+ errorString = @symbol(unknownHost);
+ break;
+ case NO_ADDRESS:
+ errorString = @symbol(noAddress);
+ break;
+ case NO_RECOVERY:
+ errorString = @symbol(permanentFailure);
+ break;
+ case TRY_AGAIN:
+ errorString = @symbol(tryAgain);
+ break;
+ default:
+ errorString = @symbol(unknownError);
+ break;
+ }
+ error = __mkSmallInteger(h_errno);
+ goto err;
+ }
+# else /* !USE_H_ERRNO */
+ hp = gethostbyname(__hostName);
+ if (hp == 0) {
+ errorString = @symbol(unknownHost);
+ error = __mkSmallInteger(-1);
+ goto err;
+ }
+# endif /* !USE_H_ERRNO*/
+
+ if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
+ errorString = @symbol(unknownHost);
+ error = __mkSmallInteger(-2);
+ goto err;
+ }
+
+ for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++)
+ cnt++;
+ addrpp = hp->h_addr_list;
+ } else {
+ cnt = 1;
+ }
+
+ result = __ARRAY_NEW_INT(cnt);
+ if (result == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+
+ for (i = 0; i < cnt; i++) {
+ OBJ o, resp;
+ struct sockaddr_in *sa;
+
+ resp = __ARRAY_NEW_INT(6);
+ if (resp == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+
+ __ArrayInstPtr(result)->a_element[i] = resp; __STORE(result, resp);
+ __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
+ __ArrayInstPtr(resp)->a_element[2] = type; __STORE(result, type);
+ __ArrayInstPtr(resp)->a_element[3] = proto; __STORE(result, proto);
+ __PROTECT__(resp);
+ o = __BYTEARRAY_NEW_INT(sizeof(*sa));
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
+ sa = (struct sockaddr_in *)__byteArrayVal(o);
+ sa->sin_port = port;
+
+ if (__hostName) {
+ sa->sin_family = hp->h_addrtype;
+ memcpy(&sa->sin_addr, *addrpp, hp->h_length);
+ __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
+ if (hp->h_name) {
+ __PROTECT__(resp);
+ o = __MKSTRING(hp->h_name);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+ }
+ addrpp++;
+ } else{
+ __ArrayInstPtr(resp)->a_element[1] = domain; __STORE(resp, domain);
+ }
+ }
+
+err:;
+# endif /* ! AI_NUMERICHOST */
+}
+#else /* ! HAS_SOCKET */
+ error = @symbol(notImplemented);
+#endif
+%}.
+ error notNil ifTrue:[
+ errorString notNil ifTrue:[
+ ^ errorString.
+ ].
+ ^ error.
+ ].
+ ^ result.
! !
!UnixOperatingSystem::SocketHandle methodsFor:'accepting'!
@@ -12700,15 +13091,15 @@
!UnixOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Id: UnixOperatingSystem.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: UnixOperatingSystem.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.276 2010/07/27 09:08:07 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.277 2010/08/18 18:33:20 stefan Exp '
!
version_SVN
- ^ '$Id: UnixOperatingSystem.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: UnixOperatingSystem.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
UnixOperatingSystem initialize!
@@ -12718,3 +13109,4 @@
+
--- a/UserPreferences.st Thu Aug 19 21:39:34 2010 +0100
+++ b/UserPreferences.st Thu Aug 26 11:12:57 2010 +0100
@@ -790,6 +790,67 @@
"Created: / 12.11.2001 / 15:49:00 / cg"
!
+nativeDialogs
+ ^ self at:#nativeDialogs ifAbsent:false
+
+ "Created: / 24-08-2010 / 17:01:47 / sr"
+!
+
+nativeDialogs:aBoolean
+ |currentScreen|
+
+ self at:#nativeDialogs put:aBoolean.
+ currentScreen := Screen current.
+ currentScreen notNil ifTrue:[
+ currentScreen supportsNativeDialogs ifTrue:[
+ currentScreen nativeDialogs:aBoolean
+ ].
+ ].
+
+ "Modified: / 24-08-2010 / 18:06:43 / sr"
+!
+
+nativeFileDialogs
+ ^ self at:#nativeFileDialogs ifAbsent:false
+
+ "Created: / 24-08-2010 / 17:01:59 / sr"
+!
+
+nativeFileDialogs:aBoolean
+ |currentScreen|
+
+ self at:#nativeFileDialogs put:aBoolean.
+ currentScreen := Screen current.
+ currentScreen notNil ifTrue:[
+ currentScreen supportsNativeFileDialogs ifTrue:[
+ currentScreen nativeFileDialogs:aBoolean
+ ].
+ ].
+
+ "Modified: / 24-08-2010 / 18:06:27 / sr"
+!
+
+nativeWidgets
+ ^ self at:#nativeWidgets ifAbsent:false
+
+ "Created: / 24-08-2010 / 16:58:44 / sr"
+!
+
+nativeWidgets:aBoolean
+ |currentScreen|
+
+ self at:#nativeWidgets put:aBoolean.
+ currentScreen := Screen current.
+ currentScreen notNil ifTrue:[
+ currentScreen supportsNativeWidgets ifTrue:[
+ currentScreen nativeWidgets:aBoolean
+ ].
+ ].
+
+ "Created: / 24-08-2010 / 16:58:14 / sr"
+ "Modified: / 24-08-2010 / 18:05:56 / sr"
+!
+
showTipOfTheDayAtStartup
^ self at:#showTipOfTheDayAtStartup ifAbsent:false
!
@@ -806,21 +867,15 @@
!
useNativeFileDialog
- "using native file dialog"
-
- ^ self at:#useNativeFileDialog ifAbsent:false
+ ^ self nativeFileDialogs
+
+ "Modified: / 24-08-2010 / 17:02:10 / sr"
!
useNativeFileDialog:aBoolean
- "using native file dialog (if available)"
-
- self at:#useNativeFileDialog put:aBoolean
-
- "
- UserPreferences current useNativeFileDialog:true
- UserPreferences current useNativeFileDialog:false
- UserPreferences current useNativeFileDialog
- "
+ self nativeFileDialogs:aBoolean
+
+ "Modified: / 24-08-2010 / 17:02:13 / sr"
!
useNewChangesBrowser
@@ -3299,15 +3354,16 @@
!UserPreferences class methodsFor:'documentation'!
version
- ^ '$Id: UserPreferences.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+ ^ '$Id: UserPreferences.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.251 2010/07/17 12:50:41 cg Exp §'
+ ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.253 2010/08/24 16:07:14 sr Exp §'
!
version_SVN
- ^ '$Id: UserPreferences.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+ ^ '$Id: UserPreferences.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/WeakArray.st Thu Aug 19 21:39:34 2010 +0100
+++ b/WeakArray.st Thu Aug 26 11:12:57 2010 +0100
@@ -257,6 +257,19 @@
"Modified: 25.1.1997 / 13:41:25 / cg"
!
+at:index ifInvalid:exeptionalValue
+ "return the indexed instance variable with index, anInteger,
+ but only if still valid; otherwise return the value from exceptionalValue"
+
+ |el|
+
+ el := self basicAt:index.
+ el == 0 ifTrue:[
+ ^ exeptionalValue value
+ ].
+ ^ el
+!
+
at:index put:someObject
"store someObject in the weakArray at some index."
@@ -1007,12 +1020,17 @@
!WeakArray class methodsFor:'documentation'!
version
- ^ '$Id: WeakArray.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: WeakArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_SVN
- ^ '$Id: WeakArray.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: WeakArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+ ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.66 2010/08/11 14:11:08 sr Exp §'
! !
WeakArray initialize!
+
--- a/abbrev.stc Thu Aug 19 21:39:34 2010 +0100
+++ b/abbrev.stc Thu Aug 26 11:12:57 2010 +0100
@@ -376,3 +376,5 @@
RomanNumberFormatError RomanNumberFormatError stx:libbasic 'Magnitude-Numbers' 1
Symbol Symbol stx:libbasic 'Collections-Text' 0
Unicode16String Unicode16String stx:libbasic 'Collections-Text' 0
+TimeoutNotification TimeoutNotification stx:libbasic 'Kernel-Exceptions' 1
+
--- a/bc.mak Thu Aug 19 21:39:34 2010 +0100
+++ b/bc.mak Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/bc.mak,v 1.167 2010/08/20 10:18:37 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic.
@@ -184,6 +184,7 @@
$(OUTDIR)RecursiveStoreError.$(O) RecursiveStoreError.$(H): RecursiveStoreError.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)\stx\libbasic\HashStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TimeoutNotification.$(O) TimeoutNotification.$(H): TimeoutNotification.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)\stx\libbasic\ControlInterrupt.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -334,14 +335,12 @@
$(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)\stx\libbasic\NonPositionableExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) CharacterEncoderImplementations__MS_Baltic.$(H): CharacterEncoderImplementations__MS_Baltic.st $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Cyrillic.$(O) CharacterEncoderImplementations__MS_Cyrillic.$(H): CharacterEncoderImplementations__MS_Cyrillic.st $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) CharacterEncoderImplementations__MS_Greek.$(H): CharacterEncoderImplementations__MS_Greek.st $(STCHDR)
-$(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(STCHDR)
-$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(STCHDR)
+$(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) CharacterEncoderImplementations__MS_Greek.$(H): CharacterEncoderImplementations__MS_Greek.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Win32FILEHandle.$(O) Win32FILEHandle.$(H): Win32FILEHandle.st $(STCHDR)
$(OUTDIR)Win32Handle.$(O) Win32Handle.$(H): Win32Handle.st $(STCHDR)
-$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(STCHDR)
-$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
+
--- a/libInit.cc Thu Aug 19 21:39:34 2010 +0100
+++ b/libInit.cc Thu Aug 26 11:12:57 2010 +0100
@@ -1,5 +1,5 @@
/*
- * $Header$
+ * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.159 2010/08/20 10:18:40 cg Exp $
*
* DO NOT EDIT
* automagically generated from the projectDefinition: stx_libbasic.
@@ -158,6 +158,7 @@
_RecursiveStoreError_Init(pass,__pRT__,snd);
_SHA1Stream_Init(pass,__pRT__,snd);
_Time_Init(pass,__pRT__,snd);
+_TimeoutNotification_Init(pass,__pRT__,snd);
_Timestamp_Init(pass,__pRT__,snd);
_UserInterrupt_Init(pass,__pRT__,snd);
_UserNotification_Init(pass,__pRT__,snd);
@@ -328,3 +329,4 @@
__END_PACKAGE__();
}
+
--- a/libbasic.rc Thu Aug 19 21:39:34 2010 +0100
+++ b/libbasic.rc Thu Aug 26 11:12:57 2010 +0100
@@ -3,8 +3,8 @@
// automagically generated from the projectDefinition: stx_libbasic.
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 6,1,10549,10549
- PRODUCTVERSION 6,1,1,1
+ FILEVERSION 6,1,1,74
+ PRODUCTVERSION 6,1,2,1
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
FILEOS VOS_NT_WINDOWS32
@@ -18,12 +18,12 @@
BEGIN
VALUE "CompanyName", "eXept Software AG\0"
VALUE "FileDescription", "Smalltalk/X Basic Classes (LIB)\0"
- VALUE "FileVersion", "6.1.10549.10549\0"
+ VALUE "FileVersion", "6.1.1.74\0"
VALUE "InternalName", "stx:libbasic\0"
VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2009\nCopyright eXept Software AG 1998-2009\0"
VALUE "ProductName", "Smalltalk/X\0"
- VALUE "ProductVersion", "6.1.1.1\0"
- VALUE "ProductDate", "Wed, 21 Jul 2010 15:47:23 GMT\0"
+ VALUE "ProductVersion", "6.1.2.1\0"
+ VALUE "ProductDate", "Fri, 20 Aug 2010 10:18:03 GMT\0"
END
END
@@ -33,3 +33,4 @@
VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
END
END
+
--- a/stx_libbasic.st Thu Aug 19 21:39:34 2010 +0100
+++ b/stx_libbasic.st Thu Aug 26 11:12:57 2010 +0100
@@ -495,6 +495,7 @@
(RomanNumberFormatError autoload)
Symbol
Unicode16String
+ TimeoutNotification
)
!
@@ -534,19 +535,20 @@
"Return a SVN revision number of myself.
This number is updated after a commit"
- ^ "$SVN-Revision:"'10562M'"$"
+ ^ "$SVN-Revision:"'10569M'"$"
! !
!stx_libbasic class methodsFor:'documentation'!
version
- ^ '$Id: stx_libbasic.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: stx_libbasic.st 10570 2010-08-26 10:12:57Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.74 2010/04/27 08:10:31 stefan Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.75 2010/08/20 10:18:46 cg Exp '
!
version_SVN
- ^ '$Id: stx_libbasic.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+ ^ '$Id: stx_libbasic.st 10570 2010-08-26 10:12:57Z vranyj1 $'
! !
+
--- a/vcmake.bat Thu Aug 19 21:39:34 2010 +0100
+++ b/vcmake.bat Thu Aug 26 11:12:57 2010 +0100
@@ -3,6 +3,7 @@
@REM type vcmake, and wait...
@REM do not edit - automatically generated from ProjectDefinition
@REM -------
-make.exe -N -f bc.mak USEVC=1 %1 %2
+make.exe -N -f bc.mak -DUSEVC %1 %2
+