blob: 14a1c73cb4245e36e1fbbb5775d00a24853333f5 [file] [log] [blame]
/**
* Copyright (c) 2002-2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
*/
package org.eclipse.xsd;
import java.util.List;
/**
* <!-- begin-user-doc -->
* A representation of the model object
* '<a href="http://www.w3.org/TR/xmlschema-1/#cParticles"><em><b>Particle</b></em></a>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}</li>
* <li>{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}</li>
* <li>{@link org.eclipse.xsd.XSDParticle#getContent <em>Content</em>}</li>
* <li>{@link org.eclipse.xsd.XSDParticle#getTerm <em>Term</em>}</li>
* </ul>
*
* @see org.eclipse.xsd.XSDPackage#getXSDParticle()
* @model
* @generated
*/
public interface XSDParticle extends XSDComplexTypeContent
{
/**
* Returns the value of the '<em><b>Min Occurs</b></em>' attribute.
* The default value is <code>"1"</code>.
* <!-- begin-user-doc -->
* <p>
* This represents the
* <a href="http://www.w3.org/TR/xmlschema-1/#p-min_occurs">min occurs</a>
* infoset property.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Min Occurs</em>' attribute.
* @see #isSetMinOccurs()
* @see #unsetMinOccurs()
* @see #setMinOccurs(int)
* @see org.eclipse.xsd.XSDPackage#getXSDParticle_MinOccurs()
* @model default="1" unsettable="true"
* @generated
*/
int getMinOccurs();
/**
* Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Min Occurs</em>' attribute.
* @see #isSetMinOccurs()
* @see #unsetMinOccurs()
* @see #getMinOccurs()
* @generated
*/
void setMinOccurs(int value);
/**
* Unsets the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSetMinOccurs()
* @see #getMinOccurs()
* @see #setMinOccurs(int)
* @generated
*/
void unsetMinOccurs();
/**
* Returns whether the value of the '{@link org.eclipse.xsd.XSDParticle#getMinOccurs <em>Min Occurs</em>}' attribute is set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return whether the value of the '<em>Min Occurs</em>' attribute is set.
* @see #unsetMinOccurs()
* @see #getMinOccurs()
* @see #setMinOccurs(int)
* @generated
*/
boolean isSetMinOccurs();
/**
* The value <code>-1</code> representing a max occurs of unbounded.
* @see #getMaxOccurs
*/
int UNBOUNDED = -1;
/**
* Returns the value of the '<em><b>Max Occurs</b></em>' attribute.
* The default value is <code>"1"</code>.
* <!-- begin-user-doc -->
* <p>
* This represents the
* <a href="http://www.w3.org/TR/xmlschema-1/#p-max_occurs">max occurs</a>
* infoset property.
* The <code>unbounded</code> value is represented by {@link #UNBOUNDED}, i.e., <code>-1</code>.
* @see #UNBOUNDED
* @
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Max Occurs</em>' attribute.
* @see #isSetMaxOccurs()
* @see #unsetMaxOccurs()
* @see #setMaxOccurs(int)
* @see org.eclipse.xsd.XSDPackage#getXSDParticle_MaxOccurs()
* @model default="1" unsettable="true"
* @generated
*/
int getMaxOccurs();
/**
* Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Max Occurs</em>' attribute.
* @see #isSetMaxOccurs()
* @see #unsetMaxOccurs()
* @see #getMaxOccurs()
* @generated
*/
void setMaxOccurs(int value);
/**
* Unsets the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSetMaxOccurs()
* @see #getMaxOccurs()
* @see #setMaxOccurs(int)
* @generated
*/
void unsetMaxOccurs();
/**
* Returns whether the value of the '{@link org.eclipse.xsd.XSDParticle#getMaxOccurs <em>Max Occurs</em>}' attribute is set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return whether the value of the '<em>Max Occurs</em>' attribute is set.
* @see #unsetMaxOccurs()
* @see #getMaxOccurs()
* @see #setMaxOccurs(int)
* @generated
*/
boolean isSetMaxOccurs();
/**
* Returns the value of the '<em><b>Content</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* This concrete reference represents the {@link org.eclipse.xsd.XSDParticleContent particle content} of the particle.
* It is used to compute the {@link #getTerm term}.
* </p>
* @see #getTerm()
* @ <!-- end-user-doc -->
* @return the value of the '<em>Content</em>' containment reference.
* @see #setContent(XSDParticleContent)
* @see org.eclipse.xsd.XSDPackage#getXSDParticle_Content()
* @model containment="true" required="true"
* @generated
*/
XSDParticleContent getContent();
/**
* Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getContent <em>Content</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Content</em>' containment reference.
* @see #getContent()
* @generated
*/
void setContent(XSDParticleContent value);
/**
* Returns the value of the '<em><b>Term</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* This represents the
* <a href="http://www.w3.org/TR/xmlschema-1/#term">term</a>
* infoset property.
* It is computed from the {@link #getContent() content} and should typically not be modified directly.
* </p>
* @see #getContent()
* @<!-- end-user-doc -->
* @return the value of the '<em>Term</em>' reference.
* @see #setTerm(XSDTerm)
* @see org.eclipse.xsd.XSDPackage#getXSDParticle_Term()
* @model resolveProxies="false" required="true"
* @generated
*/
XSDTerm getTerm();
/**
* Sets the value of the '{@link org.eclipse.xsd.XSDParticle#getTerm <em>Term</em>}' reference.
* <!-- begin-user-doc -->
* Since the term is computed from the {@link #getContent() content}, this reference should typically not be modified directly.
* <!-- end-user-doc -->
* @param value the new value of the '<em>Term</em>' reference.
* @see #getTerm()
* @generated
*/
void setTerm(XSDTerm value);
/**
* A deterministic finite state automaton as described for
* '<a href="http://www.w3.org/TR/xmlschema-1/#non-ambig"><em><b>Unique Particle Attribution</b></em></a>'.
*/
public interface DFA
{
/**
* A state of a deterministic finite state automaton.
*/
public interface State
{
/**
* Returns whether this state is an accepting state.
* @return whether this state is an accepting state.
*/
boolean isAccepting();
/**
* Returns the list of transitions that leave this state.
* @return the list of transitions that leave this state.
*/
List<Transition> getTransitions();
/**
* Return the transition applicable for the given input.
* An unrecognized input will yield <code>null</code>.
* @return the transition applicable for the given input
*/
Transition accept(String namespaceURI, String localName);
}
/**
* A transition of a deterministic finite state automaton.
*/
public interface Transition
{
/**
* Returns the particle associated with this transition.
* @return the particle associated with this transition.
*/
XSDParticle getParticle();
/**
* Returns the target state of this transition.
* @return the target state of this transition.
*/
State getState();
}
/**
* Returns whether this DFA is an approximation of the content model.
* A large maxOccurs may be treated as unbounded
* and a large all model group may be treated as a repeating choice.
* @return <code>true</code> if this DFA is an approximation of the content model.
*/
boolean isApproximate();
/**
* Returns the list of states in this automaton.
* @return the list of states in this automaton.
*/
List<State> getStates();
/**
* Returns the initial state of this automaton.
* @return the initial states in this automaton.
*/
State getInitialState();
/**
* Creates a clone of the automaton.
* @return a clone of the automaton.
*/
DFA cloneDFA();
}
/**
* Returns the deterministic finite state automaton that implements this particle's content model.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the deterministic finite state automaton that implements this particle's content model.
*/
DFA getDFA();
/**
* Returns whether the particle is
* <a href="http://www.w3.org/TR/xmlschema-1/#cos-group-emptiable">emptiable</a>.
* @return whether the particle is emptiable.
*/
boolean isEmptiable();
/**
* This returns whether this particle accepts a subset of the content accepted by the other particle,
* i.e., whether this is a
* <a href="http://www.w3.org/TR/xmlschema-1/#cos-particle-restrict">valid restriction</a>.
* @param otherParticle some other particle.
* @return whether this is a valid restriction.
*/
boolean isSubset(XSDParticle otherParticle);
}