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