// generated by diplomat-tool
// dart format off

part of 'lib.g.dart';

/// See the [Rust documentation for `IndicSyllabicCategory`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html) for more information.
enum IndicSyllabicCategory {
  /// See the [Rust documentation for `Other`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Other) for more information.
  other,
  /// See the [Rust documentation for `Avagraha`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Avagraha) for more information.
  avagraha,
  /// See the [Rust documentation for `Bindu`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Bindu) for more information.
  bindu,
  /// See the [Rust documentation for `BrahmiJoiningNumber`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.BrahmiJoiningNumber) for more information.
  brahmiJoiningNumber,
  /// See the [Rust documentation for `CantillationMark`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.CantillationMark) for more information.
  cantillationMark,
  /// See the [Rust documentation for `Consonant`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Consonant) for more information.
  consonant,
  /// See the [Rust documentation for `ConsonantDead`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantDead) for more information.
  consonantDead,
  /// See the [Rust documentation for `ConsonantFinal`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantFinal) for more information.
  consonantFinal,
  /// See the [Rust documentation for `ConsonantHeadLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantHeadLetter) for more information.
  consonantHeadLetter,
  /// See the [Rust documentation for `ConsonantInitialPostfixed`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantInitialPostfixed) for more information.
  consonantInitialPostfixed,
  /// See the [Rust documentation for `ConsonantKiller`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantKiller) for more information.
  consonantKiller,
  /// See the [Rust documentation for `ConsonantMedial`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantMedial) for more information.
  consonantMedial,
  /// See the [Rust documentation for `ConsonantPlaceholder`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantPlaceholder) for more information.
  consonantPlaceholder,
  /// See the [Rust documentation for `ConsonantPrecedingRepha`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantPrecedingRepha) for more information.
  consonantPrecedingRepha,
  /// See the [Rust documentation for `ConsonantPrefixed`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantPrefixed) for more information.
  consonantPrefixed,
  /// See the [Rust documentation for `ConsonantSubjoined`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantSubjoined) for more information.
  consonantSubjoined,
  /// See the [Rust documentation for `ConsonantSucceedingRepha`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantSucceedingRepha) for more information.
  consonantSucceedingRepha,
  /// See the [Rust documentation for `ConsonantWithStacker`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ConsonantWithStacker) for more information.
  consonantWithStacker,
  /// See the [Rust documentation for `GeminationMark`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.GeminationMark) for more information.
  geminationMark,
  /// See the [Rust documentation for `InvisibleStacker`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.InvisibleStacker) for more information.
  invisibleStacker,
  /// See the [Rust documentation for `Joiner`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Joiner) for more information.
  joiner,
  /// See the [Rust documentation for `ModifyingLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ModifyingLetter) for more information.
  modifyingLetter,
  /// See the [Rust documentation for `NonJoiner`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.NonJoiner) for more information.
  nonJoiner,
  /// See the [Rust documentation for `Nukta`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Nukta) for more information.
  nukta,
  /// See the [Rust documentation for `Number`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Number) for more information.
  number,
  /// See the [Rust documentation for `NumberJoiner`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.NumberJoiner) for more information.
  numberJoiner,
  /// See the [Rust documentation for `PureKiller`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.PureKiller) for more information.
  pureKiller,
  /// See the [Rust documentation for `RegisterShifter`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.RegisterShifter) for more information.
  registerShifter,
  /// See the [Rust documentation for `SyllableModifier`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.SyllableModifier) for more information.
  syllableModifier,
  /// See the [Rust documentation for `ToneLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ToneLetter) for more information.
  toneLetter,
  /// See the [Rust documentation for `ToneMark`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ToneMark) for more information.
  toneMark,
  /// See the [Rust documentation for `Virama`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Virama) for more information.
  virama,
  /// See the [Rust documentation for `Visarga`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Visarga) for more information.
  visarga,
  /// See the [Rust documentation for `Vowel`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.Vowel) for more information.
  vowel,
  /// See the [Rust documentation for `VowelDependent`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.VowelDependent) for more information.
  vowelDependent,
  /// See the [Rust documentation for `VowelIndependent`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.VowelIndependent) for more information.
  vowelIndependent,
  /// See the [Rust documentation for `ReorderingKiller`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#associatedconstant.ReorderingKiller) for more information.
  reorderingKiller;

  /// See the [Rust documentation for `for_char`](https://docs.rs/icu/2.2.0/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information.
  static IndicSyllabicCategory forChar(Rune ch) {
    final result = _icu4x_IndicSyllabicCategory_for_char_mv1(ch);
    return IndicSyllabicCategory.values[result];
  }

  /// Get the "long" name of this property value (returns empty if property value is unknown)
  ///
  /// See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesLongBorrowed.html#method.get) for more information.
  String? longName() {
    final result = _icu4x_IndicSyllabicCategory_long_name_mv1(index);
    if (!result.isOk) {
      return null;
    }
    return result.union.ok._toDart([], isStatic: true);
  }

  /// Get the "short" name of this property value (returns empty if property value is unknown)
  ///
  /// See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesShortBorrowed.html#method.get) for more information.
  String? shortName() {
    final result = _icu4x_IndicSyllabicCategory_short_name_mv1(index);
    if (!result.isOk) {
      return null;
    }
    return result.union.ok._toDart([], isStatic: true);
  }

  /// Convert to an integer value usable with ICU4C and `CodePointMapData`
  ///
  /// See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#method.to_icu4c_value) for more information.
  int toIntegerValue() {
    final result = _icu4x_IndicSyllabicCategory_to_integer_value_mv1(index);
    return result;
  }

  /// Convert from an integer value from ICU4C or `CodePointMapData`
  ///
  /// See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.IndicSyllabicCategory.html#method.from_icu4c_value) for more information.
  static IndicSyllabicCategory? fromIntegerValue(int other) {
    final result = _icu4x_IndicSyllabicCategory_from_integer_value_mv1(other);
    if (!result.isOk) {
      return null;
    }
    return IndicSyllabicCategory.values[result.union.ok];
  }

  static IndicSyllabicCategory? tryFromStr(String s) {
    final temp = _FinalizedArena();
    final result = _icu4x_IndicSyllabicCategory_try_from_str_mv1(s._utf8AllocIn(temp.arena));
    if (!result.isOk) {
      return null;
    }
    return IndicSyllabicCategory.values[result.union.ok];
  }

}

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int32 Function(ffi.Uint32)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_for_char_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_IndicSyllabicCategory_for_char_mv1(Rune ch);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultSliceUtf8Void Function(ffi.Int32)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_long_name_mv1')
// ignore: non_constant_identifier_names
external _ResultSliceUtf8Void _icu4x_IndicSyllabicCategory_long_name_mv1(int self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultSliceUtf8Void Function(ffi.Int32)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_short_name_mv1')
// ignore: non_constant_identifier_names
external _ResultSliceUtf8Void _icu4x_IndicSyllabicCategory_short_name_mv1(int self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Uint8 Function(ffi.Int32)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_to_integer_value_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_IndicSyllabicCategory_to_integer_value_mv1(int self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultInt32Void Function(ffi.Uint8)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_from_integer_value_mv1')
// ignore: non_constant_identifier_names
external _ResultInt32Void _icu4x_IndicSyllabicCategory_from_integer_value_mv1(int other);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultInt32Void Function(_SliceUtf8)>(isLeaf: true, symbol: 'icu4x_IndicSyllabicCategory_try_from_str_mv1')
// ignore: non_constant_identifier_names
external _ResultInt32Void _icu4x_IndicSyllabicCategory_try_from_str_mv1(_SliceUtf8 s);

// dart format on
