/**
 * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 *  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 
 * 
 *  Based on ideas from Xtext, Xtend, Xcore
 * 
 *  Contributors{  
 *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
 *  
 */
package org.eclipse.osbp.xtext.table;

import org.eclipse.osbp.xtext.cubedsl.CubeLevel;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Table Hierarchy</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.eclipse.osbp.xtext.table.TableHierarchy#getValueRef <em>Value Ref</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.eclipse.osbp.xtext.table.TableDSLPackage#getTableHierarchy()
 * @model
 * @generated
 */
public interface TableHierarchy extends Expression, TableValueElement {
	/**
	 * Returns the value of the '<em><b>Value Ref</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Value Ref</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Value Ref</em>' reference.
	 * @see #setValueRef(CubeLevel)
	 * @see org.eclipse.osbp.xtext.table.TableDSLPackage#getTableHierarchy_ValueRef()
	 * @model
	 * @generated
	 */
	CubeLevel getValueRef();

	/**
	 * Sets the value of the '{@link org.eclipse.osbp.xtext.table.TableHierarchy#getValueRef <em>Value Ref</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Value Ref</em>' reference.
	 * @see #getValueRef()
	 * @generated
	 */
	void setValueRef(CubeLevel value);

} // TableHierarchy
