summaryrefslogtreecommitdiff
path: root/bindgen-tests/tests/headers/zero-sized-array.hpp
diff options
context:
space:
mode:
authorChristian Poveda <christian.poveda@ferrous-systems.com>2022-09-23 21:36:14 -0500
committerChristian Poveda <christian.poveda@ferrous-systems.com>2022-10-04 20:47:17 -0500
commit0296f9e86c7756e718b6b82836ce1e09b5f8d08a (patch)
treeb5954c6680b243c0b1671a80ea973ef90877e462 /bindgen-tests/tests/headers/zero-sized-array.hpp
parenta900f8f863d1313ad76603234aaeea22bb9ba7b3 (diff)
split the repo into a workspace
remove `clap` dependency :tada: update the book installation instructions
Diffstat (limited to 'bindgen-tests/tests/headers/zero-sized-array.hpp')
-rw-r--r--bindgen-tests/tests/headers/zero-sized-array.hpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/bindgen-tests/tests/headers/zero-sized-array.hpp b/bindgen-tests/tests/headers/zero-sized-array.hpp
new file mode 100644
index 00000000..ae6d0554
--- /dev/null
+++ b/bindgen-tests/tests/headers/zero-sized-array.hpp
@@ -0,0 +1,45 @@
+// These classes are technically zero-sized, but despite that they still don't
+// get an `_address` field inserted.
+
+/**
+ * Bizarrely enough, this should *not* get an `_address` field.
+ */
+class ZeroSizedArray {
+ char arr[0];
+};
+
+/**
+ * And nor should this get an `_address` field.
+ */
+class ContainsZeroSizedArray {
+ ZeroSizedArray zsa;
+};
+
+/**
+ * Inheriting from ZeroSizedArray shouldn't cause an `_address` to be inserted
+ * either.
+ */
+class InheritsZeroSizedArray : ZeroSizedArray {};
+
+// These are dynamically sized, which means that `sizeof` yields `0` but it
+// isn't really true. We shouldn't add an `_address` field to them.
+
+/**
+ * And this should not get an `_address` field either.
+ */
+class DynamicallySizedArray {
+ char arr[];
+};
+
+/**
+ * No `_address` field here either.
+ */
+class ContainsDynamicallySizedArray {
+ DynamicallySizedArray dsa;
+};
+
+// Note: this is disallowed:
+//
+// error: base class 'DynamicallySizedArray' has a flexible array member
+//
+// class InheritsDynamicallySizedArray : DynamicallySizedArray {};