///
/// JConstraint.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#include "JConstraint.hpp"

namespace margelo::nitro::camera {
  /**
   * Converts JConstraint to std::variant<FPSConstraint, VideoStabilizationModeConstraint, PreviewStabilizationModeConstraint, ResolutionBiasConstraint, VideoDynamicRangeConstraint, PhotoHDRConstraint, PixelFormatConstraint, BinnedConstraint>
   */
  std::variant<FPSConstraint, VideoStabilizationModeConstraint, PreviewStabilizationModeConstraint, ResolutionBiasConstraint, VideoDynamicRangeConstraint, PhotoHDRConstraint, PixelFormatConstraint, BinnedConstraint> JConstraint::toCpp() const {
    if (isInstanceOf(JConstraint_impl::First::javaClassStatic())) {
      // It's a `FPSConstraint`
      auto jniValue = static_cast<const JConstraint_impl::First*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Second::javaClassStatic())) {
      // It's a `VideoStabilizationModeConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Second*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Third::javaClassStatic())) {
      // It's a `PreviewStabilizationModeConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Third*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Fourth::javaClassStatic())) {
      // It's a `ResolutionBiasConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Fourth*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Fifth::javaClassStatic())) {
      // It's a `VideoDynamicRangeConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Fifth*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Sixth::javaClassStatic())) {
      // It's a `PhotoHDRConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Sixth*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Seventh::javaClassStatic())) {
      // It's a `PixelFormatConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Seventh*>(this)->getValue();
      return jniValue->toCpp();
    } else if (isInstanceOf(JConstraint_impl::Eigth::javaClassStatic())) {
      // It's a `BinnedConstraint`
      auto jniValue = static_cast<const JConstraint_impl::Eigth*>(this)->getValue();
      return jniValue->toCpp();
    }
    throw std::invalid_argument("Variant is unknown Kotlin instance!");
  }
} // namespace margelo::nitro::camera
