<commit_before>#ifndef DALE_GENERATOR
#define DALE_GENERATOR

#include <vector>
#include <string>

namespace llvm {
    class Linker;
    class Module;
}

namespace dale
{
enum Produce
{
    IR,
    BitCode,
    ASM
};

/*! Generator

    Previously, this class contained nearly everything.  Now, it
    serves as a very simple frontend to the rest of the compiler, and
    probably shouldn't be a class at all.
*/
class Generator
{
public:
    Generator();
    ~Generator();
    /*! Compile a set of files into a specific output format.
     *  @file_paths The Dale files to compile.
     *  @bc_file_paths The LLVM bitcode files to compile.
     *  @compile_lib_paths Paths to libraries for use at compile time.
     *  @include_paths Paths to inspect for include files.
     *  @module_paths Paths to modules to import.
     *  @static_module_names The names of modules that should be
     *                       linked statically.
     *  @cto_module_names The names of modules that will only be used
     *                    at compile time.
     *  @module_name If a module is being compiled, the name of the module.
     *  @debug Enable debug mode.
     *  @produce The output format (see Produce).
     *  @optlevel The optimisation level (1-4).
     *  @remove_macros Whether macro definitions should be removed from the
     *                 final product.
     *  @no_common Whether common declarations should not be included.
     *  @no_dale_stdlib Whether the drt library should not be imported.
     *  @static_mods_all Whether all modules should be linked
     *                   statically.
     *  @enable_cto Whether the module being compiled is a
     *              compile-time-only module (equivalent to (attr
     *              cto)).
     *  @shared_object_paths The paths to shared objects against which
     *                       the output file has to be linked
     *                       (populated by this function).
     *  @output_file The compilation output file.
     */
    int run(std::vector<const char *> *file_paths,
            std::vector<const char *> *bc_file_paths,
            std::vector<const char *> *compile_lib_paths,
            std::vector<const char *> *include_paths,
            std::vector<const char *> *module_paths,
            std::vector<const char *> *static_module_names,<commit_msg>[master] documentation formatting<commit_after>#ifndef DALE_GENERATOR
#define DALE_GENERATOR

#include <vector>
#include <string>

namespace llvm {
    class Linker;
    class Module;
}

namespace dale
{
enum Produce
{
    IR,
    BitCode,
    ASM
};

/*! Generator

    Previously, this class contained nearly everything.  Now, it
    serves as a very simple frontend to the rest of the compiler, and
    probably shouldn't be a class at all.
*/
class Generator
{
public:
    Generator();
    ~Generator();
    /*! Compile a set of files into a specific output format.
     *  @param file_paths The Dale files to compile.
     *  @param bc_file_paths The LLVM bitcode files to compile.
     *  @param compile_lib_paths Paths to libraries for use at compile time.
     *  @param include_paths Paths to inspect for include files.
     *  @param module_paths Paths to modules to import.
     *  @param static_module_names The names of modules that should be
     *                             linked statically.
     *  @param cto_module_names The names of modules that will only be used
     *                          at compile time.
     *  @param module_name If a module is being compiled, the name of the
     *                     module.
     *  @param debug Enable debug mode.
     *  @param produce The output format (see Produce).
     *  @param optlevel The optimisation level (1-4).
     *  @param remove_macros Whether macro definitions should be removed from
     *                       the final product.
     *  @param no_common Whether common declarations should not be included.
     *  @param no_dale_stdlib Whether the drt library should not be imported.
     *  @param static_mods_all Whether all modules should be linked
     *                         statically.
     *  @param enable_cto Whether the module being compiled is a
     *                    compile-time-only module (equivalent to (attr
     *                    cto)).
     *  @param shared_object_paths The paths to shared objects against which
     *                             the output file has to be linked
     *                             (populated by this function).
     *  @param output_file The compilation output file.
     */
    int run(std::vector<const char *> *file_paths,
            std::vector<const char *> *bc_file_paths,
            std::vector<const char *> *compile_lib_paths,
            std::vector<const char *> *include_paths,
            std::vector<const char *> *module_paths,
            std::vector<const char *> *static_module_names,
{'fraction_non_alphanumeric': 0.0681586978636826, 'fraction_numerical': 0.0008138351983723296, 'mean_word_length': 2.18600129617628, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6588748', 'n_tokens_mistral': 1333, 'n_tokens_neox': 1308, 'n_words': 505}