001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package dev.metaschema.core.model;
007
008import edu.umd.cs.findbugs.annotations.NonNull;
009
010/**
011 * Provides loading capabilities for Metaschema modules.
012 *
013 * @param <M>
014 *          the type of Metaschema module loaded by this loader
015 */
016public interface IModuleLoader<M extends IModuleExtended<M, ?, ?, ?, ?>> extends ILoader<M> {
017  /**
018   * Used to define a post-processing operation to perform on a module.
019   */
020  @FunctionalInterface
021  interface IModulePostProcessor {
022    /**
023     * Perform a post-processing operation on the provided module.
024     *
025     * @param module
026     *          the Metaschema module to post-process
027     */
028    void processModule(@NonNull IModule module);
029  }
030}