1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.mdm;
7   
8   import dev.metaschema.core.mdm.impl.DefinitionFlagNodeItem;
9   import dev.metaschema.core.metapath.StaticContext;
10  import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
11  import dev.metaschema.core.metapath.item.node.IFlagNodeItem;
12  import dev.metaschema.core.model.IFlagDefinition;
13  import edu.umd.cs.findbugs.annotations.NonNull;
14  
15  /**
16   * Represents a Metapath flag node item that is backed by a simple Metaschema
17   * module-based data model.
18   */
19  public interface IDMFlagNodeItem extends IFlagNodeItem, IDMNodeItem {
20    /**
21     * Create new flag node item that is detached from a parent node item.
22     *
23     * @param definition
24     *          the Metaschema flag definition describing the flag
25     * @param value
26     *          the flag's initial value
27     * @param staticContext
28     *          the atomic flag value
29     * @return the new flag node item
30     */
31    @NonNull
32    static IDMFlagNodeItem newInstance(
33        @NonNull IFlagDefinition definition,
34        @NonNull IAnyAtomicItem value,
35        @NonNull StaticContext staticContext) {
36      return new DefinitionFlagNodeItem(definition, value, staticContext);
37    }
38  }