/* ----------------------------------------------------------------------------
 * 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;

/**
 *  single character data type  this is intentionally the same as string enumeration of possible federate flags
 */
public final class helics_federate_flags {
  /**
   *  flag indicating that a federate is observe only
   */
  public final static helics_federate_flags helics_flag_observer = new helics_federate_flags("helics_flag_observer", helicsJNI.helics_flag_observer_get());
  /**
   *  flag indicating that a federate can only return requested times
   */
  public final static helics_federate_flags helics_flag_uninterruptible = new helics_federate_flags("helics_flag_uninterruptible", helicsJNI.helics_flag_uninterruptible_get());
  /**
   *  flag indicating that a federate can be interrupted
   */
  public final static helics_federate_flags helics_flag_interruptible = new helics_federate_flags("helics_flag_interruptible", helicsJNI.helics_flag_interruptible_get());
  /**
   *  flag indicating that a federate/interface is a signal generator only
   */
  public final static helics_federate_flags helics_flag_source_only = new helics_federate_flags("helics_flag_source_only", helicsJNI.helics_flag_source_only_get());
  /**
   *  flag indicating a federate/interface should only transmit values if they have changed(binary<br>
   *            equivalence)
   */
  public final static helics_federate_flags helics_flag_only_transmit_on_change = new helics_federate_flags("helics_flag_only_transmit_on_change", helicsJNI.helics_flag_only_transmit_on_change_get());
  /**
   *  flag indicating a federate/interface should only trigger an update if a value has changed<br>
   * (binary equivalence)
   */
  public final static helics_federate_flags helics_flag_only_update_on_change = new helics_federate_flags("helics_flag_only_update_on_change", helicsJNI.helics_flag_only_update_on_change_get());
  /**
   *  flag indicating a federate should only grant time if all other federates have already passed<br>
   * the requested time
   */
  public final static helics_federate_flags helics_flag_wait_for_current_time_update = new helics_federate_flags("helics_flag_wait_for_current_time_update", helicsJNI.helics_flag_wait_for_current_time_update_get());
  /**
   *  flag indicating a federate should operate on a restrictive time policy, which disallows some<br>
   *        2nd order time evaluation and can be useful for certain types of dependency cycles<br>
   *         and update patterns, but generally shouldn't be used as it can lead to some very slow update<br>
   *        conditions
   */
  public final static helics_federate_flags helics_flag_restrictive_time_policy = new helics_federate_flags("helics_flag_restrictive_time_policy", helicsJNI.helics_flag_restrictive_time_policy_get());
  /**
   *  flag indicating that a federate has rollback capability
   */
  public final static helics_federate_flags helics_flag_rollback = new helics_federate_flags("helics_flag_rollback", helicsJNI.helics_flag_rollback_get());
  /**
   *  flag indicating that a federate performs forward computation and does internal rollback
   */
  public final static helics_federate_flags helics_flag_forward_compute = new helics_federate_flags("helics_flag_forward_compute", helicsJNI.helics_flag_forward_compute_get());
  /**
   *  flag indicating that a federate needs to run in real time
   */
  public final static helics_federate_flags helics_flag_realtime = new helics_federate_flags("helics_flag_realtime", helicsJNI.helics_flag_realtime_get());
  /**
   *  flag indicating that the federate will only interact on a single thread
   */
  public final static helics_federate_flags helics_flag_single_thread_federate = new helics_federate_flags("helics_flag_single_thread_federate", helicsJNI.helics_flag_single_thread_federate_get());
  /**
   *  flag specifying that a federate, core, or broker may be slow to respond to pings<br>
   *         If the federate goes offline there is no good way to detect it so use with caution
   */
  public final static helics_federate_flags helics_flag_slow_responding = new helics_federate_flags("helics_flag_slow_responding", helicsJNI.helics_flag_slow_responding_get());
  /**
   *  used to delay a core from entering initialization mode even if it would otherwise be ready
   */
  public final static helics_federate_flags helics_flag_delay_init_entry = new helics_federate_flags("helics_flag_delay_init_entry", helicsJNI.helics_flag_delay_init_entry_get());
  /**
   *  used to clear the HELICS_DELAY_INIT_ENTRY flag in cores
   */
  public final static helics_federate_flags helics_flag_enable_init_entry = new helics_federate_flags("helics_flag_enable_init_entry", helicsJNI.helics_flag_enable_init_entry_get());
  /**
   *  used to not display warnings on mismatched requested times
   */
  public final static helics_federate_flags helics_flag_ignore_time_mismatch_warnings = new helics_federate_flags("helics_flag_ignore_time_mismatch_warnings", helicsJNI.helics_flag_ignore_time_mismatch_warnings_get());
  /**
   *  specify that a federate error should terminate the federation
   */
  public final static helics_federate_flags helics_flag_terminate_on_error = new helics_federate_flags("helics_flag_terminate_on_error", helicsJNI.helics_flag_terminate_on_error_get());

  public final int swigValue() {
    return swigValue;
  }

  public String toString() {
    return swigName;
  }

  public static helics_federate_flags 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_federate_flags.class + " with value " + swigValue);
  }

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

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

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

  private static helics_federate_flags[] swigValues = { helics_flag_observer, helics_flag_uninterruptible, helics_flag_interruptible, helics_flag_source_only, helics_flag_only_transmit_on_change, helics_flag_only_update_on_change, helics_flag_wait_for_current_time_update, helics_flag_restrictive_time_policy, helics_flag_rollback, helics_flag_forward_compute, helics_flag_realtime, helics_flag_single_thread_federate, helics_flag_slow_responding, helics_flag_delay_init_entry, helics_flag_enable_init_entry, helics_flag_ignore_time_mismatch_warnings, helics_flag_terminate_on_error };
  private static int swigNext = 0;
  private final int swigValue;
  private final String swigName;
}

