| Status | Class | Method name | Accessor | Original Squeak 1.1 code | Comment |
| Array | elementsForwardIdentityTo:copyHash: | ||||
| Behavior | allInstances | allInstances "Answer a Set of all current instances of the receiver." | aCollection | aCollection _ OrderedCollection new. self allInstancesDo: [:x | x == aCollection ifFalse: [aCollection add: x]]. ^aCollection | return an array | ||
| Behavior | withAllSubclasses | withAllSubclasses "Answer a Set of the receiver, the receiver's descendent's, and the receiver''s descendent's subclasses." | aSet | aSet _ Set with: self. aSet addAll: self subclasses. self subclasses do: [:eachSubclass | aSet addAll: eachSubclass allSubclasses]. ^aSet | can be simplified using allSubclasses message | ||
| Behavior | instSize | instSize "Answer the number of named instance variables (as opposed to indexed variables) of the receiver." ^ ((format bitShift: -1) bitAnd: 16r3F) – 1 | different code | ||
| Behavior | allSuperclasses | allSuperclasses "Answer an OrderedCollection of the receiver's and the receiver's ancestor's superclasses. The first element is the receiver's immediate superclass, followed by its superclass; the last element is Object." | temp | superclass == nil ifTrue: [^OrderedCollection new] ifFalse: [temp _ superclass allSuperclasses. temp addFirst: superclass. ^temp] | different method return position | ||
| BlockContext | forkAt: | forkAt: priority "Create and schedule a Process running the code in the receiver. The priority of the process is the argument, priority." | forkedProcess | forkedProcess _ self newProcess. forkedProcess priority: priority. forkedProcess resume | different comment only | ||
| done | BlockContext | numArgs | accessor nargs | ||
| BlockContext | hideFromDebugger | ||||
| ClassBuilder | reservedNames | reservedNames "Return a list of names that must not be used for variables" ^#('self' 'super' 'thisContext' 'true' 'false' 'nil' self super thisContext true false nil). | by ar, all array items should be ByteSymbols | ||
| Collection | min | ||||
| Color | green | green "Answer my green component, a float in the range [0.0..1.0]. Don't confuse this with the class message (Color green) that returns the color pure green. 6/13/96 tk" ^ self privateGreen asFloat / ComponentMax | only simpler comment | ||
| Color | privateRed | privateRed "Private! Answer the internal representation of my red component." ^ (rgb bitShift: 0 - RedShift) bitAnd: ComponentMask | different comment only | ||
| Color | red | red "Answer my red component, a float in the range [0.0..1.0]. Don't confuse this with the class message (Color red) that returns the color pure red. 6/13/96 tk" ^ self privateRed asFloat / ComponentMax | different comment only | ||
| Color | privateBlue | privateBlue "Private! Answer the internal representation of my blue component." ^ rgb bitAnd: ComponentMask | |||
| Color | blue | blue "Answer my blue component, a float in the range [0.0..1.0]. Don't confuse this with the class message (Color blue) that returns the color pure blue. 6/13/96 tk" ^ self privateBlue asFloat / ComponentMax | different comment only | ||
| Color | privateAlpha | ||||
| Color | name | name "Look to see if this Color has a name. Must be an exact match of color. 6/19/96 tk" ColorNames do: [:each | (Color perform: each) = self ifTrue: [ ^ each]]. ^ nil | only different format and comment | ||
| done | Color | privateRGB | accessor rgb | ||
| Color | privateGreen | privateGreen "Private! Answer the internal representation of my green component." ^ (rgb >> GreenShift) bitAnd: ComponentMask | bitShift: | ||
| done | Color class | brown | accessor Brown | ||
| done | Color class | veryVeryDarkGray | accessor VeryVeryDarkGray | ||
| done | Color class | orange | accessor Orange | ||
| done | Color class | paleYellow | accessor PaleYellow | ||
| done | Color class | veryPaleRed | accessor VeryPaleRed | ||
| done | Color class | paleBuff | accessor PaleBuff | ||
| done | Color class | veryVeryLightGray | accessor veryVeryLightGray | ||
| done | Color class | paleBlue | accessor PaleBlue | ||
| done | Color class | transparent | accessor Transparent | ||
| done | Color class | paleGreen | accessor PaleGreen | ||
| done | Color class | palePeach | accessor PalePeach | ||
| done | Color class | paleOrange | accessor PaleOrange | ||
| done | Color class | paleRed | accessor PaleRed | ||
| done | Color class | paleMagenta | accessor PaleMagenta | ||
| done | Color class | paleTan | accessor PaleTan | ||
| Color class | shutDown | ||||
| CompiledMethod | sendsToSuper | sendsToSuper "Answer whether the receiver sends any message to super." ^ (self scanFor: 16r85) or: [self scanFor: 16r86] | significant changes | ||
| CompiledMethod | endPC | endPC "Answer the index of the last bytecode." (self last between: 120 and: 124) ifTrue: [^self size]. ^self size – 3 | different code | ||
| ContextPart | cachesStack | ||||
| ContextPart | stackOfSize: | stackOfSize: limit "Answer an OrderedCollection of the top 'limit' contexts on the receiver's sender chain." | a stack | stack _ OrderedCollection new. stack addLast: (a _ self). [(a _ a sender) ~~ nil and: [stack size < limit]] whileTrue: [stack addLast: a]. ^ stack | different code | ||
| CrLfFileStream class | startUp | ||||
| Cursor | beCursorWithMask: | beCursorWithMask: maskForm "Primitive. Tell the interpreter to use the receiver as the current cursor image with the given mask Form. Both the receiver and the mask should have extent 16@16 and a depth of one. The mask and cursor bits are combined as follow: maskcursoreffect 0 0transparent (underlying pixel shows through) 1 1opaque black 1 0opaque white 0 1invert the underlying pixel" "Essential. See Object documentation whatIsAPrimitive." <primitive: 101> self primitiveFailed | by jm, free | ||
| Date | printOn:format: | printOn: aStream format: formatArray "Print a description of the receiver on aStream using the format denoted by the argument, formatArray: #(item item item sep monthfmt yearfmt twoDigits) items: 1=day 2=month 3=year will appear in the order given, separated by sep which is eaither an ascii code or character. monthFmt: 1=09 2=Sep 3=September yearFmt: 1=1996 2=96 digits: (missing or)1=9 2=09. See the examples in printOn: and mmddyy" | monthIndex element monthFormat twoDigits monthDay | twoDigits _ formatArray size > 6 and: [(formatArray at: 7) > 1]. monthIndex _ self monthIndex. 1 to: 3 do: [:elementIndex | element _ formatArray at: elementIndex. element = 1 ifTrue: [monthDay _ day - self firstDayOfMonth + 1. twoDigits & (monthDay < 10) ifTrue: [aStream nextPutAll: '0']. monthDay printOn: aStream]. element = 2 ifTrue: [monthFormat _ formatArray at: 5. monthFormat = 1 ifTrue: [twoDigits & (monthIndex < 10) ifTrue: [aStream nextPutAll: '0']. monthIndex printOn: aStream]. monthFormat = 2 ifTrue: [aStream nextPutAll: ((MonthNames at: monthIndex) copyFrom: 1 to: 3)]. monthFormat = 3 ifTrue: [aStream nextPutAll: (MonthNames at: monthIndex)]]. element = 3 ifTrue: [(formatArray at: 6) = 1 ifTrue: [year printOn: aStream] ifFalse: [twoDigits & ((year \\ 100) < 10) ifTrue: [aStream nextPutAll: '0']. (year \\ 100) printOn: aStream]]. elementIndex < 3 ifTrue: [(formatArray at: 4) ~= 0 ifTrue: [aStream nextPut: (formatArray at: 4) asCharacter]]] | some significant changes | ||
| Date | dayMonthYearDo: | ||||
| Date class | fromSeconds: | ||||
| Date class | fromDays: | fromDays: dayCount "Answer an instance of me which is dayCount days after January 1, 1901." ^self newDay: 1 + (dayCount asInteger rem: 1461) "There are 1461 days in a 4-year cycle. 2000 is a leap year, so no extra correction is necessary. " year: 1901 + ((dayCount asInteger quo: 1461) * 4) | use julianDayNumber: with SqueakEpoch | ||
| Date class | julianDayNumber: | ||||
| Date class | dateAndTimeNow | dateAndTimeNow "Answer an Array whose first element is Date today and second element is Time now." ^Time dateAndTimeNow | |||
| DateAndTime | hour | ||||
| DateAndTime | midnight | ||||
| DateAndTime | asDateAndTime | ||||
| DateAndTime | second | ||||
| DateAndTime | hour24 | ||||
| done | DateAndTime | nanoSecond | accessor nanos | ||
| DateAndTime | minute | ||||
| DateAndTime | + | ||||
| DateAndTime | dayMonthYearDo: | ||||
| DateAndTime | - | ||||
| DateAndTime | = | ||||
| DateAndTime class | julianDayNumber: | ||||
| DateAndTime class | year:month:day:hour:minute:second: | ||||
| DateAndTime class | localTimeZone | ||||
| DateAndTime class | year:month:day:hour:minute: | ||||
| DateAndTime class | year:month:day:hour:minute:second:offset: | ||||
| DateAndTime class | year:month:day:hour:minute:second:nanoSecond:offset: | ||||
| DateAndTime class | localOffset | ||||
| DateAndTime class | year:month:day: | ||||
| Decompiler | checkForBlock: | checkForBlock: receiver "We just saw a blockCopy: message. Check for a following block." | savePc jump args argPos block | receiver == constructor codeThisContext ifFalse: [^false]. savePc _ pc. (jump _ self interpretJump) notNil ifFalse: [pc _ savePc. ^nil]. "Definitely a block" jump _ jump + pc. argPos _ statements size. [self willStorePop] whileTrue: [stack addLast: ArgumentFlag. "Flag for doStore:" self interpretNextInstructionFor: self]. args _ Array new: statements size - argPos. 1 to: args size do: [:i | args at: i put: statements removeLast]. "Retrieve args" block _ self blockTo: jump. stack addLast: (constructor codeArguments: args block: block). ^true | while retreiving args set scope to -1 for every argument | ||
| done | Decompiler | withTempNames: | accessor tempVars | ||
| Decompiler | blockForCaseTo: | ||||
| DecompilerConstructor | codeConstants | codeConstants "Answer with an array of the objects representing self, true, false, nil, -1, 0, 1, 2." | i | ^(Array with: NodeSelf with: NodeTrue with: NodeFalse with: NodeNil) , ((-1 to: 2) collect: [:i | LiteralNode new key: i code: LdMinus1 + i + 1]) | useless temporary variable i | ||
| DecompilerConstructor | codeTemp:named: | ||||
| Delay | wait | wait "Suspend the process of the caller for the amount of time specified when the receiver was created." beingWaitedOn ifTrue: [ self error: 'A process is already waiting on this Delay' ]. AccessProtect critical: [ beingWaitedOn _ true. resumptionTime _ Time millisecondClockValue + delayDuration. ActiveDelay == nil ifTrue: [ self activate ] ifFalse: [ resumptionTime < ActiveDelay resumptionTime ifTrue: [ SuspendedDelays add: ActiveDelay. self activate ] ifFalse: [ SuspendedDelays add: self ]. ]. ]. delaySemaphore wait. | different code | ||
| Delay | adjustResumptionTimeOldBase:newBase: | ||||
| Delay | schedule | ||||
| Delay class | saveResumptionTimes | ||||
| Delay class | forDuration: | ||||
| Delay class | shutDown | shutDown "Suspend the active delay, if any, before snapshotting. It will be reactived when the snapshot is resumed." "Details: This prevents a timer interrupt from waking up the active delay in the midst snapshoting, since the active delay will be restarted when resuming the snapshot and we don't want to process the delay twice." Processor signal: nil atTime: 0. AccessProtect wait. ActiveDelay == nil ifFalse: [ ActiveDelay recordTimeRemaining ]. | different code | ||
| Delay class | restoreResumptionTimes | ||||
| Delay class | startUp | startUp "Restart active delay, if any, when resuming a snapshot." ActiveDelay == nil ifFalse: [ ActiveDelay continueAfterSnapshot ]. AccessProtect signal. | do restoreResumptionTimes firstly use activate method | ||
| Dictionary | keys | keys "Answer a Set containing the receiver's keys." | aSet key | aSet _ Set new: self size. self keysDo: [:key | aSet add: key]. ^ aSet | useless temporary variable key | ||
| Dictionary | at:ifPresent: | ||||
| Dictionary | at:ifAbsent: | at: key ifAbsent: aBlock | index assoc | index _ self findElementOrNil: key. assoc _ array at: index. nil == assoc ifTrue: [ ^ aBlock value ]. ^ assoc value | fastest/readable code? | ||
| Duration | printOn: | ||||
| Duration | ticks | ||||
| Duration | / | ||||
| Duration | < | ||||
| Duration | - | ||||
| Duration | hours | ||||
| Duration | days | ||||
| Duration | seconds:nanoSeconds: | ||||
| Duration | // | ||||
| Duration | asNanoSeconds | ||||
| Duration | + | ||||
| Duration | \\ | ||||
| done | Duration | nanoSeconds | acessor nanos | ||
| Duration | negative | ||||
| Duration | minutes | ||||
| Duration | positive | ||||
| Duration | seconds | ||||
| Duration | asMilliSeconds | ||||
| Duration | = | ||||
| Duration | * | ||||
| Duration class | seconds:nanoSeconds: | ||||
| Duration class | days: | ||||
| Duration class | nanoSeconds: | ||||
| Duration class | milliSeconds: | ||||
| Duration class | days:hours:minutes:seconds:nanoSeconds: | ||||
| Encoder | autoBind: | autoBind: name "Declare a block argument as a temp if not already declared." | node assoc | node _ scopeTable at: name ifAbsent: [(self lookupInPools: name ifFound: [:assoc | assoc]) ifTrue: [self notify: 'Name already used in a Pool or Global']. ^self reallyBind: name]. node isTemp ifFalse: [^self notify: 'Name already used in this class']. ^node | if thenode is temp and has positive scope, notify that the name is already used in the method. If it doesn't have positive scope, set it and define that the node has def and ref | ||
| Encoder | bindArg: | ||||
| Encoder | newTemp: | newTemp: name nTemps _ nTemps + 1. ^VariableNode new name: name index: nTemps - 1 type: LdTempType | use constructor with scope (=0) | ||
| Encoder | litIndex: | litIndex: literal | p | p _ literalStream position. p = 64 ifTrue: [self notify: 'More than 64 literals referenced. You must split or otherwise simplify this method. The 65th literal is: ', literal printString. ^nil]. "Would like to show where it is in the source code, but that info is hard to get." literalStream nextPut: literal. ^ p | limit increased to 256 | ||
| EventManager | actionMap | ||||
| EventManager class | actionMapFor: | ||||
| Exception | description | ||||
| ExceptionSet | initialize | ||||
| ExceptionSet | , | ||||
| ExceptionSet | handles: | ||||
| ExceptionSet | add: | ||||
| FileDirectory | pathNameDelimiter | pathNameDelimiter ^ self class pathNameDelimiter | use DirectoryClass delimiter | ||
| FileDirectory | entries | ||||
| FileDirectory | directoryNames | ||||
| FileDirectory | fileNames | fileNames "FileDirectory default fileNames" ^ self directoryContents collect: [:spec | spec first] | different code | ||
| FileDirectory | fileAndDirectoryNames | ||||
| FileDirectory class | extensionDelimiter | ||||
| FileDirectory class | dot | ||||
| Float | printOn:base: | printOn: aStream base: base "Estimate significant figures and handle sign." | digitCount | digitCount _ 2r1.0e23 "23 bits" floorLog: base asFloat. self > 0.0 ifTrue: [self absPrintOn: aStream base: base digitCount: digitCount] ifFalse: [self = 0.0 ifTrue: [^ aStream nextPutAll: '0.0']. aStream nextPutAll: '-'. self negated absPrintOn: aStream base: base digitCount: digitCount] | check NaN different code | ||
| Float | hash | hash "Hash is reimplemented because = is implemented." ^(self basicAt: 1) bitAnd: 16383"High bits as an Integer" | different code | ||
| Float | sign | ||||
| Float | isInfinite | ||||
| Float | / | / aNumber "Primitive. Answer the result of dividing receiver by aNumber. Fail if the argument is not a Float. Essential. See Object documentation whatIsAPrimitive." <primitive: 50> aNumber = 0 ifTrue: [self error: 'attempt to divide by zero'] ifFalse: [^self retry: #/ coercing: aNumber] | use ZeroDivide instead of general error and adaptToFloat:andSend: | ||
| Float | isNaN | ||||
| Float | reciprocalLogBase2 | ||||
| Float | adaptToScaledDecimal:andSend: | ||||
| Float | isFloat | simple tester | |||
| Float | timesTwoPower: | timesTwoPower: anInteger "Primitive. Answer with the receiver mulitplied by 2.0 raised to the power of the argument. Optional. See Object documentation whatIsAPrimitive." <primitive: 54> ^self * (2.0 raisedToInteger: anInteger) | handle special cases if the argument is <-29 <0 <30 | ||
| Float | absPrintOn:base: | ||||
| Float | significand | ||||
| done | Float class | negativeZero | accessor NegativeZero | ||
| Float class | one | ||||
| Form | storeOn:base: | storeOn: aStream base: anInteger "Store the receiver out in the form: Form newExtent:fromArray:#()offset:" aStream nextPut: $(. aStream nextPutAll: self species name. aStream crtab: 1. aStream nextPutAll: 'extent: '. self extent printOn: aStream. aStream crtab: 1. aStream nextPutAll: 'fromArray: #('. 1 to: bits size do: [:index | anInteger = 10 ifTrue: [aStream space] ifFalse: [aStream crtab: 2]. (self bits at: index) printOn: aStream base: anInteger]. aStream nextPut: $). aStream crtab: 1. aStream nextPutAll: 'offset: '. self offset printOn: aStream. aStream nextPut: $) | unhibernate firstly write depth after extent use storeBitsOn:base: | ||
| Fraction | setNumerator:denominator: | setNumerator: n denominator: d d = 0 ifTrue: [self error: 'denominator cannot be zero'] ifFalse: [numerator _ n asInteger. denominator _ d asInteger abs. "keep sign in numerator" d < 0 ifTrue: [numerator _ numerator negated]] | use ZeroDivide instead of general error | ||
| Fraction | isFraction | simple tester | |||
| HtmlFileStream | verbatim: | verbatim: aString "Do not attempt to translate the characters. Use this to override translation in nextPutAll:. User may write HTML directly to the file with this." ^ super nextPutAll: aString "very tricky! depends on the fact that StandardFileStream nextPutAll: does not call nextPut, but does a direct write." | return self | ||
| HtmlFileStream | nextPut: | nextPut: char "Put a character on the file, but translate it first. 4/6/96 tk" char = $< ifTrue: [^ super nextPutAll: '<']. char = $> ifTrue: [^ super nextPutAll: '>']. char = $& ifTrue: [^ super nextPutAll: '&']. char asciiValue = 13 "return" ifTrue: [ self command: 'br']. char = $"tab" ifTrue: [self command: 'IMG SRC="tab.gif" ALT=" "']. ^ super nextPut: char | use TabThing | ||
| InstructionStream | addSelectorTo: | addSelectorTo: set "If this instruction is a send, add its selector to set." | byte literalNumber | byte _ self method at: pc. byte < 128 ifTrue: [^self]. byte >= 176 ifTrue: ["special byte or short send" byte >= 208 ifTrue: [set add: (self method literalAt: (byte bitAnd: 15) + 1)] ifFalse: [set add: (Smalltalk specialSelectorAt: byte - 176 + 1)]] ifFalse: [(byte between: 131 and: 134) ifTrue: [literalNumber _ byte odd ifTrue: [(self method at: pc + 1) \\ 32] ifFalse: [self method at: pc + 2]. set add: (self method literalAt: literalNumber + 1)]] | some significant changes. processing of every case between 131 and 134 | ||
| InstructionStream | interpretExtension:in:for: | interpretExtension: offset in: method for: client | numberArguments literalNumber type offset2 | "pc has already been incremented by 1" offset < 3 ifTrue: ["extended pushes and pops" type _ (method at: pc) // 64. offset2 _ (method at: pc) \\ 64. pc _ pc + 1. offset = 0 ifTrue: [type = 0 ifTrue: [^client pushReceiverVariable: offset2]. type = 1 ifTrue: [^client pushTemporaryVariable: offset2]. type = 2 ifTrue: [^client pushConstant: (method literalAt: offset2 + 1)]. type = 3 ifTrue: [^client pushLiteralVariable: (method literalAt: offset2 + 1)]]. offset = 1 ifTrue: [type = 0 ifTrue: [^client storeIntoReceiverVariable: offset2]. type = 1 ifTrue: [^client storeIntoTemporaryVariable: offset2]. type = 2 ifTrue: [self error: 'illegalStore']. type = 3 ifTrue: [^client storeIntoLiteralVariable: (method literalAt: offset2 + 1)]]. offset = 2 ifTrue: [type = 0 ifTrue: [^client popIntoReceiverVariable: offset2]. type = 1 ifTrue: [^client popIntoTemporaryVariable: offset2]. type = 2 ifTrue: [self error: 'illegalStore']. type = 3 ifTrue: [^client popIntoLiteralVariable: (method literalAt: offset2 + 1)]]]. offset < 7 ifTrue: ["extended sends" offset odd ifTrue: [numberArguments _ (method at: pc) // 32. literalNumber _ (method at: pc) \\ 32. pc _ pc + 1] ifFalse: [numberArguments _ method at: pc. literalNumber _ method at: pc + 1. pc _ pc + 2]. ^client send: (method literalAt: literalNumber + 1) super: offset > 4 numArgs: numberArguments]. offset = 7 ifTrue: [^client doPop]. offset = 8 ifTrue: [^client doDup]. offset = 9 ifTrue: [^client pushActiveContext]. self error: 'unusedBytecode' | many significant changes | ||
| InstructionStream | scanFor: | scanFor: scanBlock "Answer the index of the first bytecode for which scanBlock answer true when supplied with that bytecode." | method end byte type | method _ self method. end _ method endPC. [pc <= end] whileTrue: [(scanBlock value: (byte _ method at: pc)) ifTrue: [^true]. type _ byte // 16. pc _ type = 8 ifTrue: ["extensions" pc + (#(2 2 2 2 3 2 3 1 1 1 ) at: byte \\ 16 + 1)] ifFalse: [type = 10 ifTrue: [pc + 2"long jumps"] ifFalse: [pc + 1]]]. ^false | no changes | ||
| Integer | // | // aNumber | q | aNumber = 0 ifTrue: [^self error: 'division by 0']. self = 0 ifTrue: [^0]. q _ self quo: aNumber "Refer to the comment in Number|//.". (q negative ifTrue: [q * aNumber ~= self] ifFalse: [q = 0 and: [self negative ~= aNumber negative]]) ifTrue: [^q - 1"Truncate towards minus infinity"] ifFalse: [^q] | use ZeroDivide instead of general error | ||
| Integer | bitInvert | ||||
| Integer | \\\ | ||||
| Integer | >> | >> shiftAmount "left shift" shiftAmount < 0 ifTrue: [self error: 'negative arg']. ^ self bitShift: 0 – shiftAmount | It's a right shift | ||
| Integer class | one | ||||
| LargePositiveInteger | - | - anInteger "Primitive. Subtract the argument from the receiver and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 22> ^super – anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | quo: | quo: anInteger "Primitive. Divide the receiver by the argument and return the result. Round the result down towards zero to make it a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 33> ^super quo: anInteger | LdInstLong was renamed to LoadLong | ||
| LargePositiveInteger | < | < anInteger "Primitive. Compare the receiver with the argument and answer true if the receiver is less than the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 23> ^super < anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | * | * anInteger "Primitive. Multiply the receiver by the argument and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 29> ^super * anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | > | > anInteger "Primitive. Compare the receiver with the argument and answer true if the receiver is greater than the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 24> ^super > anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | \\ | \\ anInteger "Primitive. Take the receiver modulo the argument. The result is the remainder rounded towards negative infinity, of the receiver divided by the argument. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 31> ^super \\ anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | / | / anInteger "Primitive. Divide the receiver by the argument and answer with the result if the division is exact. Fail if the result is not a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 30> ^super / anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | >= | >= anInteger "Primitive. Compare the receiver with the argument and answer true if the receiver is greater than or equal to the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 26> ^super >= anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | // | // anInteger "Primitive. Divide the receiver by the argument and return the result. Round the result down towards negative infinity to make it a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 32> ^super // anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | + | + anInteger "Primitive. Add the receiver to the argument and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 21> ^super + anInteger | change limit in comment to 1073741824 | ||
| LargePositiveInteger | <= | <= anInteger "Primitive. Compare the receiver with the argument and answer true if the receiver is less than or equal to the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 25> ^super <= anInteger | change limit in comment to 1073741824 | ||
| LiteralNode | emitForValue:on: | emitForValue: stack on: strm code < 256 ifTrue: [strm nextPut: code] ifFalse: [self emitLong: LdInstLong on: strm]. stack push: 1 | LdInstLong was renamed to LoadLong | ||
| MessageNode | emitCase:on:value: | emitCase: stack on: strm value: forValue | braceNode sizeStream thenSize elseSize | forValue not ifTrue: [^super emitForEffect: stack on: strm]. braceNode _ arguments first. sizeStream _ ReadStream on: sizes. receiver emitForValue: stack on: strm. braceNode casesForwardDo: [:keyNode :valueNode :last | thenSize _ sizeStream next. elseSize _ sizeStream next. last ifFalse: [strm nextPut: Dup. stack push: 1]. keyNode emitForEvaluatedValue: stack on: strm. equalNode emit: stack args: 1 on: strm. self emitBranchOn: false dist: thenSize pop: stack on: strm. valueNode emitForEvaluatedValue: stack on: strm. stack pop: 1. valueNode returns ifFalse: [self emitJump: elseSize on: strm]]. arguments size = 2 ifTrue: [arguments last emitForEvaluatedValue: stack on: strm] "otherwise: [...]" ifFalse: [NodeSelf emitForValue: stack on: strm. caseErrorNode emit: stack args: 0 on: strm] | before emitForEvaluatedValue store Pop and do pop from stack if inst. variable 'last' is not true. Do pop after emit only if 'last' is true | ||
| MessageNode | transformIfTrueIfFalse: | transformIfTrueIfFalse: encoder ^ (self checkBlock: (arguments at: 1) as: 'True arg' from: encoder) and: [self checkBlock: (arguments at: 2) as: 'False arg' from: encoder] | only changes in formating | ||
| MessageNode | checkBlock:as:from: | checkBlock: node as: nodeName from: encoder node canBeSpecialArgument ifTrue: [^node isMemberOf: BlockNode]. ((node isKindOf: BlockNode) and: [node numberOfArguments > 0]) ifTrue:[^encoder notify: '<- ', nodeName , ' of ' , (MacroSelectors at: special) , ' must be 0-argument block'] ifFalse: [^encoder notify: '<- ', nodeName , ' of ' , (MacroSelectors at: special) , ' must be a block or variable'] | typo | ||
| MessageNode | sizeCase:value: | sizeCase: encoder value: forValue | braceNode sizeIndex thenSize elseSize | forValue not ifTrue: [^super sizeForEffect: encoder]. equalNode _ encoder encodeSelector: #=. braceNode _ arguments first. sizes _ Array new: 2 * braceNode numElements. sizeIndex _ sizes size. elseSize _ arguments size = 2 ifTrue: [arguments last sizeForEvaluatedValue: encoder] "otherwise: [...]" ifFalse: [caseErrorNode _ encoder encodeSelector: #caseError. 1 + (caseErrorNode size: encoder args: 0 super: false)]. "self caseError" braceNode casesReverseDo: [:keyNode :valueNode :last | sizes at: sizeIndex put: elseSize. thenSize _ valueNode sizeForEvaluatedValue: encoder. valueNode returns ifFalse: [thenSize _ thenSize + (self sizeJump: elseSize)]. sizes at: sizeIndex-1 put: thenSize. last ifFalse: [elseSize _ elseSize + 1]. "Dup" elseSize _ elseSize + (keyNode sizeForEvaluatedValue: encoder) + (equalNode size: encoder args: 1 super: false) + (self sizeBranchOn: false dist: thenSize) + thenSize. sizeIndex _ sizeIndex - 2]. ^(receiver sizeForValue: encoder) + elseSize | then size must be increased if last is false | ||
| MessageNode | transformIfNotNilIfNil: | ||||
| MessageNode | transformIfNilIfNotNil: | ||||
| MessageNode | sizeIfNil:value: | ||||
| MessageNode | ifNilReceiver | accessor receiver | |||
| MessageNode | sizeForValue: | sizeForValue: encoder | arg total argSize | special > 0 ifTrue: [^self perform: (MacroSizers at: special) with: encoder with: true]. receiver == NodeSuper ifTrue: [selector _ selector copy "only necess for splOops"]. total _ selector size: encoder args: arguments size super: receiver == NodeSuper. receiver == nil ifFalse: [total _ total + (receiver sizeForValue: encoder)]. sizes _ arguments collect: [:arg | argSize _ arg sizeForValue: encoder. total _ total + argSize. argSize]. ^total | useless temporaries | ||
| done | MessageNotUnderstood | message: | accessor | ||
| MethodContext | hideFromDebugger | ||||
| MethodDictionary | rehash | ||||
| MethodDictionary | do: | ||||
| MethodReference | asStringOrText | ||||
| Month class | daysInMonth:forYear: | ||||
| Month class | nameOfMonth: | ||||
| NaturalLanguageTranslator | translate: | ||||
| Notification | isResumable | ||||
| Number | reciprocal | reciprocal "Answer 1 divided by the receiver. Create an error notification if the receiver is 0." self = 0 ifTrue: [^self error: 'zero has no reciprocal'] ifFalse: [^1 / self] | use ZeroDivide instead of general error | ||
| Number | days | ||||
| Number | milliSeconds | ||||
| Number | raisedToInteger: | raisedToInteger: anInteger "Answer the receiver raised to the power anInteger where the argument must be a kind of Integer. This is a special case of raisedTo:." (anInteger isInteger) ifFalse: [^self error: 'raisedToInteger: only works for integral arguments']. anInteger = 0 ifTrue: [^1]. anInteger = 1 ifTrue: [^self]. anInteger > 1 ifTrue: [^(self * self raisedToInteger: anInteger // 2) * (self raisedToInteger: anInteger \\ 2)]. ^(self raisedToInteger: anInteger negated) reciprocal | use ArithmeticError instead of general error use the class message 'one' | ||
| Number | raisedTo: | raisedTo: aNumber "Answer the receiver raised to aNumber." (aNumber isInteger) ifTrue: ["Do the special case of integer power" ^self raisedToInteger: aNumber]. aNumber = 0 ifTrue: [^1]."Special case of exponent=0" aNumber = 1 ifTrue: [^self]."Special case of exponent=1" ^(aNumber * self ln) exp"Otherwise raise it to the power using logarithms" | raise error if aNumber is less than 0 if you are 0, return self lot of other significant changes | ||
| Number | / | / aNumber "Answer the result of dividing receiver by aNumber." self subclassResponsibility | different comment only | ||
| Number | isZero | ||||
| Object | shallowCopy | shallowCopy "Answer a copy of the receiver which shares the receiver's instance variables." | class newObject index | class _ self class. "I don't understand why the following check is here. Object is not supposed to have any instances at all." class == Object ifTrue: [^self]. class isVariable ifTrue: [index _ self basicSize. newObject _ class basicNew: index. [index > 0] whileTrue: [newObject basicAt: index put: (self basicAt: index). index _ index - 1]] ifFalse: [newObject _ class basicNew]. index _ class instSize. [index > 0] whileTrue: [newObject instVarAt: index put: (self instVarAt: index). index _ index - 1]. ^newObject | primitive 148 remove useless Object class test | ||
| Object | value | ||||
| Object | isFraction | simple tester | |||
| Object | error: | error: aString "The default behavior for error: is the same as halt:. The code is replicated in order to avoid showing an extra level of message sending in the Debugger. This additional message is the one a subclass should override in order to change the error handling behavior." | currentProcesss currentProcess | (currentProcess _ ScheduledControllers activeControllerProcess) isErrorHandled ifTrue: [currentProcess errorHandler value: aString value: self] ifFalse: [DebuggerView openContext: thisContext label: aString contents: thisContext shortStack] "nil error: 'error message'." | Error exception can be used | ||
| Object | triggerEvent:with: | ||||
| Object | triggerEvent:withArguments: | ||||
| Object | hash | hash "Primitive. Answer a SmallInteger whose value is half of the receiver's object pointer (interpreting object pointers as 16-bit signed quantities). Fails if the receiver is a SmallInteger. Essential. See Object documentation whatIsAPrimitive." <primitive: 75> self primitiveFailed' | use identity hash | ||
| Object | clone | ||||
| Object | asString | ||||
| Object | when:evaluate: | ||||
| OrderedCollection | makeRoomAtLast | makeRoomAtLast | index newLast delta | newLast _ self size. array size - self size = 0 ifTrue: [self grow]. (delta _ firstIndex - 1) = 0 ifTrue: [^ self]. "we might be here under false premises or grow did the job for us" 1 to: newLast do: [:index | array at: index put: (array at: index + delta). array at: index + delta put: nil]. firstIndex _ 1. lastIndex _ newLast | useless temporary variable index | ||
| OrderedCollection | copyReplaceFrom:to:with: | copyReplaceFrom: start to: stop with: replacementCollection "Answer a copy of the receiver with replacementCollection's elements in place of the receiver's start'th to stop'th elements. This does not expect a 1-1 map from replacementCollection to the start to stop elements, so it will do an insert or append." | newOrderedCollection delta newIndex index mySize startIndex stopIndex | "if start is less than 1, ignore stop and assume this is inserting at the front. if start greater than self size, ignore stop and assume this is appending. otherwise, it is replacing part of me and start and stop have to be within my bounds. " delta _ 0. startIndex _ start. stopIndex _ stop. start < 1 ifTrue: [startIndex _ stopIndex _ 0] ifFalse: [startIndex > self size ifTrue: [startIndex _ stopIndex _ self size + 1] ifFalse: [(stopIndex < (startIndex - 1) or: [stopIndex > self size]) ifTrue: [self errorOutOfBounds]. delta _ stopIndex - startIndex + 1]]. newOrderedCollection _ self species new: self size + replacementCollection size - delta. 1 to: startIndex - 1 do: [:index | newOrderedCollection add: (self at: index)]. 1 to: replacementCollection size do: [:index | newOrderedCollection add: (replacementCollection at: index)]. stopIndex + 1 to: self size do: [:index | newOrderedCollection add: (self at: index)]. ^newOrderedCollection | useless temporaries | ||
| ParseNode | isUndefTemp | ||||
| ParseNode | nowHasRef | ||||
| ParseNode | nowHasDef | ||||
| Parser | primaryExpression | primaryExpression hereType == #word ifTrue: [parseNode _ self variable. ^true]. hereType == #leftBracket ifTrue: [self advance. self blockExpression. ^true]. hereType == #leftBrace ifTrue: [self braceExpression. ^true]. hereType == #leftParenthesis ifTrue: [self advance. self expression ifFalse: [^self expected: 'expression']. (self match: #rightParenthesis) ifFalse: [^self expected: 'right parenthesis']. ^true]. (hereType == #string or: [hereType == #number or: [hereType == #literal]]) ifTrue: [parseNode _ encoder encodeLiteral: self advance. ^true]. (here == #- and: [tokenType == #number]) ifTrue: [self advance. parseNode _ encoder encodeLiteral: self advance negated. ^true]. ^false | differnt #word processing | ||
| PositionableStream class | on: | ||||
| Preferences class | duplicateControlAndAltKeys | ||||
| Preferences class | automaticKeyGeneration | ||||
| Preferences class | swapControlAndAltKeys | ||||
| Preferences class | ignoreStyleIfOnlyBold | ||||
| Preferences class | duplicateAllControlAndAltKeys | ||||
| Preferences class | startInUntrustedDirectory | ||||
| Preferences class | readDocumentAtStartup | ||||
| Preferences class | swapMouseButtons | ||||
| Preferences class | automaticPlatformSettings | ||||
| Project | printOn: | ||||
| Quadrangle | displayOn:transformation:clippingBox: | displayOn: aDisplayMedium transformation: aWindowingTransformation clippingBox: aRectangle "Display the border and region of the receiver so that it is scaled and translated with respect to aWindowingTransformation. The displayed information should be clipped so that only information with the area determined by aRectangle is displayed." | screenRectangle | screenRectangle _ (aWindowingTransformation applyTo: self) intersect: aRectangle. borderWidth ~~ 0 & (insideColor ~~ nil) ifTrue: [aDisplayMedium fill: screenRectangle fillColor: Display black "borderColor". aDisplayMedium fill: (screenRectangle insetBy: borderWidth) fillColor: insideColor] | use the class Color | ||
| Quadrangle | initialize | initialize "Initialize the region to a null Rectangle, the borderWidth to 1, the borderColor to black, and the insideColor to white." origin _ 0 @ 0. corner _ 0 @ 0. borderWidth _ 1. borderColor _ Display black. insideColor _ Display white | use the class Color | ||
| Quadrangle | setRegion:borderWidth:borderColor:insideColor: | ||||
| Quadrangle class | region:borderWidth:borderColor:insideColor: | region: aRectangle borderWidth: anInteger borderColor: aMask1 insideColor: aMask2 "Answer an instance of me with rectangle, border width and color, and inside color determined by the arguments." ^super new region: aRectangle borderWidth: anInteger borderColor: aMask1 insideColor: aMask2 | new accessor setRegion | ||
| Rectangle | setOrigin:corner: | ||||
| done | RemoteString | position | accessor filePositionHi | ||
| RunArray | mapValues: | ||||
| ScaledDecimal | scale | ||||
| ScaledDecimal | * | ||||
| ScaledDecimal | < | ||||
| ScaledDecimal | - | ||||
| ScaledDecimal | = | ||||
| ScaledDecimal | // | ||||
| ScaledDecimal | / | ||||
| ScaledDecimal | + | ||||
| ScaledDecimal class | newFromNumber:scale: | ||||
| Scanner | xDigit | xDigit "Form a number." tokenType _ #number. (aheadChar = 30 asCharacter and: [source atEnd and: [source skip: -1. source next ~= 30 asCharacter]]) ifTrue: [source skip: -1 "Read off the end last time"] ifFalse: [source skip: -2]. token _ Number readFrom: source. self step; step | while reading the Number use general error handling block. On error send #offEnd:. The result of error processing is in 'token' | ||
| SelectorNode | emit:args:on:super: | emit: stack args: nArgs on: aStream super: supered | index | stack pop: nArgs. (supered not and: [code - Send < SendLimit and: [nArgs < 3]]) ifTrue: ["short send" aStream nextPut: (code < Send ifTrue: [code] ifFalse: ["special" nArgs * 16 + code])] ifFalse: [index _ code < 256 ifTrue: [code - Send] ifFalse: [code \\ 256]. (index < 32 and: [nArgs <= 7]) ifTrue: ["medium send" aStream nextPut: SendLong + (supered ifTrue: [2] ifFalse: [0]). aStream nextPut: nArgs * 32 + index] ifFalse: ["long send" aStream nextPut: SendLong + 1 + (supered ifTrue: [2] ifFalse: [0]). aStream nextPut: nArgs. aStream nextPut: index]] | many significant changes | ||
| SequenceableCollection | @ | ||||
| SequenceableCollection | after:ifAbsent: | ||||
| Set class | rehashAllSets | ||||
| Set class | new | new ^ self new: 4 | use size 5 and intance message initiailze: | ||
| SmallInteger | bitShift: | bitShift: arg "Primitive. Answer an Integer whose value is the receiver's value shifted left by the number of bits indicated by the argument. Negative arguments shift right. Essential. See Object documentation whatIsAPrimitive." <primitive: 17> self < 0 ifTrue: [^ -1 - (-1-self bitShift: arg)]. ^ super bitShift: arg | many significant changes | ||
| SmallInteger | bitXor: | bitXor: arg "Primitive. Answer an Integer whose bits are the logical XOR of the receiver's bits and those of the argument, arg. Negative numbers are interpreted as a 32-bit 2's-complement. Essential. See Object documentation whatIsAPrimitive." <primitive: 16> self < 0 ifTrue: [^ 16rFFFFFFFF + (self+1) bitXor: arg]. ^arg bitXor: self | use bit invert special case for zero | ||
| SmallInteger | / | / aNumber "Primitive. This primitive (for /) divides the receiver by the argument and returns the result if the division is exact. Fail if the result is not a whole integer. Fail if the argument is 0 or is not a SmallInteger. Optional. No Lookup. See Object documentation whatIsAPrimitive." <primitive: 10> aNumber = 0 ifTrue: [^self error: 'division by 0']. (aNumber isMemberOf: SmallInteger) ifTrue: [^(Fraction numerator: self denominator: aNumber) reduced] ifFalse: [^super / aNumber] | use ZeroDivide instead of general error | ||
| SmalltalkImage | lastUpdateString | ||||
| SortedCollection | sort:to: | sort: i to: j "Sort elements i through j of self to be nondescending according to sortBlock." | di dij dj tt ij k l n | "The prefix d means the data at that index." (n _ j + 1 - i) <= 1 ifTrue: [^self]."Nothing to sort." "Sort di,dj." di _ array at: i. dj _ array at: j. (sortBlock value: di value: dj) "i.e., should di precede dj?" ifFalse: [array swap: i with: j. tt _ di. di _ dj. dj _ tt]. n > 2 ifTrue: "More than two elements." [ij _ (i + j) // 2. "ij is the midpoint of i and j." dij _ array at: ij. "Sort di,dij,dj. Make dij be their median." (sortBlock value: di value: dij) "i.e. should di precede dij?" ifTrue: [(sortBlock value: dij value: dj) "i.e., should dij precede dj?" ifFalse: [array swap: j with: ij. dij _ dj]] ifFalse: "i.e. di should come after dij" [array swap: i with: ij. dij _ di]. n > 3 ifTrue: "More than three elements." ["Find k>i and l<j such that dk,dij,dl are in reverse order. Swap k and l. Repeat this procedure until k and l pass each other." k _ i. l _ j. [[l _ l - 1. k <= l and: [sortBlock value: dij value: (array at: l)]] whileTrue. "i.e. while dl succeeds dij" [k _ k + 1. k <= l and: [sortBlock value: (array at: k) value: dij]] whileTrue. "i.e. while dij succeeds dk" k <= l] whileTrue: [array swap: k with: l]. "Now l<k (either 1 or 2 less), and di through dl are all less than or equal to dk through dj. Sort those two segments." self sort: i to: l. self sort: k to: j]] | use should:precede: | ||
| SortedCollection | should:precede: | ||||
| StandardFileStream | ensureOpen | ||||
| StandardFileStream | nextPut: | nextPut: char "Put char on the receiver stream. 2/12/96 sw" buffer1 at: 1 put: char. self primWrite: fileID from: buffer1 startingAt: 1 count: 1. ^ char | raise error if the file is not in the rwmode | ||
| StandardFileStream | closed | ||||
| done | StandardFileStream | name | accessor name | ||
| SystemDictionary | specialNargsAt: | ||||
| SystemDictionary | setMacFileInfoOn: | ||||
| SystemDictionary | specialSelectorAt: | specialSelectorAt: anInteger "Answer the special message selector stored at location anInteger in the system dictionary." ^SpecialSelectors at: anInteger * 2 – 1 | instead of SpecialSelectors use 24th item of specialObjectsArray | ||
| SystemDictionary | specialSelectorSize | specialSelectorSize "Answer the number of special selectors in the system." ^SpecialSelectors size // 2 | instead of SpecialSelectors use 24th item of specialObjectsArray | ||
| done | SystemVersion | date | accessor | ||
| done | SystemVersion | version | accessor | ||
| SystemVersion class | current | ||||
| done | TempVariableNode | scope | accessor | ||
| done | TempVariableNode | isArg | accessor isAnArg | ||
| TempVariableNode | nowHasRef | ||||
| TempVariableNode | isArg: | ||||
| TempVariableNode | isTemp | simple tester | |||
| needs comment | TempVariableNode | scope: | accessor | ||
| TempVariableNode | isUndefTemp | ||||
| TempVariableNode | nowHasDef | ||||
| Text | addAttribute:from:to: | ||||
| Text class | string:attribute: | ||||
| Text class | string:attributes: | ||||
| TextAttribute | set | ||||
| done | TextColor | color | accessor | ||
| done | TextColor | color: | accessor | ||
| TextColor class | color: | ||||
| TextEmphasis | set | ||||
| TextEmphasis | emphasisCode | ||||
| TextEmphasis | emphasisCode: | ||||
| TextEmphasis class | italic | ||||
| TextEmphasis class | bold | ||||
| TextEmphasis class | normal | ||||
| done | TextFontChange | fontNumber | accessor | ||
| done | TextFontChange | fontNumber: | accessor | ||
| TextFontChange class | fontNumber: | ||||
| TextStream | withAttributes:do: | ||||
| Time | print24:showSeconds:on: | ||||
| Time | < | < aTime "Answer whether aTime is earlier than the receiver." hours ~= aTime hours ifTrue: [^hours < aTime hours]. minutes ~= aTime minutes ifTrue: [^minutes < aTime minutes]. ^seconds < aTime seconds | compare durations | ||
| Time | second | ^ self print24: false on: aStream | |||
| Time | minute | ||||
| Time | ticks: | ||||
| Time | asDuration | ||||
| Time | hour | ||||
| Time | seconds | seconds "Answer the number of seconds the receiver represents." ^seconds | use second | ||
| Time | hour24 | ||||
| Time | printOn: | printOn: aStream | different code | ||
| Time | = | = aTime "Answer whether aTime represents the same second as the receiver." self species = aTime species ifTrue: [^hours = aTime hours & (minutes = aTime minutes) & (seconds = aTime seconds)] ifFalse: [^false] | different code, compare ticks | ||
| Time class | fromSeconds: | fromSeconds: secondCount "Answer an instnace of me that is secondCount number of seconds since midnight." | secondsInHour hours secs | secs _ secondCount asInteger. hours _ secs // 3600. secondsInHour _ secs \\ 3600. ^self new hours: hours minutes: secondsInHour // 60 seconds: secondsInHour \\ 60 | delegate to seconds: constructor | ||
| Time class | seconds: | ||||
| Time class | seconds:nanoSeconds: | ||||
| Time class | dateAndTimeFromSeconds: | ||||
| Time class | dateAndTimeNow | dateAndTimeNow "Answer a two-element Array of (Date today, Time now)." | secondCount d t | secondCount _ self primSecondsClock. d _ Date fromDays: secondCount // 86400. t _ Time fromSeconds: secondCount \\ 86400. ^ Array with: d with: t | different code (use dateAndTimeFromSeconds:) | ||
| Timespan | < | ||||
| Timespan | + | ||||
| Timespan | - | ||||
| done | Timespan | start: | accessor | ||
| done | Timespan | start | accessor | ||
| Timespan | duration: | ||||
| Timespan class | starting:duration: | ||||
| done | TimeZone | abbreviation | accessor | ||
| done | TimeZone | offset | accessor | ||
| TimeZone | printOn: | ||||
| TranslucentColor | privateAlpha | ||||
| TranslucentColor | hash | ||||
| UnixFileDirectory class | pathNameDelimiter | ||||
| needs testcase | WarpBlt | cellSize: | accessor | ||
| WarpBlt | startFrom:to:offset: | ||||
| WarpBlt | sourceForm:destRect: | ||||
| done | WarpBlt | cellSize | accessor | ||
| WarpBlt | copyQuad:toRect: | copyQuad: pts toRect: aRectangle | fixedPt1 | sourceX _ sourceY _ 0. self destRect: aRectangle. fixedPt1 _ (pts at: 1) x isInteger ifTrue: [16384] ifFalse: [16384.0]. p1x _ ((pts at: 1) x * fixedPt1) asInteger. p2x _ ((pts at: 2) x * fixedPt1) asInteger. p3x _ ((pts at: 3) x * fixedPt1) asInteger. p4x _ ((pts at: 4) x * fixedPt1) asInteger. p1y _ ((pts at: 1) y * fixedPt1) asInteger. p2y _ ((pts at: 2) y * fixedPt1) asInteger. p3y _ ((pts at: 3) y * fixedPt1) asInteger. p4y _ ((pts at: 4) y * fixedPt1) asInteger. p1z _ p2z _ p3z _ p4z _ 16384. "z-warp ignored for now" self warpBits | use sourceQuad:destRect: | ||
| WarpBlt | deltaFrom:to:nSteps: | ||||
| done | ZeroDivide | dividend: | accessor | ||