Interval.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18512 828873354c68
child 19277 e9182dc00c6d
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
     1
"{ Encoding: utf8 }"
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
     2
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     4
 COPYRIGHT (c) 1989 by Claus Gittinger
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
     5
              All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
"
5521
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
    14
"{ Package: 'stx:libbasic' }"
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
    15
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
    16
"{ NameSpace: Smalltalk }"
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
    17
6132
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
    18
ReadOnlySequenceableCollection subclass:#Interval
8940
b05bb4dd96b3 collect returns an Array if possible
Claus Gittinger <cg@exept.de>
parents: 8394
diff changeset
    19
	instanceVariableNames:'start stop step'
b05bb4dd96b3 collect returns an Array if possible
Claus Gittinger <cg@exept.de>
parents: 8394
diff changeset
    20
	classVariableNames:''
b05bb4dd96b3 collect returns an Array if possible
Claus Gittinger <cg@exept.de>
parents: 8394
diff changeset
    21
	poolDictionaries:''
b05bb4dd96b3 collect returns an Array if possible
Claus Gittinger <cg@exept.de>
parents: 8394
diff changeset
    22
	category:'Collections-Sequenceable'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
88
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    25
!Interval class methodsFor:'documentation'!
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    26
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    27
copyright
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    28
"
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    29
 COPYRIGHT (c) 1989 by Claus Gittinger
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    30
              All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
88
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    32
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    33
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    35
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    36
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    37
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    38
"
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    39
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    40
88
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    41
documentation
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    42
"
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    43
    Intervals represent a collection (or range) of numeric values specified by
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
    44
    a startValue, an endValue and a step. 
759
908363ce8a32 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    45
    The interesting thing is that the elements are computed, not stored.
11409
82874ed12ab4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11270
diff changeset
    46
    However, protocol-wise, intervals behave like any other (read-only) sequenceable collection.
82874ed12ab4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11270
diff changeset
    47
88
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    48
    For example, the interval (1 to:5) containes the elements (1 2 3 4 5) and
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    49
    (1 to:6 by:2) contains (1 3 5).
339
claus
parents: 328
diff changeset
    50
18511
f123160b648b class: Interval
Claus Gittinger <cg@exept.de>
parents: 18510
diff changeset
    51
    The step may be negative, to count backward:
f123160b648b class: Interval
Claus Gittinger <cg@exept.de>
parents: 18510
diff changeset
    52
    (5 to:1 by:-1) contains (5 4 3 2 1), and (6 to:1 by:-2) contains (6 4 2).
f123160b648b class: Interval
Claus Gittinger <cg@exept.de>
parents: 18510
diff changeset
    53
f123160b648b class: Interval
Claus Gittinger <cg@exept.de>
parents: 18510
diff changeset
    54
339
claus
parents: 328
diff changeset
    55
    examples:
claus
parents: 328
diff changeset
    56
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    57
        (1 to:10) do:[:i | Transcript showCR:i]
339
claus
parents: 328
diff changeset
    58
claus
parents: 328
diff changeset
    59
      notice, that this is semantically equivalent to:
claus
parents: 328
diff changeset
    60
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    61
        1 to:10 do:[:i | Transcript showCR:i]
339
claus
parents: 328
diff changeset
    62
claus
parents: 328
diff changeset
    63
      however, the second is preferred, since loops using to:do: are
claus
parents: 328
diff changeset
    64
      much faster and do not create temporary garbage objects. 
claus
parents: 328
diff changeset
    65
      Therefore, Intervals are generally NOT used for this kind of loops.
claus
parents: 328
diff changeset
    66
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    67
        (1 to:10) asArray  
339
claus
parents: 328
diff changeset
    68
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    69
        (1 to:10 by:2) asOrderedCollection  
1290
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    70
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    71
    [author:]
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
    72
        Claus Gittinger
88
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    73
"
81dacba7a63a *** empty log message ***
claus
parents: 70
diff changeset
    74
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    75
a27a279701f8 Initial revision
claus
parents:
diff changeset
    76
!Interval class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    77
a27a279701f8 Initial revision
claus
parents:
diff changeset
    78
from:start to:stop
11409
82874ed12ab4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11270
diff changeset
    79
    "return a new interval with elements from start to stop by 1"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    80
