ILiteralExpression.java

/*
 * SPDX-FileCopyrightText: none
 * SPDX-License-Identifier: CC0-1.0
 */

package gov.nist.secauto.metaschema.core.metapath.cst;

import gov.nist.secauto.metaschema.core.metapath.item.atomic.IAnyAtomicItem;

import java.util.Collections;
import java.util.List;

import edu.umd.cs.findbugs.annotations.NonNull;

public interface ILiteralExpression<RESULT_TYPE extends IAnyAtomicItem, VALUE> extends IExpression {
  /**
   * Get the literal value.
   *
   * @return the value
   */
  @NonNull
  VALUE getValue();

  @Override
  Class<RESULT_TYPE> getBaseResultType();

  @Override
  default Class<RESULT_TYPE> getStaticResultType() {
    return getBaseResultType();
  }

  @SuppressWarnings("null")
  @Override
  default List<? extends IExpression> getChildren() {
    // a literal never has children
    return Collections.emptyList();
  }
}