All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vlingo.xoom.actors.Characters Maven / Gradle / Ivy

// Copyright © 2012-2021 VLINGO LABS. All rights reserved.
//
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v. 2.0. If a copy of the MPL
// was not distributed with this file, You can obtain
// one at https://mozilla.org/MPL/2.0/.

package io.vlingo.xoom.actors;

import java.util.List;

public class Characters {
  private int current;
  private final T[] states;

  @SuppressWarnings("unchecked")
  public Characters(final List states) {
    this.states = (T[]) states.toArray();
    this.current = 0;
  }

  public final int become(final int which) {
    if (which < 0 || which >= states.length) {
      throw new IndexOutOfBoundsException("Invalid state.");
    }

    if (states[which] == null) {
      throw new IllegalStateException("The state " + which + " is null.");
    }

    final int previous = this.current;
    this.current = which;

    return previous;
  }

  public final T current() {
    return states[current];
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy