package com.ctc.wstx.dtd;
import java.util.*;
Content specification class that represents an optional specification. Optional specifications are generally a result of '?' arity marker, and are created when ContentSpec.rewrite
is called on a specification with '?' arity modifier. /**
* Content specification class that represents an optional specification.
* Optional specifications are generally a result of '?' arity marker,
* and are created when {@link ContentSpec#rewrite} is called
* on a specification with '?' arity modifier.
*/
public class OptionalModel
extends ModelNode
{
ModelNode mModel;
/*
///////////////////////////////////////////////////
// Life-cycle
///////////////////////////////////////////////////
*/
public OptionalModel(ModelNode model) {
mModel = model;
}
/*
///////////////////////////////////////////////////
// Public API
///////////////////////////////////////////////////
*/
Method that has to create a deep copy of the model, without
sharing any of existing Objects.
/**
* Method that has to create a deep copy of the model, without
* sharing any of existing Objects.
*/
@Override
public ModelNode cloneModel() {
return new OptionalModel(mModel.cloneModel());
}
@Override
public boolean isNullable() {
return true;
}
@Override
public void indexTokens(List<TokenModel> tokens) {
mModel.indexTokens(tokens);
}
@Override
public void addFirstPos(BitSet pos) {
mModel.addFirstPos(pos);
}
@Override
public void addLastPos(BitSet pos) {
mModel.addLastPos(pos);
}
@Override
public void calcFollowPos(BitSet[] followPosSets)
{
// Let's let sub-model do its stuff
mModel.calcFollowPos(followPosSets);
}
@Override
public String toString() {
return mModel + "[?]";
}
}