Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.sequences;

import java.util.*;

import org.litesoft.core.typeutils.*;

public class SequenceBlockChain extends SequenceBlock
{
    private SequenceBlock mFirst;
    private SequenceBlock mNext;

    private SequenceBlockChain( SequenceBlock pFirst, SequenceBlock pNext )
    {
        mFirst = pFirst;
        mNext = pNext;
    }

    public static SequenceBlock create( SequenceBlock pExisting, SequenceBlock pNew )
    {
        pExisting = Objects.deNull( pExisting, SequenceBlockImpl.INITIAL );
        pNew = Objects.deNull( pNew, SequenceBlockImpl.INITIAL );
        return !pExisting.hasMore() ? pNew : !pNew.hasMore() ? pExisting : new SequenceBlockChain( pExisting, pNew );
    }

    public long getCurBlockEndExclusive()
    {
        return mNext.getCurBlockEndExclusive();
    }

    public long available()
    {
        return mFirst.available() + mNext.available();
    }

    public boolean hasMore()
    {
        return mFirst.hasMore() || mNext.hasMore();
    }

    public long next()
            throws NoSuchElementException
    {
        return mFirst.hasMore() ? mFirst.next() : mNext.next();
    }

    protected Long peekNext()
    {
        Long aLong = mFirst.peekNext();
        return (aLong != null) ? aLong : mNext.peekNext();
    }
}

Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/sequences/SequenceBlockChain.java

Diff revisions: vs.
Revision Author Commited Message
804 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 12:48:51 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000