/**
 * Copyright (c) 2020 CEA LIST
 * 
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License v2.0 which
 * accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 */
package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Pooling layers 1121</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad <em>Count include pad</em>}</li>
 * </ul>
 *
 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2_1()
 * @model abstract="true"
 * @generated
 */
public interface Pooling_layers_1_1_2_1 extends Pooling_layers_1_1_1_1 {
	/**
	 * Returns the value of the '<em><b>Count include pad</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Count include pad</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Count include pad</em>' attribute.
	 * @see #setCount_include_pad(boolean)
	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2_1_Count_include_pad()
	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
	 * @generated
	 */
	boolean isCount_include_pad();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad <em>Count include pad</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Count include pad</em>' attribute.
	 * @see #isCount_include_pad()
	 * @generated
	 */
	void setCount_include_pad(boolean value);

} // Pooling_layers_1_1_2_1
