CLASS:: LanguageConfig
summary:: Access and modify interpreter configuration
categories:: Language

DESCRIPTION::
The LanguageConfig class provides access to the interpreter configuration.


section:: Configuration File Format
The configuration file is stored in YAML format, which contains one dictionary. The semantics of the dictionary is listed in
the following table:

definitionList::
## teletype::includePaths:: || List of class library paths.
## teletype::excludePaths:: || List of paths to exclude from the class library files (overrides teletype::includePaths::).
## teletype::postInlineWarnings:: || Boolean flag to post warnings about missing inline opportunities.
::

CLASSMETHODS::

METHOD:: store
Store the current configuration to file. Throws an error if the config file cannot be opened or if
writing fails.

argument:: file
Path to the configuration file to store. If the value is code::nil:: it defaults to code::Platform.userConfigDir +/+ "sclang_conf.yaml"::

subsection:: Library Path Handling

The language configuration mechanism provides a way to add or exclude specific paths for the class library.

note::Changes to the class library paths won't have any effect before the configuration file is stored and the class library is recompiled.::

METHOD:: includePaths
Return the class library include paths.

METHOD:: addIncludePath
Add new class library include path.

METHOD:: removeIncludePath
Remove path from class library include paths.

METHOD:: excludePaths
Return the class library exclude paths.

METHOD:: addExcludePath
Add new class library exclude path.

METHOD:: removeExcludePath
Remove path from class library exclude paths.

METHOD:: currentPath
Return the current config file path.

subsection:: Compiler Warnings

METHOD:: postInlineWarnings
Get or set the compiler flag, whether warnings should be posted if a FunctionDef cannot be inlined.

code::
LanguageConfig.postInlineWarnings_(true) // warn
if(0.5.coin) { var x; x = 10.rand; x + 1 } { 10 };
LanguageConfig.postInlineWarnings_(false) // ignore it.
if(0.5.coin) { var x; x = 10.rand; x + 1 } { 10 };
::
