/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 4.0.1
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package com.java.helics;

/**
 *  enumeration of the multi_input operations
 */
public final class helics_multi_input_mode {
  /**
   *  time and priority order the inputs from the core library
   */
  public final static helics_multi_input_mode helics_multi_input_no_op = new helics_multi_input_mode("helics_multi_input_no_op", helicsJNI.helics_multi_input_no_op_get());
  /**
   *  vectorize the inputs either double vector or string vector
   */
  public final static helics_multi_input_mode helics_multi_input_vectorize_operation = new helics_multi_input_mode("helics_multi_input_vectorize_operation", helicsJNI.helics_multi_input_vectorize_operation_get());
  /**
   *  all inputs are assumed to be boolean and all must be true to return true
   */
  public final static helics_multi_input_mode helics_multi_input_and_operation = new helics_multi_input_mode("helics_multi_input_and_operation", helicsJNI.helics_multi_input_and_operation_get());
  /**
   *  all inputs are assumed to be boolean and at least one must be true to return true
   */
  public final static helics_multi_input_mode helics_multi_input_or_operation = new helics_multi_input_mode("helics_multi_input_or_operation", helicsJNI.helics_multi_input_or_operation_get());
  /**
   *  sum all the inputs
   */
  public final static helics_multi_input_mode helics_multi_input_sum_operation = new helics_multi_input_mode("helics_multi_input_sum_operation", helicsJNI.helics_multi_input_sum_operation_get());
  /**
   *  do a difference operation on the inputs, first-sum(rest)<br>
   *     for double input, vector diff for vector input
   */
  public final static helics_multi_input_mode helics_multi_input_diff_operation = new helics_multi_input_mode("helics_multi_input_diff_operation", helicsJNI.helics_multi_input_diff_operation_get());
  /**
   *  find the max of the inputs
   */
  public final static helics_multi_input_mode helics_multi_input_max_operation = new helics_multi_input_mode("helics_multi_input_max_operation", helicsJNI.helics_multi_input_max_operation_get());
  /**
   *  find the min of the inputs
   */
  public final static helics_multi_input_mode helics_multi_input_min_operation = new helics_multi_input_mode("helics_multi_input_min_operation", helicsJNI.helics_multi_input_min_operation_get());
  /**
   *  take the average of the inputs
   */
  public final static helics_multi_input_mode helics_multi_input_average_operation = new helics_multi_input_mode("helics_multi_input_average_operation", helicsJNI.helics_multi_input_average_operation_get());

  public final int swigValue() {
    return swigValue;
  }

  public String toString() {
    return swigName;
  }

  public static helics_multi_input_mode swigToEnum(int swigValue) {
    if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
      return swigValues[swigValue];
    for (int i = 0; i < swigValues.length; i++)
      if (swigValues[i].swigValue == swigValue)
        return swigValues[i];
    throw new IllegalArgumentException("No enum " + helics_multi_input_mode.class + " with value " + swigValue);
  }

  private helics_multi_input_mode(String swigName) {
    this.swigName = swigName;
    this.swigValue = swigNext++;
  }

  private helics_multi_input_mode(String swigName, int swigValue) {
    this.swigName = swigName;
    this.swigValue = swigValue;
    swigNext = swigValue+1;
  }

  private helics_multi_input_mode(String swigName, helics_multi_input_mode swigEnum) {
    this.swigName = swigName;
    this.swigValue = swigEnum.swigValue;
    swigNext = this.swigValue+1;
  }

  private static helics_multi_input_mode[] swigValues = { helics_multi_input_no_op, helics_multi_input_vectorize_operation, helics_multi_input_and_operation, helics_multi_input_or_operation, helics_multi_input_sum_operation, helics_multi_input_diff_operation, helics_multi_input_max_operation, helics_multi_input_min_operation, helics_multi_input_average_operation };
  private static int swigNext = 0;
  private final int swigValue;
  private final String swigName;
}

