#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Sun, 24 Mar 2019 12:27:09 +0100
changeset 23968 53c2dc17d441
parent 23967 a7d3bab7645a
child 23969 f77a2da0552f
#FEATURE by cg class: UnboxedIntegerArray class added: #new:elementBitSize:signed:
UnboxedIntegerArray.st
--- 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