/*
 * Copyright (c) Robert Bosch GmbH. All rights reserved.
 */
package org.eclipse.blockchain.core;

/**
 * @author ADG5COB
 */
public class SolidityDynamicValueCasterHandler {

  private SolidityDynamicValueCasterHandler() {}

  /**
   * @param valueToCast -
   * @param actualType -
   * @param isArray -
   * @return -
   */
  public static Object getValue(final String valueToCast, final Class<?> actualType, final boolean isArray) {
    if (isArray) {
      return SolidityDynamicValueCaster.castArrayArgs(valueToCast, actualType);
    }
    if ((actualType.getComponentType() != null) && "byte".equals(actualType.getComponentType().toGenericString())) {
      return SolidityDynamicValueCaster.getByteArray(valueToCast);
    }
    return SolidityDynamicValueCaster.castValue(valueToCast, actualType);
  }
}
