IntegerArray.st
author Merge Script
Mon, 06 Jun 2016 06:56:04 +0200
branchjv
changeset 3882 a013a37e2c3d
parent 3869 d80d50eb684e
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
736
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
1177
f81425b27be5 inheritance & documentation
Claus Gittinger <cg@exept.de>
parents: 736
diff changeset
    12
"{ Package: 'stx:libbasic2' }"
f81425b27be5 inheritance & documentation
Claus Gittinger <cg@exept.de>
parents: 736
diff changeset
    13
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    14
"{ NameSpace: Smalltalk }"
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    15
1177
f81425b27be5 inheritance & documentation
Claus Gittinger <cg@exept.de>
parents: 736
diff changeset
    16
UnboxedIntegerArray variableLongSubclass:#IntegerArray
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:''
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Collections-Arrayed'
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!IntegerArray class methodsFor:'documentation'!
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 1997 by eXept Software AG
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	      All Rights Reserved
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    IntegerArrays store integers in the range 0..16rFFFFFFFF.
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    In contrast to normal arrays (which store pointers to their elements),
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    integerArrays store the values in a dense & compact way. 
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    Since the representation fits the underlying C-language systems representation
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    of unsigned int32's, this is also useful to pass bulk data to c primitive code.
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
736
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    47
    [memory requirements:]
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    48
        OBJ-HEADER + (size * 4)
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    49
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    [see also:]
736
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    51
        ByteArray BooleanArray FloatArray DoubleArray Array
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    52
        SignedWordArray WordArray
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    [author:]
736
db164846b078 documentation
Claus Gittinger <cg@exept.de>
parents: 601
diff changeset
    55
        Claus Gittinger
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
"
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
! !
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
2640
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    59
!IntegerArray class methodsFor:'queries'!
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    60
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    61
elementByteSize
3336
c07bb7638ac1 comment/format in: #elementByteSize
Claus Gittinger <cg@exept.de>
parents: 2640
diff changeset
    62
    "for bit-like containers, return the number of bytes stored per element.
c07bb7638ac1 comment/format in: #elementByteSize
Claus Gittinger <cg@exept.de>
parents: 2640
diff changeset
    63
     Here, 4 is returned"
c07bb7638ac1 comment/format in: #elementByteSize
Claus Gittinger <cg@exept.de>
parents: 2640
diff changeset
    64
2640
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    65
    ^ 4
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    66
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    67
    "Created: / 15-09-2011 / 14:12:15 / cg"
3729
0a77871b5033 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 3709
diff changeset
    68
!
0a77871b5033 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 3709
diff changeset
    69
0a77871b5033 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 3709
diff changeset
    70
maxVal
3869
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    71
    "the maximum value which can be stored in instances of me"
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    72
3729
0a77871b5033 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 3709
diff changeset
    73
    ^ 16rFFFFFFFF
3869
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    74
!
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    75
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    76
minVal
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    77
    "the minimum value which can be stored in instances of me"
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    78
d80d50eb684e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3766
diff changeset
    79
    ^ 0
2640
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    80
! !
21e2ea3c88a5 faster elementByteSize query
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
    81
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    82
!IntegerArray methodsFor:'accessing'!
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    83
3766
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
    84
