FileDocCategorySizeDatePackage
XSCMLeaf.javaAPI DocJava SE 5 API5277Fri Aug 26 14:55:50 BST 2005com.sun.org.apache.xerces.internal.impl.xs.models

XSCMLeaf

public class XSCMLeaf extends CMNode
Content model leaf node.
author
Neil Graham, IBM
version
$$

Fields Summary
private Object
fLeaf
This is the leaf: element decl or wildcard decl.
private int
fParticleId
Identify the particle: for UPA checking
private int
fPosition
Part of the algorithm to convert a regex directly to a DFA numbers each leaf sequentially. If its -1, that means its an epsilon node. Zero and greater are non-epsilon positions.
Constructors Summary
public XSCMLeaf(int type, Object leaf, int id, int position)
Constructs a content model leaf.


    //
    // Constructors
    //

          
              
        super(type);

        // Store the element index and position
        fLeaf = leaf;
        fParticleId = id;
        fPosition = position;
    
Methods Summary
protected voidcalcFirstPos(com.sun.org.apache.xerces.internal.impl.dtd.models.CMStateSet toSet)

        // If we are an epsilon node, then the first pos is an empty set
        if (fPosition == -1)
            toSet.zeroBits();

        // Otherwise, its just the one bit of our position
        else
            toSet.setBit(fPosition);
    
protected voidcalcLastPos(com.sun.org.apache.xerces.internal.impl.dtd.models.CMStateSet toSet)

        // If we are an epsilon node, then the last pos is an empty set
        if (fPosition == -1)
            toSet.zeroBits();

        // Otherwise, its just the one bit of our position
        else
            toSet.setBit(fPosition);
    
final java.lang.ObjectgetLeaf()

        return fLeaf;
    
final intgetParticleId()

        return fParticleId;
    
final intgetPosition()

        return fPosition;
    
public booleanisNullable()

        // Leaf nodes are never nullable unless its an epsilon node
        return (fPosition == -1);
    
final voidsetPosition(int newPosition)

        fPosition = newPosition;
    
public java.lang.StringtoString()

        StringBuffer strRet = new StringBuffer(fLeaf.toString());
        if (fPosition >= 0) {
            strRet.append
            (
                " (Pos:"
                + new Integer(fPosition).toString()
                + ")"
            );
        }
        return strRet.toString();