2
claus
parents: 1
diff changeset
    81
    ^ self new setFrom:start to:stop by:1
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    82
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    83
a27a279701f8 Initial revision
claus
parents:
diff changeset
    84
from:start to:stop by:step
11409
82874ed12ab4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11270
diff changeset
    85
    "return a new interval with elements from start to stop by step"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    86
2
claus
parents: 1
diff changeset
    87
    ^ self new setFrom:start to:stop by:step
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    88
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    89
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    90
!Interval class methodsFor:'converting'!
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    91
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    92
decodeFromLiteralArray:anArray
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    93
    "create & return a new instance from information encoded in anArray.
9411
5e2a6ab94c0a Fix comments.
Stefan Vogel <sv@exept.de>
parents: 8940
diff changeset
    94
     Re-redefined, since the implementation in SequencableCollection creates instances with an initial
5e2a6ab94c0a Fix comments.
Stefan Vogel <sv@exept.de>
parents: 8940
diff changeset
    95
     size, which is not allowed for intervals."
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    96
6132
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
    97
    ^ self new fromLiteralArrayEncoding:anArray.
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
    98
! !
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
    99
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   100
!Interval methodsFor:'accessing'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   101
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   102
at:index
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   103
    "return (i.e. compute) the index'th element"
2
claus
parents: 1
diff changeset
   104
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   105
    (index between:1 and:self size) ifTrue:[
5521
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   106
        ^ start + (step * (index - 1))
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   107
    ].
5521
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   108
    ^ self subscriptBoundsError:index
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   109
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   110
a27a279701f8 Initial revision
claus
parents:
diff changeset
   111
first
a27a279701f8 Initial revision
claus
parents:
diff changeset
   112
    "return the first element of the collection"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   113
5521
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   114
    (((step < 0) and:[start < stop])
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   115
    or:[(step > 0) and:[stop < start]]) ifTrue:[
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   116
        ^ self emptyCollectionError
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   117
    ].
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   118
    ^ start
a27a279701f8 Initial revision
claus
parents:
diff changeset
   119
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   120
328
claus
parents: 269
diff changeset
   121
increment 
339
claus
parents: 328
diff changeset
   122
    "alias for #step; for ST-80 compatibility"
328
claus
parents: 269
diff changeset
   123
claus
parents: 269
diff changeset
   124
    ^ step
claus
parents: 269
diff changeset
   125
!
claus
parents: 269
diff changeset
   126
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   127
last
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   128
    "return the last element of the collection"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   129
5521
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   130
    (((step < 0) and:[start < stop])
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   131
    or:[(step > 0) and:[stop < start]]) ifTrue:[
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   132
        ^ self emptyCollectionError
7cad30b0ade9 fixed empty collection error handling
Claus Gittinger <cg@exept.de>
parents: 4155
diff changeset
   133
    ].
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   134
    ^ stop
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   135
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   136
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   137
start
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   138
    "return the first number of the range"
2
claus
parents: 1
diff changeset
   139
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   140
    ^ start
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   141
!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   142
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   143
start:aNumber
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   144
    "set the first number of the range"
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   145
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   146
    start := aNumber
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   147
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   148
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   149
step
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   150
    "return the step increment of the range.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   151
     OBSOLETE: 
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   152
        Please use #increment for ST-80 compatibility."
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   153
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   154
    ^ step
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   155
!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   156
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   157
step:aNumber
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   158
    "set the step increment of the range"
2
claus
parents: 1
diff changeset
   159
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   160
    step := aNumber
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   161
!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   162
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   163
stop
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   164
    "return the end number of the range"
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   165
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   166
    ^ stop
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   167
!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   168
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   169
stop:aNumber
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   170
    "set the end number of the range"
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   171
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   172
    stop := aNumber
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   173
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   174
11477
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   175
!Interval methodsFor:'bulk operations'!
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   176
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   177
sum
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   178
    "sum up all elements."
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   179
11503
f41906ac7352 changed #sum
Claus Gittinger <cg@exept.de>
parents: 11477
diff changeset
   180
    "/ sum(1..n) is n*(n+1)
f41906ac7352 changed #sum
Claus Gittinger <cg@exept.de>
parents: 11477
diff changeset
   181
    "/              -------
