/*******************************************************************************
 * Copyright (c) 2002, 2005 Object Factory Inc.
 *
 * This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *		Object Factory Inc. - Initial implementation
 *******************************************************************************/
package org.eclipse.ant.internal.ui.dtd;

import org.eclipse.ant.internal.ui.dtd.schema.Nfm;

/**
 * Content model. This is the printable version of the model. The walkable version is the IDfm.
 * 
 * @author Bob Foster
 */
public interface IModel {

	public static final int UNKNOWN = 0;
	public static final int SEQUENCE = 1;
	public static final int CHOICE = 2;
	public static final int LEAF = 4;

	public static final int UNBOUNDED = Integer.MAX_VALUE;

	/**
	 * @return one of SEQUENCE, CHOICE, LEAF
	 */
	public int getKind();

	/**
	 * @return one of 0 or 1.
	 */
	public int getMinOccurs();

	/**
	 * @return one of 1 or UNBOUNDED.
	 */
	public int getMaxOccurs();

	/**
	 * @return if SEQUENCE or CHOICE return array of sub-models; otherwise undefined.
	 */
	public IModel[] getContents();

	/**
	 * @return if LEAF return atom; otherwise undefined.
	 */
	public IAtom getLeaf();

	/**
	 * @return if SEQUENCE or CHOICE return "," and "|", respectively; otherwise undefined. Useful when printing model.
	 */
	public String getOperator();

	/**
	 * @return one of "", "?", "*" or "+". Useful when printing model.
	 */
	public String getQualifier();

	/**
	 * Convert content model to string representation.
	 */
	public String stringRep();

	/**
	 * Convert the model to an Nfm on demand.
	 * 
	 * @return Nfm
	 */
	public Nfm toNfm();
}
