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