f41906ac7352 changed #sum
Claus Gittinger <cg@exept.de>
parents: 11477
diff changeset
   182
    "/                 2
11477
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   183
    start < stop ifTrue:[
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   184
        step == 1 ifTrue:[
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   185
            start == 1 ifTrue:[
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   186
                ^ (stop * (stop + 1) / 2)
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   187
            ].
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   188
            ^ (stop * (stop + 1) / 2) - ((start-1) * (start ) / 2)
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   189
        ]
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   190
    ].
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   191
    "/ could add more optimizations here, but who needs them?
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   192
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   193
    ^ super sum
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   194
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   195
    "
11503
f41906ac7352 changed #sum
Claus Gittinger <cg@exept.de>
parents: 11477
diff changeset
   196
     (1 to:10) sum         
f41906ac7352 changed #sum
Claus Gittinger <cg@exept.de>
parents: 11477
diff changeset
   197
     (1 to:10) asArray sum 
11477
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   198
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   199
     (2 to:10) sum           
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   200
     (2 to:10) asArray sum   
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   201
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   202
     (5 to:10) sum    
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   203
     (5 to:10) asArray sum     
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   204
    "
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   205
! !
2a46e08433d3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 11409
diff changeset
   206
6745
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   207
!Interval methodsFor:'comparing'!
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   208
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   209
= anInterval
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   210
    anInterval class == self class ifTrue:[
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   211
        ^ start = anInterval start
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   212
        and:[ stop = anInterval stop
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   213
        and:[ step = anInterval step]]
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   214
    ].
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   215
    ^ super = anInterval
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   216
!
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   217
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   218
hash
6748
604366d06326 hash: must be same as SeqColl hash; inherit
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   219
    ^ super hash "/ do not redefine: must generate same hash as SeqColl.
