2
0

enum.rs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. enum Opaque {
  2. Foo(i32),
  3. Bar,
  4. }
  5. #[repr(u64)]
  6. enum A {
  7. a1 = 0,
  8. a2 = 2,
  9. a3,
  10. a4 = 5,
  11. }
  12. #[repr(u32)]
  13. enum B {
  14. b1 = 0,
  15. b2 = 2,
  16. b3,
  17. b4 = 5,
  18. }
  19. #[repr(u16)]
  20. enum C {
  21. c1 = 0,
  22. c2 = 2,
  23. c3,
  24. c4 = 5,
  25. }
  26. #[repr(u8)]
  27. enum D {
  28. d1 = 0,
  29. d2 = 2,
  30. d3,
  31. d4 = 5,
  32. }
  33. #[repr(usize)]
  34. enum E {
  35. e1 = 0,
  36. e2 = 2,
  37. e3,
  38. e4 = 5,
  39. }
  40. #[repr(isize)]
  41. enum F {
  42. f1 = 0,
  43. f2 = 2,
  44. f3,
  45. f4 = 5,
  46. }
  47. #[repr(u8)]
  48. enum G {
  49. Foo(i16),
  50. Bar { x: u8, y: i16 },
  51. Baz,
  52. }
  53. /// cbindgen:prefix-with-name
  54. #[repr(C)]
  55. enum H {
  56. Foo(i16),
  57. Bar { x: u8, y: i16 },
  58. Baz,
  59. }
  60. /// cbindgen:prefix-with-name
  61. #[repr(C, u8)]
  62. enum I {
  63. Foo(i16),
  64. Bar { x: u8, y: i16 },
  65. Baz,
  66. }
  67. #[repr(C, u8, u16)]
  68. enum J {
  69. Foo(i16),
  70. Bar { x: u8, y: i16 },
  71. Baz,
  72. }
  73. #[repr(C, u8, unknown_hint)]
  74. enum K {
  75. Foo(i16),
  76. Bar { x: u8, y: i16 },
  77. Baz,
  78. }
  79. #[repr(C)]
  80. enum L {
  81. l1,
  82. l2,
  83. l3,
  84. l4,
  85. }
  86. #[repr(i8)]
  87. enum M {
  88. m1 = -1,
  89. m2 = 0,
  90. m3 = 1,
  91. }
  92. /// cbindgen:enum-class=false
  93. #[repr(C)]
  94. enum N {
  95. n1,
  96. n2,
  97. n3,
  98. n4,
  99. }
  100. /// cbindgen:enum-class=false
  101. #[repr(i8)]
  102. enum O {
  103. o1,
  104. o2,
  105. o3,
  106. o4,
  107. }
  108. #[repr(C, u8)]
  109. enum P {
  110. P0(u8),
  111. P1(u8, u8, u8),
  112. }
  113. #[no_mangle]
  114. pub extern "C" fn root(
  115. opaque: *mut Opaque,
  116. a: A,
  117. b: B,
  118. c: C,
  119. d: D,
  120. e: E,
  121. f: F,
  122. g: G,
  123. h: H,
  124. i: I,
  125. j: J,
  126. k: K,
  127. l: L,
  128. m: M,
  129. n: N,
  130. o: O,
  131. p: P,
  132. ) {
  133. }