/**
 * <copyright>
 * 
 * Copyright (c) 2011 See4sys and others.
 * 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/org/documents/epl-2.0/EPL-2.0.html
 * 
 * Contributors: 
 *     See4sys - Initial API and implementation
 * 
 * </copyright>
 */
«IMPORT instancemodel»

«DEFINE main FOR Application»
«FILE "Config.h"»
/** 
 * @file    Config.h
 * @version $Revision: 1.1 $, $Date: 2007/05/21 08:54:08 $
 * 
 * @brief   System-related options and parameter settings, and inline 
 *          invocation targets
 */

#ifndef _CONFIG_H
#define _CONFIG_H
«EXPAND configEntry FOREACH components»
#endif /* _CONFIG_H */
«ENDFILE»
«ENDDEFINE»


«DEFINE configEntry FOR Component»
// Parameters of component «name»
«EXPAND configEntry FOREACH parameterValues-»
«ENDDEFINE»


«DEFINE configEntry FOR ParameterValue-»
«EXPAND comment FOR this-»
#define «name» «value»
«ENDDEFINE»


«DEFINE comment FOR ParameterValue-»
«ENDDEFINE»