6745
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   220
! !
c2c52940ec99 better hash and compare
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
   221
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   222
!Interval methodsFor:'converting'!
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   223
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   224
fromLiteralArrayEncoding:encoding
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   225
    "read my values from an encoding.
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   226
     The encoding is supposed to be either of the form: 
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   227
        (#Interval start stop step)
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   228
     This is the reverse operation to #literalArrayEncoding."
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   229
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   230
    start := (encoding at:2).
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   231
    stop := (encoding at:3). 
10794
b37d77576d77 allow for missing step in literalArrayEncoding
Michael Beyl <mb@exept.de>
parents: 9411
diff changeset
   232
    (encoding size > 3) ifTrue:[ 
b37d77576d77 allow for missing step in literalArrayEncoding
Michael Beyl <mb@exept.de>
parents: 9411
diff changeset
   233
        step := (encoding at:4).
b37d77576d77 allow for missing step in literalArrayEncoding
Michael Beyl <mb@exept.de>
parents: 9411
diff changeset
   234
    ] ifFalse:[
b37d77576d77 allow for missing step in literalArrayEncoding
Michael Beyl <mb@exept.de>
parents: 9411
diff changeset
   235
        step := 1.
b37d77576d77 allow for missing step in literalArrayEncoding
Michael Beyl <mb@exept.de>
parents: 9411
diff changeset
   236
    ]
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   237
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   238
    "
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   239
     Interval new fromLiteralArrayEncoding:((1 to:10) literalArrayEncoding)  
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   240
     Interval new fromLiteralArrayEncoding:((1 to:10 by:2) literalArrayEncoding) 
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   241
     Interval decodeFromLiteralArray:((1 to:10 by:2) literalArrayEncoding) 
6132
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
   242
    "
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
   243
!
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   244
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   245
literalArrayEncoding
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   246
    "encode myself as an array literal, from which a copy of the receiver
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   247
     can be reconstructed with #decodeAsLiteralArray."
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   248
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   249
    ^ Array
9411
5e2a6ab94c0a Fix comments.
Stefan Vogel <sv@exept.de>
parents: 8940
diff changeset
   250
        with:self class name
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   251
        with:start
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   252
        with:stop
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   253
        with:step
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   254
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   255
    "
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   256
     (1 to:10) literalArrayEncoding      
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   257
     (1 to:10 by:2) literalArrayEncoding
6132
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
   258
    "
615c4fe0f449 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5672
diff changeset
   259
! !
5672
bd82b2b8c930 literalArrayEncoding fixed
Claus Gittinger <cg@exept.de>
parents: 5557
diff changeset
   260
8374
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   261
!Interval methodsFor:'converting-reindexed'!
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   262
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   263
from:startIndex
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   264
    "return a new collection representing the receivers elements starting at startIndex."
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   265
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   266
    step == 1 ifTrue:[
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   267
        ^ start+startIndex-1 to:stop
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   268
    ].
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   269
    "could be more intelligent here"
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   270
    ^ super from:startIndex
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   271
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   272
    "
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   273
     (1 to:100) from:2  
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   274
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   275
     (1 to:20 by:2) from:2           
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   276
     (1 to:20 by:2) asArray from:2    
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   277
     ((1 to:20 by:2) from:2) asArray   
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   278
    "
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   279
!
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   280
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   281
to:endIndex
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   282
    "return a new collection representing the receivers elements upTo and including endIndex."
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   283
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   284
    ^ start to:(endIndex min:stop) by:step
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   285
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   286
    "
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   287
     (1 to:100) to:50    
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   288
     (1 to:100 by:2) to:50    
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   289
    "
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   290
! !
a5d76d47cc70 reindexing methods
Claus Gittinger <cg@exept.de>
parents: 7823
diff changeset
   291
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   292
!Interval methodsFor:'enumerating'!
39
bcf183a31bbb *** empty log message ***
claus
parents: 5
diff changeset
   293
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   294
collect:aBlock
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   295
    "evaluate the argument, aBlock for every element in the collection
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   296
     and return a collection of the results.
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   297
     Redefined since the inherited method (SeqColl) accesses the receiver via at:, 
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   298
     which is slow for intervals"
2
claus
parents: 1
diff changeset
   299
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   300
    |elementValue mySize newCollection|
44
b262907c93ea *** empty log message ***
claus
parents: 39
diff changeset
   301
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   302
    elementValue := start.
16709
447e55afc5fe class: Interval
Claus Gittinger <cg@exept.de>
parents: 14129
diff changeset
   303
    newCollection := self species newWithSize:(mySize := self size).
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   304
    1 to: mySize do:[:i |
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   305
        newCollection at:i put:(aBlock value:elementValue).
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   306
        elementValue := elementValue + step.
44
b262907c93ea *** empty log message ***
claus
parents: 39
diff changeset
   307
    ].
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   308
    ^ newCollection    
44
b262907c93ea *** empty log message ***
claus
parents: 39
diff changeset
   309
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   310
    "
14128
32cf030cebca changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 13074
diff changeset
   311
     (1 to:20 by:2) collect:[:i | i*i]              
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   312
    "
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   313
14129
b0b377ad4df1 changed: #collect:
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   314
    "Modified: / 04-05-2012 / 13:03:56 / cg"
44
b262907c93ea *** empty log message ***
claus
parents: 39
diff changeset
   315
!
b262907c93ea *** empty log message ***
claus
parents: 39
diff changeset
   316
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   317
do:aBlock
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   318
    "evaluate the argument, aBlock for every element in the receiver-interval. 
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   319
     Redefined since SeqColl accesses the receiver with at:, which is slow for intervals."
2
claus
parents: 1
diff changeset
   320
3986
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   321
    |aValue iter|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   322
a27a279701f8 Initial revision
claus
parents:
diff changeset
   323
    aValue := start.
3986
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   324
    aValue isInteger ifTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   325
        step < 0 ifTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   326
            [stop <= aValue] whileTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   327
                aBlock value:aValue.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   328
                aValue := aValue + step
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   329
            ]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   330
        ] ifFalse:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   331
            [stop >= aValue] whileTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   332
                aBlock value:aValue.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   333
                aValue := aValue + step
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   334
            ]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   335
        ]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   336
    ] ifFalse:[
3986
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   337
        "/ the code below avoids rounding errors
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   338
        "/ to accumulate if floats are enumerated.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   339
        iter := 1.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   340
        step < 0 ifTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   341
            [stop <= aValue] whileTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   342
                aBlock value:aValue.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   343
                aValue := start + (iter * step).
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   344
                iter := iter + 1.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   345
            ]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   346
        ] ifFalse:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   347
            [stop >= aValue] whileTrue:[
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   348
                aBlock value:aValue.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   349
                aValue := start + (iter * step).
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   350
                iter := iter + 1.
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   351
            ]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   352
        ]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   353
    ]
