mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
1 line
10 KiB
Smalltalk
1 line
10 KiB
Smalltalk
'From Pharo4.0 of 18 March 2013 [Latest update: #40152] on 6 August 2014 at 10:12:19.27738 pm'!
|
|
Object subclass: #Boolean
|
|
instanceVariableNames: ''
|
|
classVariableNames: ''
|
|
poolDictionaries: ''
|
|
category: 'Kernel-Objects'!
|
|
Boolean subclass: #False
|
|
instanceVariableNames: ''
|
|
classVariableNames: ''
|
|
poolDictionaries: ''
|
|
category: 'Kernel-Objects'!
|
|
Boolean subclass: #True
|
|
instanceVariableNames: ''
|
|
classVariableNames: ''
|
|
poolDictionaries: ''
|
|
category: 'Kernel-Objects'!
|
|
|
|
!Boolean methodsFor: '*monticellofiletree-core' stamp: 'dkh 4/6/2012 15:56:14'!
|
|
writeCypressJsonOn: aStream forHtml: forHtml indent: startIndent
|
|
"by default ignore <forHtml> ... <forHtml> is used for Dictionary and Array, i.e., container objects and String which actually encodes itself differently for HTML"
|
|
|
|
aStream nextPutAll: self printString! !
|
|
|
|
!Boolean methodsFor: 'copying' stamp: 'tk 8/20/1998 16:07'!
|
|
veryDeepCopyWith: deepCopier
|
|
"Return self. I can't be copied. Do not record me."! !
|
|
|
|
!Boolean methodsFor: 'copying'!
|
|
deepCopy
|
|
"Receiver has two concrete subclasses, True and False.
|
|
Only one instance of each should be made, so return self."! !
|
|
|
|
!Boolean methodsFor: 'copying'!
|
|
shallowCopy
|
|
"Receiver has two concrete subclasses, True and False.
|
|
Only one instance of each should be made, so return self."! !
|
|
|
|
!Boolean methodsFor: 'logical operations'!
|
|
not
|
|
"Negation. Answer true if the receiver is false, answer false if the
|
|
receiver is true."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'logical operations'!
|
|
& aBoolean
|
|
"Evaluating conjunction. Evaluate the argument. Then answer true if
|
|
both the receiver and the argument are true."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'logical operations'!
|
|
| aBoolean
|
|
"Evaluating disjunction (OR). Evaluate the argument. Then answer true
|
|
if either the receiver or the argument is true."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'logical operations' stamp: 'stephane.ducasse 5/20/2009 21:28'!
|
|
==> aBlock
|
|
"The material conditional, also known as the material implication or truth functional conditional.
|
|
Correspond to not ... or ... and does not correspond to the English if...then... construction.
|
|
|
|
known as:
|
|
b if a
|
|
a implies b
|
|
if a then b
|
|
b is a consequence of a
|
|
a therefore b (but note: 'it is raining therefore it is cloudy' is implication; 'it is autumn therefore the leaves are falling' is equivalence).
|
|
|
|
Here is the truth table for material implication:
|
|
|
|
p | q | p ==> q
|
|
-------|-------|-------------
|
|
T | T | T
|
|
T | F | F
|
|
F | T | T
|
|
F | F | T
|
|
"
|
|
|
|
^self not or: [aBlock value]! !
|
|
|
|
!Boolean methodsFor: 'logical operations'!
|
|
eqv: aBoolean
|
|
"Answer true if the receiver is equivalent to aBoolean."
|
|
|
|
^self == aBoolean! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
or: alternativeBlock
|
|
"Nonevaluating disjunction. If the receiver is false, answer the value of
|
|
the argument, alternativeBlock; otherwise answer true without
|
|
evaluating the argument."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
ifFalse: alternativeBlock
|
|
"If the receiver is true (i.e., the condition is true), then the value is the
|
|
true alternative, which is nil. Otherwise answer the result of evaluating
|
|
the argument, alternativeBlock. Create an error notification if the
|
|
receiver is nonBoolean. Execution does not actually reach here because
|
|
the expression is compiled in-line."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
|
|
"If the receiver is true (i.e., the condition is true), then answer the value
|
|
of the argument trueAlternativeBlock. If the receiver is false, answer the
|
|
result of evaluating the argument falseAlternativeBlock. If the receiver
|
|
is a nonBoolean then create an error notification. Execution does not
|
|
actually reach here because the expression is compiled in-line."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
ifFalse: falseAlternativeBlock ifTrue: trueAlternativeBlock
|
|
"Same as ifTrue:ifFalse:."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
ifTrue: alternativeBlock
|
|
"If the receiver is false (i.e., the condition is false), then the value is the
|
|
false alternative, which is nil. Otherwise answer the result of evaluating
|
|
the argument, alternativeBlock. Create an error notification if the
|
|
receiver is nonBoolean. Execution does not actually reach here because
|
|
the expression is compiled in-line."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: 'controlling'!
|
|
and: alternativeBlock
|
|
"Nonevaluating conjunction. If the receiver is true, answer the value of
|
|
the argument, alternativeBlock; otherwise answer false without
|
|
evaluating the argument."
|
|
|
|
self subclassResponsibility! !
|
|
|
|
!Boolean methodsFor: '*Fuel' stamp: 'MartinDias 2/21/2013 12:49'!
|
|
fuelAccept: aGeneralMapper
|
|
|
|
^aGeneralMapper visitHookPrimitive: self! !
|
|
|
|
!Boolean methodsFor: '*Fuel' stamp: 'MartinDias 2/21/2013 12:49'!
|
|
serializeOn: anEncoder
|
|
"Do nothing"! !
|
|
|
|
!Boolean methodsFor: '*NativeBoost-Core' stamp: 'cb 4/22/2013 14:15'!
|
|
asNBExternalType: gen
|
|
"boolean value in argument description array defines a simple 0 or 1 constant
|
|
|
|
#( true false ) - turned into a 1 and 0
|
|
"
|
|
^ NBFFIConst value: self asBit! !
|
|
|
|
!Boolean methodsFor: 'printing'!
|
|
storeOn: aStream
|
|
"Refer to the comment in Object|storeOn:."
|
|
|
|
self printOn: aStream! !
|
|
|
|
!Boolean methodsFor: 'printing' stamp: 'apb 4/21/2006 09:22'!
|
|
isLiteral
|
|
^ true! !
|
|
|
|
!Boolean methodsFor: 'self evaluating' stamp: 'sd 7/31/2005 21:45'!
|
|
isSelfEvaluating
|
|
^ true! !
|
|
|
|
!Boolean methodsFor: 'converting' stamp: 'CamilloBruni 3/27/2012 17:20'!
|
|
asBit
|
|
"convert myself to an Integer representing 1 for true and 0 for false"
|
|
self subclassResponsibility! !
|
|
|
|
|
|
!Boolean class methodsFor: '*System-Settings-Browser' stamp: 'alain.plantec 3/18/2009 14:48'!
|
|
settingInputWidgetForNode: aSettingNode
|
|
^ aSettingNode inputWidgetForBoolean! !
|
|
|
|
!Boolean class methodsFor: '*NativeBoost-Core' stamp: 'IgorStasenko 8/13/2013 16:47'!
|
|
asNBExternalType: gen
|
|
^ NBBool asNBExternalType: gen! !
|
|
|
|
!Boolean class methodsFor: 'instance creation'!
|
|
new
|
|
self error: 'You may not create any more Booleans - this is two-valued logic'! !
|
|
|
|
|
|
!False methodsFor: 'printing'!
|
|
printOn: aStream
|
|
|
|
aStream nextPutAll: 'false'! !
|
|
|
|
!False methodsFor: 'logical operations'!
|
|
not
|
|
"Negation -- answer true since the receiver is false."
|
|
|
|
^true! !
|
|
|
|
!False methodsFor: 'logical operations' stamp: 'md 7/30/2005 18:05'!
|
|
& aBoolean
|
|
"Evaluating conjunction -- answer false since receiver is false."
|
|
|
|
^self! !
|
|
|
|
!False methodsFor: 'logical operations'!
|
|
| aBoolean
|
|
"Evaluating disjunction (OR) -- answer with the argument, aBoolean."
|
|
|
|
^aBoolean! !
|
|
|
|
!False methodsFor: 'logical operations' stamp: 'CamilloBruni 8/1/2012 16:25'!
|
|
xor: aBoolean
|
|
^aBoolean value! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
or: alternativeBlock
|
|
"Nonevaluating disjunction -- answer value of alternativeBlock."
|
|
|
|
^alternativeBlock value! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
ifFalse: alternativeBlock
|
|
"Answer the value of alternativeBlock. Execution does not actually
|
|
reach here because the expression is compiled in-line."
|
|
|
|
^alternativeBlock value! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
|
|
"Answer the value of falseAlternativeBlock. Execution does not
|
|
actually reach here because the expression is compiled in-line."
|
|
|
|
^falseAlternativeBlock value! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
ifFalse: falseAlternativeBlock ifTrue: trueAlternativeBlock
|
|
"Answer the value of falseAlternativeBlock. Execution does not
|
|
actually reach here because the expression is compiled in-line."
|
|
|
|
^falseAlternativeBlock value! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
ifTrue: alternativeBlock
|
|
"Since the condition is false, answer the value of the false alternative,
|
|
which is nil. Execution does not actually reach here because the
|
|
expression is compiled in-line."
|
|
|
|
^nil! !
|
|
|
|
!False methodsFor: 'controlling'!
|
|
and: alternativeBlock
|
|
"Nonevaluating conjunction -- answer with false since the receiver is false."
|
|
|
|
^self! !
|
|
|
|
!False methodsFor: 'converting' stamp: 'IgorStasenko 12/28/2012 15:09'!
|
|
asBit
|
|
|
|
^ 0! !
|
|
|
|
|
|
!True methodsFor: 'controlling'!
|
|
or: alternativeBlock
|
|
"Nonevaluating disjunction -- answer true since the receiver is true."
|
|
|
|
^self! !
|
|
|
|
!True methodsFor: 'controlling'!
|
|
ifFalse: alternativeBlock
|
|
"Since the condition is true, the value is the true alternative, which is nil.
|
|
Execution does not actually reach here because the expression is compiled
|
|
in-line."
|
|
|
|
^nil! !
|
|
|
|
!True methodsFor: 'controlling'!
|
|
ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
|
|
"Answer with the value of trueAlternativeBlock. Execution does not
|
|
actually reach here because the expression is compiled in-line."
|
|
|
|
^trueAlternativeBlock value! !
|
|
|
|
!True methodsFor: 'controlling'!
|
|
ifFalse: falseAlternativeBlock ifTrue: trueAlternativeBlock
|
|
"Answer the value of trueAlternativeBlock. Execution does not
|
|
actually reach here because the expression is compiled in-line."
|
|
|
|
^trueAlternativeBlock value! !
|
|
|
|
!True methodsFor: 'controlling'!
|
|
ifTrue: alternativeBlock
|
|
"Answer the value of alternativeBlock. Execution does not actually
|
|
reach here because the expression is compiled in-line."
|
|
|
|
^alternativeBlock value! !
|
|
|
|
!True methodsFor: 'controlling'!
|
|
and: alternativeBlock
|
|
"Nonevaluating conjunction -- answer the value of alternativeBlock since
|
|
the receiver is true."
|
|
|
|
^alternativeBlock value! !
|
|
|
|
!True methodsFor: 'converting' stamp: 'IgorStasenko 12/28/2012 15:09'!
|
|
asBit
|
|
|
|
^ 1! !
|
|
|
|
!True methodsFor: 'printing'!
|
|
printOn: aStream
|
|
|
|
aStream nextPutAll: 'true'! !
|
|
|
|
!True methodsFor: 'logical operations'!
|
|
not
|
|
"Negation--answer false since the receiver is true."
|
|
|
|
^false! !
|
|
|
|
!True methodsFor: 'logical operations' stamp: 'md 7/30/2005 18:04'!
|
|
& aBoolean
|
|
"Evaluating conjunction -- answer aBoolean since receiver is true."
|
|
|
|
^aBoolean! !
|
|
|
|
!True methodsFor: 'logical operations'!
|
|
| aBoolean
|
|
"Evaluating disjunction (OR) -- answer true since the receiver is true."
|
|
|
|
^self! !
|
|
|
|
!True methodsFor: 'logical operations' stamp: 'CamilloBruni 8/1/2012 16:25'!
|
|
xor: aBoolean
|
|
^aBoolean value not! !
|
|
|
|
|
|
!True class methodsFor: '*Fuel' stamp: 'MartinDias 2/21/2013 12:51'!
|
|
materializeFrom: aDecoder
|
|
"Answer my unique instance"
|
|
|
|
^ true! !
|
|
|
|
|
|
!False class methodsFor: '*Fuel' stamp: 'MartinDias 2/21/2013 12:51'!
|
|
materializeFrom: aDecoder
|
|
"Answer my unique instance"
|
|
|
|
^ false! !
|
|
|