package org.eclipse.papyrus.designer.languages.c.codegen.doxygen

import org.eclipse.uml2.uml.Model
import org.eclipse.uml2.uml.Package
import static extension org.eclipse.papyrus.designer.languages.c.codegen.lib.CommonScript.*

class DoxyfileScript {
	def static doxyfileScript(Model model) '''
		// This template is called by the main module file 
		#---------------------------------------------------------------------------
		# Project related configuration options
		#---------------------------------------------------------------------------
		PROJECT_NAME           = «model.genName»
		PROJECT_NUMBER         = 
		OUTPUT_DIRECTORY       = ./docs/
		CREATE_SUBDIRS         = NO
		OUTPUT_LANGUAGE        = English
		USE_WINDOWS_ENCODING   = NO
		BRIEF_MEMBER_DESC      = YES
		REPEAT_BRIEF           = YES
		ABBREVIATE_BRIEF       = 
		ALWAYS_DETAILED_SEC    = NO
		INLINE_INHERITED_MEMB  = NO
		FULL_PATH_NAMES        = NO
		STRIP_FROM_PATH        = 
		STRIP_FROM_INC_PATH    = 
		SHORT_NAMES            = NO
		JAVADOC_AUTOBRIEF      = NO
		MULTILINE_CPP_IS_BRIEF = NO
		DETAILS_AT_TOP         = NO
		INHERIT_DOCS           = YES
		SEPARATE_MEMBER_PAGES  = NO
		TAB_SIZE               = 4
		ALIASES                = 
		OPTIMIZE_OUTPUT_FOR_C  = YES
		OPTIMIZE_OUTPUT_JAVA   = NO
		BUILTIN_STL_SUPPORT    = NO
		DISTRIBUTE_GROUP_DOC   = NO
		SUBGROUPING            = YES
		#---------------------------------------------------------------------------
		# Build related configuration options
		#---------------------------------------------------------------------------
		EXTRACT_ALL            = YES
		EXTRACT_PRIVATE        = NO
		EXTRACT_STATIC         = NO
		EXTRACT_LOCAL_CLASSES  = YES
		EXTRACT_LOCAL_METHODS  = NO
		HIDE_UNDOC_MEMBERS     = YES
		HIDE_UNDOC_CLASSES     = YES
		HIDE_FRIEND_COMPOUNDS  = NO
		HIDE_IN_BODY_DOCS      = NO
		INTERNAL_DOCS          = NO
		CASE_SENSE_NAMES       = YES
		HIDE_SCOPE_NAMES       = NO
		SHOW_INCLUDE_FILES     = YES
		INLINE_INFO            = YES
		SORT_MEMBER_DOCS       = YES
		SORT_BRIEF_DOCS        = NO
		SORT_BY_SCOPE_NAME     = NO
		GENERATE_TODOLIST      = YES
		GENERATE_TESTLIST      = YES
		GENERATE_BUGLIST       = YES
		GENERATE_DEPRECATEDLIST= YES
		ENABLED_SECTIONS       = 
		MAX_INITIALIZER_LINES  = 30
		SHOW_USED_FILES        = YES
		SHOW_DIRECTORIES       = YES
		FILE_VERSION_FILTER    = 
		#---------------------------------------------------------------------------
		# configuration options related to warning and progress messages
		#---------------------------------------------------------------------------
		QUIET                  = NO
		WARNINGS               = YES
		WARN_IF_UNDOCUMENTED   = YES
		WARN_IF_DOC_ERROR      = YES
		WARN_NO_PARAMDOC       = NO
		WARN_FORMAT            = "$file:$line: $text"
		WARN_LOGFILE           = 
		#---------------------------------------------------------------------------
		# configuration options related to the input files
		#---------------------------------------------------------------------------
		INPUT                  = «model.genPackagePaths»
		FILE_PATTERNS          = *.c \
		                         *.h
		RECURSIVE              = YES
		EXCLUDE                = 
		EXCLUDE_SYMLINKS       = NO
		EXCLUDE_PATTERNS       = 
		EXAMPLE_PATH           = 
		EXAMPLE_PATTERNS       = 
		EXAMPLE_RECURSIVE      = NO
		IMAGE_PATH             = ./docs/pictures/
		INPUT_FILTER           = 
		FILTER_PATTERNS        = 
		FILTER_SOURCE_FILES    = NO
		#---------------------------------------------------------------------------
		# configuration options related to source browsing
		#---------------------------------------------------------------------------
		SOURCE_BROWSER         = YES
		INLINE_SOURCES         = YES
		STRIP_CODE_COMMENTS    = YES
		REFERENCED_BY_RELATION = YES
		REFERENCES_RELATION    = YES
		REFERENCES_LINK_SOURCE = YES
		USE_HTAGS              = NO
		VERBATIM_HEADERS       = YES
		#---------------------------------------------------------------------------
		# configuration options related to the alphabetical class index
		#---------------------------------------------------------------------------
		ALPHABETICAL_INDEX     = YES
		COLS_IN_ALPHA_INDEX    = 5
		IGNORE_PREFIX          = 
		#---------------------------------------------------------------------------
		# configuration options related to the HTML output
		#---------------------------------------------------------------------------
		GENERATE_HTML          = YES
		HTML_OUTPUT            = html
		HTML_FILE_EXTENSION    = .html
		HTML_HEADER            = 
		HTML_FOOTER            = 
		HTML_STYLESHEET        = 
		HTML_ALIGN_MEMBERS     = YES
		GENERATE_HTMLHELP      = NO
		CHM_FILE               = 
		HHC_LOCATION           = 
		GENERATE_CHI           = NO
		BINARY_TOC             = NO
		TOC_EXPAND             = NO
		DISABLE_INDEX          = NO
		ENUM_VALUES_PER_LINE   = 4
		GENERATE_TREEVIEW      = YES
		TREEVIEW_WIDTH         = 250
		#---------------------------------------------------------------------------
		# configuration options related to the LaTeX output
		#---------------------------------------------------------------------------
		GENERATE_LATEX         = NO
		LATEX_OUTPUT           = latex
		LATEX_CMD_NAME         = latex
		MAKEINDEX_CMD_NAME     = makeindex
		COMPACT_LATEX          = NO
		PAPER_TYPE             = a4wide
		EXTRA_PACKAGES         = 
		LATEX_HEADER           = 
		PDF_HYPERLINKS         = NO
		USE_PDFLATEX           = NO
		LATEX_BATCHMODE        = NO
		LATEX_HIDE_INDICES     = NO
		#---------------------------------------------------------------------------
		# configuration options related to the RTF output
		#---------------------------------------------------------------------------
		GENERATE_RTF           = NO
		RTF_OUTPUT             = rtf
		COMPACT_RTF            = NO
		RTF_HYPERLINKS         = NO
		RTF_STYLESHEET_FILE    = 
		RTF_EXTENSIONS_FILE    = 
		#---------------------------------------------------------------------------
		# configuration options related to the man page output
		#---------------------------------------------------------------------------
		GENERATE_MAN           = NO
		MAN_OUTPUT             = man
		MAN_EXTENSION          = .3
		MAN_LINKS              = NO
		#---------------------------------------------------------------------------
		# configuration options related to the XML output
		#---------------------------------------------------------------------------
		GENERATE_XML           = NO
		XML_OUTPUT             = xml
		XML_SCHEMA             = 
		XML_DTD                = 
		XML_PROGRAMLISTING     = YES
		#---------------------------------------------------------------------------
		# configuration options for the AutoGen Definitions output
		#---------------------------------------------------------------------------
		GENERATE_AUTOGEN_DEF   = NO
		#---------------------------------------------------------------------------
		# configuration options related to the Perl module output
		#---------------------------------------------------------------------------
		GENERATE_PERLMOD       = NO
		PERLMOD_LATEX          = NO
		PERLMOD_PRETTY         = YES
		PERLMOD_MAKEVAR_PREFIX = 
		#---------------------------------------------------------------------------
		# Configuration options related to the preprocessor   
		#---------------------------------------------------------------------------
		ENABLE_PREPROCESSING   = YES
		MACRO_EXPANSION        = NO
		EXPAND_ONLY_PREDEF     = NO
		SEARCH_INCLUDES        = YES
		INCLUDE_PATH           = 
		INCLUDE_FILE_PATTERNS  = 
		PREDEFINED             = 
		EXPAND_AS_DEFINED      = 
		SKIP_FUNCTION_MACROS   = YES
		#---------------------------------------------------------------------------
		# Configuration.additions related to external references   
		#---------------------------------------------------------------------------
		TAGFILES               = 
		GENERATE_TAGFILE       = 
		ALLEXTERNALS           = NO
		EXTERNAL_GROUPS        = YES
		PERL_PATH              = /usr/bin/perl
		#---------------------------------------------------------------------------
		# Configuration options related to the dot tool   
		#---------------------------------------------------------------------------
		CLASS_DIAGRAMS         = YES
		HIDE_UNDOC_RELATIONS   = YES
		HAVE_DOT               = YES
		CLASS_GRAPH            = YES
		COLLABORATION_GRAPH    = YES
		GROUP_GRAPHS           = YES
		UML_LOOK               = YES
		TEMPLATE_RELATIONS     = YES
		INCLUDE_GRAPH          = YES
		INCLUDED_BY_GRAPH      = YES
		CALL_GRAPH             = YES
		CALLER_GRAPH           = YES
		GRAPHICAL_HIERARCHY    = YES
		DIRECTORY_GRAPH        = YES
		DOT_IMAGE_FORMAT       = png
		DOT_PATH               = 
		DOTFILE_DIRS           = 
		MAX_DOT_GRAPH_WIDTH    = 1024
		MAX_DOT_GRAPH_HEIGHT   = 1024
		MAX_DOT_GRAPH_DEPTH    = 0
		DOT_TRANSPARENT        = NO
		DOT_MULTI_TARGETS      = NO
		GENERATE_LEGEND        = YES
		DOT_CLEANUP            = YES
		#---------------------------------------------------------------------------
		# Configuration.additions related to the search engine   
		#---------------------------------------------------------------------------
		SEARCHENGINE           = NO
	'''

	def static genPackagePaths(Package pkg) '''
		«pkg.qualifiedName.replace(".", "/")»
	'''
}