3986
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   354
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   355
    "
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   356
     1e7 to:1e7+1 by:0.25 do:[:v | Transcript showCR:v]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   357
     1.0 to:2.0 by:0.25 do:[:v | Transcript showCR:v]
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   358
     2.0 to:1.0 by:-0.25 do:[:v | Transcript showCR:v]
6532
e6bd5b495eee checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6132
diff changeset
   359
     $a to:$z do:[:v | Transcript showCR:v]
3986
2ad4ebb5ebbb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1998
diff changeset
   360
    "
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   361
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   362
    "Modified: / 22-10-2008 / 12:47:30 / cg"
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   363
!
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   364
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   365
reverseDo:aBlock
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   366
    "evaluate the argument, aBlock for every element in the receiver-interval in
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   367
     reverse order. 
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   368
     Redefined since SeqColl accesses the receiver with at:, which is slow for intervals."
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   369
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   370
    ^ self reversed do:aBlock
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   371
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   372
    "
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   373
     (1 to:10) do:[:el | Transcript showCR:el ].
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   374
     (1 to:10) reverseDo:[:el | Transcript showCR:el ].
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   375
    "
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   376
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   377
    "Modified: / 22-10-2008 / 12:49:28 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   378
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   379
a27a279701f8 Initial revision
claus
parents:
diff changeset
   380
select:aBlock
a27a279701f8 Initial revision
claus
parents:
diff changeset
   381
    "evaluate the argument, aBlock for every element in the collection
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   382
     and return a collection of all elements for which the block return true. 
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   383
     Redefined since SeqColl accesses the receiver with at:, which is slow for intervals."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   384
a27a279701f8 Initial revision
claus
parents:
diff changeset
   385
    |newColl|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   386
