summaryrefslogtreecommitdiff
path: root/rushs/tinyprintf/variant/variant.h
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
commitc9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch)
tree3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /rushs/tinyprintf/variant/variant.h
add: graphs et rushs
Diffstat (limited to 'rushs/tinyprintf/variant/variant.h')
-rw-r--r--rushs/tinyprintf/variant/variant.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/rushs/tinyprintf/variant/variant.h b/rushs/tinyprintf/variant/variant.h
new file mode 100644
index 0000000..9983bc1
--- /dev/null
+++ b/rushs/tinyprintf/variant/variant.h
@@ -0,0 +1,35 @@
+#ifndef VARIANT_H
+#define VARIANT_H
+
+#include <stdbool.h>
+#include <stddef.h>
+
+enum type
+{
+ TYPE_INT,
+ TYPE_FLOAT,
+ TYPE_CHAR,
+ TYPE_STRING
+};
+
+union type_any
+{
+ int int_v;
+ float float_v;
+ char char_v;
+ const char *str_v;
+};
+
+struct variant
+{
+ enum type type;
+ union type_any value;
+};
+
+void variant_display(const struct variant *e);
+bool variant_equal(const struct variant *left, const struct variant *right);
+int variant_find(const struct variant *array, size_t len, enum type type,
+ union type_any value);
+float variant_sum(const struct variant *array, size_t len);
+
+#endif /* !VARIANT_H */