#FEATURE by cg
class: UnboxedIntegerArray class
added: #new:elementBitSize:signed:
--- a/UnboxedIntegerArray.st Sun Mar 24 12:26:56 2019 +0100
+++ b/UnboxedIntegerArray.st Sun Mar 24 12:27:09 2019 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2003 by eXept Software AG
All Rights Reserved
@@ -53,6 +55,41 @@
"
! !
+!UnboxedIntegerArray class methodsFor:'instance creation'!
+
+new:size elementBitSize:nBitsPerElement signed:signedBoolean
+ "return a new instance for size elements,
+ each holding an nBitsPerElement-sized integer.
+ With nBitsPerElement == 8, this returns a byteArray/signedByteArray,
+ with nBitsPerElement == 16, a word/signedWordArray
+ with nBitsPerElement == 32, an integer/signedIntegerArray
+ and with nBitsPerElement == 65, a longInteger/signedLongIntegerArray
+ Other sizes might be provided in the future."
+
+ nBitsPerElement == 8 ifTrue:[
+ ^ (signedBoolean ifTrue:[SignedByteArray] ifFalse:[ByteArray]) new:size
+ ].
+ nBitsPerElement == 16 ifTrue:[
+ ^ (signedBoolean ifTrue:[SignedWordArray] ifFalse:[WordArray]) new:size
+ ].
+ nBitsPerElement == 32 ifTrue:[
+ ^ (signedBoolean ifTrue:[SignedIntegerArray] ifFalse:[IntegerArray]) new:size
+ ].
+ nBitsPerElement == 64 ifTrue:[
+ ^ (signedBoolean ifTrue:[SignedLongIntegerArray] ifFalse:[LongIntegerArray]) new:size
+ ].
+ self error:'unsupported bits-per integer'
+
+ "
+ self new:10 elementBitSize:8 signed:false
+ self new:10 elementBitSize:8 signed:true
+ self new:10 elementBitSize:16 signed:true
+ self new:10 elementBitSize:64 signed:true
+ "
+
+ "Created: / 24-03-2019 / 12:22:53 / Claus Gittinger"
+! !
+
!UnboxedIntegerArray class methodsFor:'queries'!
isAbstract