/**
 * <copyright>
 * </copyright>
 *
 * $Id: GenericBoolean.java,v 1.1 2010/03/18 06:24:29 cbateman Exp $
 */
package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Generic Boolean</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 * 
 *     This type defines four different values which can designate
 *     boolean values. This includes values yes and no which are
 *     not designated by xsd:boolean
 * 
 *       
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletTaglibPackage#getGenericBoolean()
 * @model extendedMetaData="name='generic-booleanType' kind='simple'"
 * @generated
 */
public interface GenericBoolean extends IdentifiableStringValue
{
 // GenericBoolean
} 
