Note: This document covers API impact only. For more details, see the ABI compatibility page

Remove a bits member

Overview

- init step 1 step 2
fidl link link
dart link link
go link link
hlcpp link link
llcpp link link
rust link link

Initial State {#init}

FIDL {#fidl-init}

  1. flexible bits Flags {
  2. OPTION_A = 1;
  3. OPTION_B = 2;
  4. OPTION_C = 4;
  5. };

Dart {#dart-init}

  1. void useBits(fidllib.Flags bits) {
  2. if ((bits & fidllib.Flags.optionA).$value != 0) {
  3. print('option A is set');
  4. }
  5. if ((bits & fidllib.Flags.optionB).$value != 0) {
  6. print('option B is set');
  7. }
  8. if ((bits & fidllib.Flags.optionC).$value != 0) {
  9. print('option C is set');
  10. }
  11. if (bits.hasUnknownBits()) {
  12. print('unknown options: ${bits.getUnknownBits()}');
  13. }
  14. }

Go {#go-init}

  1. func useBits(bits lib.Flags) {
  2. if bits.HasBits(lib.FlagsOptionA) {
  3. fmt.Println("option C is set")
  4. }
  5. if bits.HasBits(lib.FlagsOptionB) {
  6. fmt.Println("option C is set")
  7. }
  8. if bits.HasBits(lib.FlagsOptionC) {
  9. fmt.Println("option C is set")
  10. }
  11. if bits.HasUnknownBits() {
  12. fmt.Printf("unknown options: 0x%x", bits.GetUnknownBits())
  13. }
  14. }

HLCPP {#hlcpp-init}

  1. void use_member(fidl_test::Flags bits) {
  2. if (bits & fidl_test::Flags::OPTION_A) {
  3. printf("option A is set\n");
  4. }
  5. if (bits & fidl_test::Flags::OPTION_B) {
  6. printf("option B is set\n");
  7. }
  8. if (bits & fidl_test::Flags::OPTION_C) {
  9. printf("option C is set\n");
  10. }
  11. if (bits.has_unknown_bits()) {
  12. printf("unknown options: 0x%04x", uint32_t(bits.unknown_bits()));
  13. }
  14. }

LLCPP {#llcpp-init}

  1. void use_member(fidl_test::Flags bits) {
  2. if (bits & fidl_test::Flags::OPTION_A) {
  3. printf("option A is set\n");
  4. }
  5. if (bits & fidl_test::Flags::OPTION_B) {
  6. printf("option B is set\n");
  7. }
  8. if (bits & fidl_test::Flags::OPTION_C) {
  9. printf("option C is set\n");
  10. }
  11. if (bits.has_unknown_bits()) {
  12. printf("unknown options: 0x%04x", uint32_t(bits.unknown_bits()));
  13. }
  14. }

Rust {#rust-init}

  1. fn use_bits(bits: &fidl_lib::Flags) {
  2. if bits.contains(fidl_lib::Flags::OptionA) {
  3. println!("option A is set");
  4. }
  5. if bits.contains(fidl_lib::Flags::OptionB) {
  6. println!("option B is set");
  7. }
  8. if bits.contains(fidl_lib::Flags::OptionC) {
  9. println!("option C is set");
  10. }
  11. if bits.has_unknown_bits() {
  12. println!("unknown options: {:x}", bits.get_unknown_bits());
  13. }
  14. }

Update Source Code {#step-1}

Dart {#dart-1}

  • Remove references to the soon-to-be-removed member
  1. void useBits(fidllib.Flags bits) {
  2. if ((bits & fidllib.Flags.optionA).$value != 0) {
  3. print('option A is set');
  4. }
  5. if ((bits & fidllib.Flags.optionB).$value != 0) {
  6. print('option B is set');
  7. }
  8. - if ((bits & fidllib.Flags.optionC).$value != 0) {
  9. - print('option C is set');
  10. - }
  11. if (bits.hasUnknownBits()) {
  12. print('unknown options: ${bits.getUnknownBits()}');
  13. }
  14. }

Go {#go-1}

  • Remove references to the soon-to-be-removed member
  1. func useBits(bits lib.Flags) {
  2. if bits.HasBits(lib.FlagsOptionA) {
  3. fmt.Println("option C is set")
  4. }
  5. if bits.HasBits(lib.FlagsOptionB) {
  6. fmt.Println("option C is set")
  7. }
  8. - if bits.HasBits(lib.FlagsOptionC) {
  9. - fmt.Println("option C is set")
  10. - }
  11. if bits.HasUnknownBits() {
  12. fmt.Printf("unknown options: 0x%x", bits.GetUnknownBits())
  13. }
  14. }

HLCPP {#hlcpp-1}

  • Remove references to the soon-to-be-removed member
  1. void use_member(fidl_test::Flags bits) {
  2. if (bits & fidl_test::Flags::OPTION_A) {
  3. printf("option A is set\n");
  4. }
  5. if (bits & fidl_test::Flags::OPTION_B) {
  6. printf("option B is set\n");
  7. }
  8. - if (bits & fidl_test::Flags::OPTION_C) {
  9. - printf("option C is set\n");
  10. - }
  11. if (bits.has_unknown_bits()) {
  12. printf("unknown options: 0x%04x", uint32_t(bits.unknown_bits()));
  13. }
  14. }

LLCPP {#llcpp-1}

  • Remove references to the soon-to-be-removed member
  1. void use_member(fidl_test::Flags bits) {
  2. if (bits & fidl_test::Flags::OPTION_A) {
  3. printf("option A is set\n");
  4. }
  5. if (bits & fidl_test::Flags::OPTION_B) {
  6. printf("option B is set\n");
  7. }
  8. - if (bits & fidl_test::Flags::OPTION_C) {
  9. - printf("option C is set\n");
  10. - }
  11. if (bits.has_unknown_bits()) {
  12. printf("unknown options: 0x%04x", uint32_t(bits.unknown_bits()));
  13. }
  14. }

Rust {#rust-1}

  • Remove references to the soon-to-be-removed member
  1. fn use_bits(bits: &fidl_lib::Flags) {
  2. if bits.contains(fidl_lib::Flags::OptionA) {
  3. println!("option A is set");
  4. }
  5. if bits.contains(fidl_lib::Flags::OptionB) {
  6. println!("option B is set");
  7. }
  8. - if bits.contains(fidl_lib::Flags::OptionC) {
  9. - println!("option C is set");
  10. - }
  11. if bits.has_unknown_bits() {
  12. println!("unknown options: {:x}", bits.get_unknown_bits());
  13. }
  14. }

Update FIDL Library {#step-2}

  • Remove the bits member
  1. flexible bits Flags {
  2. OPTION_A = 1;
  3. OPTION_B = 2;
  4. - OPTION_C = 4;
  5. };