unsignedInt32At:index MSB:msb
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    85
    "return the 4-bytes starting at index as an (unsigned) Integer.
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    86
     The index is a smalltalk index (i.e. 1-based).
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    87
     The value is retrieved MSB (high 8 bits at lower index) if msb is true;
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    88
     LSB-first (i.e. low 8-bits at lower byte index) if its false.
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    89
     Notice: 
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    90
        the index is a byte index; thus, this allows for unaligned access to
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    91
        words on any boundary.
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    92
     Question: should it be retrieve signed values ? (see ByteArray>>signedWordAt:)"
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    93
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    94
    |w|
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    95
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    96
    (index bitAnd: 16r03) == 1 ifTrue:[
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    97
        "/ aligned fetch
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    98
        w := self at:(index // 4) + 1.
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
    99
        (msb ~~ UninterpretedBytes isBigEndian) ifTrue:[
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   100
            w := w swapBytes
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   101
        ].    
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   102
        ^ w
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   103
    ].
3766
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   104
    ^ super unsignedInt32At:index MSB:msb
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   105
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   106
    "
3766
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   107
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:1 MSB:false 
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   108
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:5 MSB:false
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   109
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:9 MSB:false
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   110
3766
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   111
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:2 MSB:false
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   112
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:3 MSB:false
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   113
     #(16r0201 16r0403 16r0605) asIntegerArray unsignedInt32At:4 MSB:false
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   114
3766
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   115
     #(16rFFEE 16r0403 16r0605) asIntegerArray unsignedInt32At:1 MSB:false
8150d1fa46cb #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   116
     #(16rFFEE 16r0403 16r0605) asIntegerArray unsignedInt32At:1 MSB:true
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   117
    "
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   118
! !
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   119
1445
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   120
!IntegerArray methodsFor:'comparing'!
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   121
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   122
< anIntegerArray
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   123
    "Compare the receiver with the argument and return true if the
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   124
     receiver is greater than the argument. Otherwise return false.
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   125
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   126
     Redefined for speed (xpath handling)"
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   127
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   128
%{  /* NOCONTEXT */
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   129
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   130
    int len1, len2, min, i;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   131
    REGISTER OBJ s = anIntegerArray;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   132
    unsigned int *ip1, *ip2;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   133
    OBJ cls;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   134
    OBJ myCls;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   135
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   136
    if (__isNonNilObject(s)) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   137
        cls = __qClass(s);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   138
        myCls = __qClass(self);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   139
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   140
        if ((cls == IntegerArray) || (cls == myCls)) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   141
            ip2 = __integerArrayVal(s);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   142
            len2 = __integerArraySize(s);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   143
            /*
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   144
             * care for instances of subclasses ...
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   145
             */
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   146
            if (cls != IntegerArray) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   147
                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars)) / sizeof(__integerArrayVal(s));
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   148
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   149
                ip2 += n;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   150
                len2 -= n;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   151
            }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   152
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   153
            ip1 = __integerArrayVal(self);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   154
            len1 = __integerArraySize(self);
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   155
            /*
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   156
             * care for instances of subclasses ...
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   157
             */
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   158
            if (myCls != IntegerArray) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   159
                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars)) / sizeof(__integerArrayVal(s));
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   160
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   161
                ip1 += n;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   162
                len1 -= n;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   163
            }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   164
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   165
            if (len1 <= len2)
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   166
                min = len1;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   167
            else
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   168
                min = len2;
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   169
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   170
            for (i = 0; i < min; i++) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   171
                if (ip1[i] < ip2[i]) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   172
                    RETURN(true)
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   173
                }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   174
                if (ip1[i] > ip2[i]) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   175
                    RETURN(false)
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   176
                }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   177
            }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   178
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   179
            if (len1 < len2) {
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   180
                RETURN ( true );
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   181
            }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   182
            RETURN ( false );
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   183
        }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   184
    }
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   185
%}.
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   186
    ^ super < anIntegerArray
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   187
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   188
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   189
    "
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   190
        (IntegerArray newFrom:#[1 2 3 4 5]) < (IntegerArray newFrom:#[1 2 3 4 5])
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   191
        (IntegerArray newFrom:#[1 2 3 4 5]) < (IntegerArray newFrom:#[1 2 3 4])
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   192
        (IntegerArray newFrom:#[1 2 3 4]) < (IntegerArray newFrom:#[1 2 3 4 5])
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   193
        (IntegerArray newFrom:#[1 2 3 4 5]) < (IntegerArray newFrom:#[1 2 3 4 6])
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   194
        (IntegerArray newFrom:#[]) < (IntegerArray newFrom:#[1 2 3 4 6])
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   195
    "
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   196
! !
6fbd46d7f9f0 Redefine #< for speed
Stefan Vogel <sv@exept.de>
parents: 1177
diff changeset
   197
2289
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   198
!IntegerArray methodsFor:'converting'!
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   199
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   200
asIntegerArray
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   201
    "return a new IntegerArray with the collection's elements.
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   202
     That's the receiver itself here"
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   203
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   204
    ^ self.
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   205
! !
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   206
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
!IntegerArray class methodsFor:'documentation'!
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
version
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   210
    ^ '$Header$'
2289
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   211
!
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   212
57de37a4eb31 added: #asIntegerArray
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   213
version_CVS
3709
b24c7442ce72 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 3336
diff changeset
   214
    ^ '$Header$'
601
9f043e153af4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
! !
3336
c07bb7638ac1 comment/format in: #elementByteSize
Claus Gittinger <cg@exept.de>
parents: 2640
diff changeset
   216