<?PHP
declare(strict_types = 1);

/**
 * Autoloader for musdb.
 *
 * @param string $className Name of the class to load.
 *
 * @return void
 */
\spl_autoload_register(function(string $className):void {

    // Try using class map as defined through /scripts/buildClassMap.php

    foreach (array_merge([__DIR__ . '/../tests',
        __DIR__ . '/../src',
        __DIR__ . '/../src/enums',
        __DIR__ . '/../../MD_STD/src',
        __DIR__ . '/../../MDErrorReporter',
        __DIR__ . '/../../MDErrorReporter/exceptions',
        __DIR__ . '/../../MDErrorReporter/exceptions/generic',
        __DIR__ . '/../../MDErrorReporter/exceptions/updates',
        __DIR__ . '/../../MDMysqli/src',
        __DIR__ . '/../../MDAllowedValueSets/src',
        __DIR__ . '/../../MDAllowedValueSets/src/classes',
        __DIR__ . '/../../MDAllowedValueSets/src/enums',
        __DIR__ . '/../../MDAllowedValueSets/exceptions',
        __DIR__ . '/../../MDMysqli/exceptions',
    ]) as $classDir) {

        if (\file_exists("$classDir/$className.php")) {
            include "$classDir/$className.php";
            return;
        }

    }
});