org.erights.e.elib.tables
Class CompositeTwine

java.lang.Object
  |
  +--org.erights.e.elib.tables.EList
        |
        +--org.erights.e.elib.tables.ConstList
              |
              +--org.erights.e.elib.tables.Twine
                    |
                    +--org.erights.e.elib.tables.CompositeTwine
All Implemented Interfaces:
DeepPassByCopy, EPrintable, Guard, Iteratable, Marker, PassByConstruction, Persistent, Selfless, Serializable, SlotGuard, ValueGuard

final class CompositeTwine
extends Twine

A Twine composed of a sequence of two or more AtomicTwines.

Author:
Mark S. Miller

Field Summary
private  ConstList myParts
          A list of AtomicTwines
private  int mySizeCache
           
private static long serialVersionUID
           
 
Fields inherited from class org.erights.e.elib.tables.Twine
 
Fields inherited from class org.erights.e.elib.tables.ConstList
EmptyList
 
Fields inherited from interface org.erights.e.elib.serial.DeepPassByCopy
HONORARY, HONORED_NAMES
 
Fields inherited from interface org.erights.e.elib.serial.Persistent
HONORARY, HONORED_NAMES
 
Constructor Summary
(package private) CompositeTwine(ConstList parts)
           
 
Method Summary
 void __printOn(TextWriter out)
          Enabled: Prints using E list syntax
 String bare()
          Enabled: Explicitly gets the String part of the twine.
 char charAt(int pos)
          Enabled: From the E language, this is identical to get/1.
 SourceSpan getOptSpan()
          Enabled: Gets the sourceSpan part of the twine, if it's there.
 ConstList getParts()
          Enabled: @return A list of AtomicTwines.
 Object[] getSpreadUncall()
          '__makeTwine fromParts(myParts)'
(package private)  Twine infectOneToOne(String str)
           
 boolean isBare()
          Enabled: Is the bare string all the info there is?
 ConstList run(int start, int bound)
          Enabled: Returns a Twine.
 int size()
          Enabled: How many entries are in the list?
 
Methods inherited from class org.erights.e.elib.tables.Twine
add, asFrom, asFrom, canonical, compareTo, compareToIgnoreCase, endsWith, equalsIgnoreCase, fromChars, fromParts, fromString, fromString, get, getBytes, getBytes, getPartAt, getSourceMap, GetTwineMaker, indexOf, indexOf, infect, infect, lastIndexOf, lastIndexOf, lastStartOf, multiply, quote, replaceAll, rjoin, run, split, startOf, startsWith, startsWith, toLowerCase, toString, toUpperCase, trim, valueType
 
Methods inherited from class org.erights.e.elib.tables.ConstList
__optUncall, accepts, and, butNot, coerce, coerce, compareTo, fromArray, fromArray, get, GetMaker, getName, makeSlot, makeSlot, match, not, or, readOnly, snapshot, xor
 
Methods inherited from class org.erights.e.elib.tables.EList
asKeys, asMap, asSet, contains, diverge, diverge, getArray, getArray, getArray, includes, indexOf1, indexOf1, iterate, last, lastIndexOf1, lastIndexOf1, lastStartOf, printOn, sort, sort, startOf, with, with
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID

mySizeCache

private transient int mySizeCache

myParts

private final ConstList myParts
A list of AtomicTwines

Constructor Detail

CompositeTwine

CompositeTwine(ConstList parts)
Method Detail

getSpreadUncall

public Object[] getSpreadUncall()
'__makeTwine fromParts(myParts)'


charAt

public char charAt(int pos)
            throws IndexOutOfBoundsException
Description copied from class: Twine
Enabled: From the E language, this is identical to get/1. But we provide it so the ELib programmer can avoid boxing the character.

Specified by:
charAt in class Twine
IndexOutOfBoundsException
See Also:
String.charAt(int)

run

public ConstList run(int start,
                     int bound)
              throws IndexOutOfBoundsException
Description copied from class: Twine
Enabled: Returns a Twine.

Specified by:
run in class Twine
IndexOutOfBoundsException

size

public int size()
Description copied from class: EList
Enabled: How many entries are in the list?

Specified by:
size in class EList

bare

public String bare()
Description copied from class: Twine
Enabled: Explicitly gets the String part of the twine.

When using this call, this call itself will be the top level construct for breaking cycles. XXX where & what do we stabilize?

Specified by:
bare in class Twine

isBare

public boolean isBare()
Description copied from class: Twine
Enabled: Is the bare string all the info there is?

Specified by:
isBare in class Twine

getParts

public ConstList getParts()
Description copied from class: Twine
Enabled: @return A list of AtomicTwines. An empty Twine returns the empty list.

Specified by:
getParts in class Twine

__printOn

public void __printOn(TextWriter out)
               throws IOException
Description copied from class: ConstList
Enabled: Prints using E list syntax

Specified by:
__printOn in interface EPrintable
Overrides:
__printOn in class ConstList
IOException

getOptSpan

public SourceSpan getOptSpan()
Description copied from class: Twine
Enabled: Gets the sourceSpan part of the twine, if it's there.

If this is an AtomicTwine, then, if the SourceSpan is there, it's as accurate as you're going to get. If this is a CompositeTwine, then, if the SourceSpan is there, it describes a span that includes all the individual spans. If a CompositeTwine returns null, there may still be SourceSpans on the atomic parts, but they couldn't all be summarized into one covering span.

Specified by:
getOptSpan in class Twine

infectOneToOne

Twine infectOneToOne(String str)
Specified by:
infectOneToOne in class Twine


comments?