layout.rs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #[repr(align(1), C)]
  2. pub struct Align1Struct {
  3. pub arg1: usize,
  4. pub arg2: *mut u8,
  5. }
  6. #[repr(align(2), C)]
  7. pub struct Align2Struct {
  8. pub arg1: usize,
  9. pub arg2: *mut u8,
  10. }
  11. #[repr(align(4), C)]
  12. pub struct Align4Struct {
  13. pub arg1: usize,
  14. pub arg2: *mut u8,
  15. }
  16. #[repr(align(8), C)]
  17. pub struct Align8Struct {
  18. pub arg1: usize,
  19. pub arg2: *mut u8,
  20. }
  21. #[repr(align(32), C)]
  22. pub struct Align32Struct {
  23. pub arg1: usize,
  24. pub arg2: *mut u8,
  25. }
  26. #[repr(packed, C)]
  27. pub struct PackedStruct {
  28. pub arg1: usize,
  29. pub arg2: *mut u8,
  30. }
  31. #[repr(align(1), C)]
  32. pub union Align1Union {
  33. pub variant1: usize,
  34. pub variant2: *mut u8,
  35. }
  36. #[repr(align(4), C)]
  37. pub union Align4Union {
  38. pub variant1: usize,
  39. pub variant2: *mut u8,
  40. }
  41. #[repr(align(16), C)]
  42. pub union Align16Union {
  43. pub variant1: usize,
  44. pub variant2: *mut u8,
  45. }
  46. #[repr(packed, C)]
  47. pub union PackedUnion {
  48. pub variant1: usize,
  49. pub variant2: *mut u8,
  50. }
  51. // #[repr(packed(n), C)] structs are currently unsupported.
  52. #[repr(packed(4), C)]
  53. pub struct UnsupportedPacked4Struct {
  54. pub arg1: usize,
  55. pub arg2: *mut u8,
  56. }
  57. // #[repr(packed(n), C)] unions are currently unsupported.
  58. #[repr(packed(4), C)]
  59. pub union UnsupportedPacked4Union {
  60. pub variant1: usize,
  61. pub variant2: *mut u8,
  62. }
  63. // #[repr(align(n), C)] enums are currently unsupported.
  64. #[repr(align(4), C)]
  65. pub enum UnsupportedAlign4Enum {
  66. Variant1,
  67. Variant2,
  68. }
  69. // Non-repr(C) structs aren't translated.
  70. #[repr(align(4))]
  71. pub struct RustAlign4Struct {
  72. pub arg1: usize,
  73. pub arg2: *mut u8,
  74. }
  75. // Non-repr(C) structs aren't translated.
  76. #[repr(packed)]
  77. pub struct RustPackedStruct {
  78. pub arg1: usize,
  79. pub arg2: *mut u8,
  80. }
  81. // Non-repr(C) unions aren't translated.
  82. #[repr(align(4))]
  83. pub struct RustAlign4Union {
  84. pub arg1: usize,
  85. pub arg2: *mut u8,
  86. }
  87. // Non-repr(C) unions aren't translated.
  88. #[repr(packed)]
  89. pub struct RustPackedUnion {
  90. pub arg1: usize,
  91. pub arg2: *mut u8,
  92. }