--- a/CharacterSet.st Thu Dec 18 09:55:11 2014 +0100
+++ b/CharacterSet.st Wed Dec 24 12:36:29 2014 +0100
@@ -52,6 +52,12 @@
"Created: / 28-01-2011 / 17:29:24 / cg"
! !
+!CharacterSet methodsFor:'accessing'!
+
+byteArrayMap
+ ^bits
+! !
+
!CharacterSet methodsFor:'adding & removing'!
add:aCharacter
@@ -73,6 +79,20 @@
"Created: / 28-01-2011 / 17:44:21 / cg"
!
+includes:aCharacter
+ "Return true if the set contains aCharacter"
+
+ |cp byteIndex bitIndex|
+
+ cp := aCharacter codePoint.
+ (cp > 255) ifTrue:[^ false].
+
+ byteIndex := (cp // 8) + 1.
+ bitIndex := (cp \\ 8) + 1.
+ byteIndex > bits size ifTrue:[^ false].
+ ^ ((bits at:byteIndex) bitAt:bitIndex) ~~ 0
+!
+
remove:aCharacter ifAbsent:exceptionValue
|cp byteIndex bitIndex mask|
@@ -91,6 +111,23 @@
"Created: / 28-01-2011 / 17:51:22 / cg"
! !
+!CharacterSet methodsFor:'comparing'!
+
+= something
+ ^ (self species = something species)
+ and:[ bits = something byteArrayMap ]
+!
+
+hash
+ ^ bits hash
+! !
+
+!CharacterSet methodsFor:'copying'!
+
+postCopy
+ bits := bits copy
+! !
+
!CharacterSet methodsFor:'initialization'!
initialize
@@ -140,6 +177,6 @@
!CharacterSet class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic2/CharacterSet.st,v 1.2 2013-03-19 09:22:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic2/CharacterSet.st,v 1.3 2014-12-24 11:36:29 cg Exp $'
! !