54
06dbdeeed4f9 *** empty log message ***
claus
parents: 44
diff changeset
   387
    newColl := self species new:(self size).
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   388
    self do:[:each |
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   389
        (aBlock value:each) ifTrue:[newColl add:each]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   390
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   391
    ^ newColl
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   392
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   393
    "
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   394
     (1 to:20) select:[:i | i even]
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   395
    "
11270
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   396
a616ba9b7f81 +reverseDo:
Claus Gittinger <cg@exept.de>
parents: 11266
diff changeset
   397
    "Modified: / 22-10-2008 / 12:47:41 / cg"
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   398
! !
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   399
16709
447e55afc5fe class: Interval
Claus Gittinger <cg@exept.de>
parents: 14129
diff changeset
   400
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   401
!Interval methodsFor:'printing & storing'!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   402
13074
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   403
displayOn:aGCOrStream
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   404
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   405
    "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   406
    "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
16746
a2e3bc2197d2 displayOn: cleanup
Claus Gittinger <cg@exept.de>
parents: 16722
diff changeset
   407
    (aGCOrStream isStream) ifTrue:[
13074
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   408
        self printOn:aGCOrStream.
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   409
        ^ self.
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   410
    ].
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   411
    ^ super displayOn:aGCOrStream
6709
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   412
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   413
    "
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   414
     (1 to:10) 
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   415
     (1 to:10 by:2) 
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   416
    "
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   417
!
1b91cb019bd6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6671
diff changeset
   418
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   419
printOn:aStream
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   420
    "append a printed representation to aStream"
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   421
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   422
    start printOn:aStream.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   423
    aStream nextPutAll:' to:'.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   424
    stop printOn:aStream.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   425
    step ~= 1 ifTrue:[
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   426
        aStream nextPutAll:' by:'.
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   427
        step printOn:aStream.
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   428
    ].
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   429
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   430
    "
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   431
     (1 to:10) printOn:Transcript
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   432
     (1 to:10 by:2) printOn:Transcript
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   433
     (1 to:10) printString
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   434
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   435
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   436
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   437
storeOn:aStream
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   438
    "store a representation which can reconstruct the receiver to aStream"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   439
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   440
    aStream nextPut:$(.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   441
    self printOn:aStream.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   442
    aStream nextPut:$).
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   443
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   444
    "
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   445
     (1 to:10) storeOn:Transcript
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   446
     (1 to:10 by:2) storeOn:Transcript
269
93162487a94b *** empty log message ***
claus
parents: 216
diff changeset
   447
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   448
! !
606
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   449
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   450
!Interval methodsFor:'private'!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   451
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   452
setFrom:startInteger to:stopInteger by:stepInteger
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   453
    "set start, stop and step components"
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   454
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   455
    start := startInteger.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   456
    stop := stopInteger.
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   457
    step := stepInteger
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   458
!
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   459
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   460
species
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   461
    "return the type of collection to be returned by collect, select etc."
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   462
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   463
    ^ OrderedCollection
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   464
! !
7a9ab63a6757 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   465
5557
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   466
!Interval methodsFor:'queries'!
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   467
7823
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   468
max
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   469
    "return the maximum value in the receiver collection,
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   470
     redefined, since this can be easily computed.
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   471
     Raises an error, if the receiver is empty."
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   472
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   473
    step == 1 ifTrue:[stop >= start ifTrue:[^ stop]].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   474
    step < 0 ifTrue:[stop <= start ifTrue:[^ start]].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   475
    ^ super max
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   476
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   477
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   478
     (0 to:15) max           
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   479
     (0 to:15 by:2) max      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   480
     (0 to:15 by:8) max      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   481
     (15 to:0) max           -> error
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   482
     (15 to:0 by:4) max      -> error      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   483
     (-1 to:-15 by:-1) max    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   484
     (-1 to:-15 by:-4) max    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   485
     (-1 to:15 by:-1) max    -> error  
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   486
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   487
!
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   488
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   489
min
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   490
    "return the minimum value in the receiver collection,
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   491
     redefined, since this can be easily computed.
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   492
     Raises an error, if the receiver is empty."
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   493
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   494
    step == -1 ifTrue:[stop <= start ifTrue:[^ stop]].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   495
    step > 0 ifTrue:[stop >= start ifTrue:[^ start]].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   496
    ^ super min
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   497
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   498
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   499
     (0 to:15) min           
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   500
     (0 to:15 by:2) min      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   501
     (0 to:15 by:8) min      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   502
     (15 to:0) min          -> error
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   503
     (15 to:0 by:4) min     -> error     
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   504
     (-1 to:-15 by:-1) min    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   505
     (-1 to:-15 by:-4) min    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   506
     (-1 to:15 by:-1) min   -> error   
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   507
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   508
!
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   509
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   510
minMax
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   511
    "return the minimum and maximum values in the receiver collection
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   512
     as a two element array.
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   513
     Raises an error, if the receiver is empty."
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   514
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   515
    step == -1 ifTrue:[
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   516
        stop <= start ifTrue:[
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   517
            ^ Array with:stop with:start
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   518
        ]
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   519
    ].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   520
    step == 1 ifTrue:[
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   521
        stop >= start ifTrue:[
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   522
            ^ Array with:start with:stop
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   523
        ]
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   524
    ].
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   525
    ^ super minMax
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   526
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   527
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   528
     (0 to:15) minMax           
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   529
     (0 to:15 by:2) minMax      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   530
     (0 to:15 by:8) minMax      
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   531
     (15 to:0) minMax          -> error
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   532
     (15 to:0 by:4) minMax     -> error     
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   533
     (-1 to:-15 by:-1) minMax    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   534
     (-1 to:-15 by:-4) minMax    
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   535
     (-1 to:15 by:-1) minMax   -> error   
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   536
    "
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   537
!
4a31fa10c6eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7821
diff changeset
   538
5557
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   539
size
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   540
    "return the number of elements in the collection"
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   541
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   542
    (step < 0) ifTrue:[
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   543
        (start < stop) ifTrue:[
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   544
            ^ 0
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   545
        ].
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
   546
        ^ (start - stop) // step abs + 1
5557
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   547
    ].
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   548
    (stop < start) ifTrue:[
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   549
        ^ 0
5557
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   550
    ].
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
   551
    ^ (stop - start) // step + 1
5557
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   552
! !
f5f8d236027c category change
Claus Gittinger <cg@exept.de>
parents: 5521
diff changeset
   553
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   554
!Interval methodsFor:'set operations'!
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   555
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   556
intersect:aCollection
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   557
    "return a new interval containing all elements of the receiver, 
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   558
     which are also contained in the argument collection"
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   559
11903
51f288f62b3b +intersect:
Claus Gittinger <cg@exept.de>
parents: 11902
diff changeset
   560
    "/ could be much more intelligent here...
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   561
    aCollection class == Interval ifTrue:[
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   562
        aCollection step = step ifTrue:[
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   563
            step = 1 ifTrue:[
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   564
                (self includes:aCollection start) ifTrue:[
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   565
                    ^ (start max:(aCollection start)) to:(stop min:(aCollection stop))
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   566
                ].
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   567
                (self includes:aCollection stop) ifTrue:[
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   568
                    ^ (start max:(aCollection start)) to:(stop min:(aCollection stop))
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   569
                ]
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   570
            ]
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   571
        ].
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   572
    ].
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   573
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   574
    ^ super intersect:aCollection
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   575
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   576
    "
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   577
     (1 to:10) intersect:(4 to:20)      
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   578
     (1 to:10) intersect:(11 to:20)      
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   579
     (1 to:10) intersect:(10 to:20)      
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   580
     (4 to:20) intersect:(1 to:10)      
11903
51f288f62b3b +intersect:
Claus Gittinger <cg@exept.de>
parents: 11902
diff changeset
   581
     (4 to:20) intersect:(1 to:10 by:2)      
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   582
    "
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   583
! !
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   584
11266
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   585
!Interval methodsFor:'sorting & reordering'!
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   586
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   587
reversed
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   588
    "return a copy with elements in reverse order"
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   589
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   590
    "this can be tricky, if stepping from start does not reach stop exactly.
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   591
     So what is the reverse of: (2 to:5 by: 2) ?
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   592
     I think, that the correct semantic is to behave transparent to the type
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   593
     of collection and generate the same elements as another collection would.
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   594
     In other words, the same as (1 to:5 by: 2) asOrderedCollection reversed
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   595
     would. That means, we get: #(4 2).
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   596
     This also means, that (2 to:5 by: 2) reversed reversed does not return the
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   597
     original, but another interval which generates the same elements !! (2 to:4 by: 2)"
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   598
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   599
    |rest|
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   600
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   601
    step isInteger ifTrue:[
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   602
        rest := ((stop - step) rem: step).
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   603
        ^ (stop-rest) to:start by:step negated
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   604
    ].
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   605
    ^ super reversed
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   606
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   607
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   608
    "
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   609
     (1 to:4) reversed asOrderedCollection   
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   610
     (1 to:4) reversed reversed asOrderedCollection 
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   611
     (1 to:4) asOrderedCollection reversed    
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   612
     (1 to:4) asOrderedCollection reversed reversed 
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   613
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   614
     (2 to:5 by: 2) asOrderedCollection     
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   615
     (2 to:5 by: 2) asOrderedCollection reversed    
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   616
     (2 to:5 by: 2) asOrderedCollection reversed reversed  
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   617
     (2 to:5 by: 2) reversed asOrderedCollection         
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   618
     (2 to:5 by: 2) reversed reversed asOrderedCollection   
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   619
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   620
     (1 to:2 by: 0.3) asOrderedCollection        
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   621
     (1 to:2 by: 0.3) asOrderedCollection reversed  
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   622
     (1 to:2 by: 0.3) asOrderedCollection reversed reversed  
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   623
     (1 to:2 by: 0.3) reversed asOrderedCollection     
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   624
     (1 to:2 by: 0.3) reversed reversed asOrderedCollection     
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   625
    "
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   626
! !
4f9e413eba36 reversed
Claus Gittinger <cg@exept.de>
parents: 10794
diff changeset
   627
6671
31fcea1083b6 improved #min and #max
Claus Gittinger <cg@exept.de>
parents: 6532
diff changeset
   628
!Interval methodsFor:'testing'!
31fcea1083b6 improved #min and #max
Claus Gittinger <cg@exept.de>
parents: 6532
diff changeset
   629
6712
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   630
includes:anElement
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   631
    "return true if anElement is in the interval (Numeric compare using =)"
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   632
6712
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   633
    |rest|
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   634
6712
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   635
    stop >= start ifTrue:[
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   636
        (anElement between:start and:stop) ifFalse:[^ false].
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   637
    ] ifFalse:[
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   638
        (anElement between:stop and:start) ifFalse:[^ false].
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   639
    ].
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   640
    rest := (anElement - start) rem:step.
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   641
    ^ rest = 0
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   642
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   643
    "
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   644
     (1 to:15) includes:0
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   645
     (1 to:15) includes:16
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   646
     (1 to:15) includes:1    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   647
     (1 to:15) includes:15   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   648
     (1 to:15) includes:5    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   649
     (1 to:15) includes:14   
11902
46d00f94328e +intersect:
Claus Gittinger <cg@exept.de>
parents: 11503
diff changeset
   650
     (1 to:15) includes:4   
6712
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   651
     (1 to:15) includes:4.0   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   652
     (1 to:15) includes:4.4   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   653
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   654
     (1 to:15 by:3) includes:0
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   655
     (1 to:15 by:3) includes:16
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   656
     (1 to:15 by:3) includes:1    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   657
     (1 to:15 by:3) includes:15   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   658
     (1 to:15 by:3) includes:5    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   659
     (1 to:15 by:3) includes:4    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   660
     (1 to:15 by:3) includes:13   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   661
     (1 to:15 by:3) includes:14   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   662
     (1 to:15 by:3) includes:4.0   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   663
     (1 to:15 by:3) includes:4.4   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   664
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   665
     (10 to:-10 by:-3) includes:11   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   666
     (10 to:-10 by:-3) includes:10   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   667
     (10 to:-10 by:-3) includes:9   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   668
     (10 to:-10 by:-3) includes:8   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   669
     (10 to:-10 by:-3) includes:7   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   670
     (10 to:-10 by:-3) includes:4   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   671
     (10 to:-10 by:-3) includes:0   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   672
     (10 to:-10 by:-3) includes:-1   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   673
     (10 to:-10 by:-3) includes:-2   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   674
     (10 to:-10 by:-3) includes:-8     
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   675
     (10 to:-10 by:-3) includes:-9     
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   676
     (10 to:-10 by:-3) includes:-10    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   677
     (10 to:-10 by:-3) includes:-11    
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   678
     (10 to:-10 by:-3) includes:-2.4   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   679
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   680
     (-10 to:-20 by:-2) includes:-16   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   681
     (-10 to:-20 by:-2) includes:-20   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   682
     (-10 to:-20 by:-2) includes:-23   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   683
     (-10 to:-20 by:-2) includes:-24   
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   684
cd031a65139a better #includes:
Claus Gittinger <cg@exept.de>
parents: 6709
diff changeset
   685
    "
6671
31fcea1083b6 improved #min and #max
Claus Gittinger <cg@exept.de>
parents: 6532
diff changeset
   686
! !
31fcea1083b6 improved #min and #max
Claus Gittinger <cg@exept.de>
parents: 6532
diff changeset
   687
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   688
!Interval methodsFor:'visiting'!
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   689
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   690
acceptVisitor:aVisitor with:aParameter
16722
bd92f75ab297 comment/format only
Claus Gittinger <cg@exept.de>
parents: 16709
diff changeset
   691
    "dispatch for visitor pattern; send #visitInterval:with: to aVisitor.
bd92f75ab297 comment/format only
Claus Gittinger <cg@exept.de>
parents: 16709
diff changeset
   692
     this is special. Some encoders want to encode this as a sequenceable collection,
8394
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   693
     some want to encode a less expensive representation"
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   694
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   695
    ^ aVisitor visitInterval:self with:aParameter
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   696
! !
da194de43766 Generalize visitor pattern and define #visit...:with: -methods instead
Stefan Vogel <sv@exept.de>
parents: 8374
diff changeset
   697
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   698
!Interval class methodsFor:'documentation'!
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   699
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   700
version
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
   701
    ^ '$Header$'
13074
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   702
!
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   703
cbbd50931549 Implement display with #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 11903
diff changeset
   704
version_CVS
18510
a8715bcdf70b class: Interval
Claus Gittinger <cg@exept.de>
parents: 16746
diff changeset
   705
    ^ '$Header$'
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   706
! !
16709
447e55afc5fe class: Interval
Claus Gittinger <cg@exept.de>
parents: 14129
diff changeset
   707