summaryrefslogtreecommitdiff
path: root/rushs/tinyprintf/variant/variant.c
diff options
context:
space:
mode:
Diffstat (limited to 'rushs/tinyprintf/variant/variant.c')
-rw-r--r--rushs/tinyprintf/variant/variant.c96
1 files changed, 0 insertions, 96 deletions
diff --git a/rushs/tinyprintf/variant/variant.c b/rushs/tinyprintf/variant/variant.c
deleted file mode 100644
index eb2f8a8..0000000
--- a/rushs/tinyprintf/variant/variant.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "variant.h"
-
-#include <stdio.h>
-#include <string.h>
-
-void variant_display(const struct variant *e)
-{
- switch (e->type)
- {
- case (TYPE_INT):
- printf("%d\n", e->value.int_v);
- break;
- case (TYPE_FLOAT):
- printf("%f\n", e->value.float_v);
- break;
- case (TYPE_CHAR):
- printf("%c\n", e->value.char_v);
- break;
- default:
- printf("%s\n", e->value.str_v);
- break;
- }
-}
-
-bool variant_equal(const struct variant *left, const struct variant *right)
-{
- if (left == NULL || right == NULL)
- {
- return true;
- }
- switch (left->type)
- {
- case (TYPE_INT):
- if (right->type != TYPE_INT)
- {
- return false;
- }
- return left->value.int_v == right->value.int_v;
- case (TYPE_FLOAT):
- if (right->type != TYPE_FLOAT)
- {
- return false;
- }
- return left->value.float_v == right->value.float_v;
- case (TYPE_CHAR):
- if (right->type != TYPE_CHAR)
- {
- return false;
- }
- return left->value.char_v == right->value.char_v;
- default:
- if (right->type != TYPE_STRING)
- {
- return false;
- }
- return strcmp(left->value.str_v, right->value.str_v) == 0;
- }
-}
-
-int variant_find(const struct variant *array, size_t len, enum type type,
- union type_any value)
-{
- size_t i;
- struct variant cmp = { type, value };
- for (i = 0; i < len && variant_equal(array + i, &cmp) == false; i++)
- {
- continue;
- }
-
- if (i == len)
- {
- return -1;
- }
- return i;
-}
-
-float variant_sum(const struct variant *array, size_t len)
-{
- if (array == NULL)
- {
- return 0;
- }
- float sum = 0;
- for (size_t i = 0; i < len; i++)
- {
- if (array[i].type == TYPE_FLOAT)
- {
- sum += array[i].value.float_v;
- }
- else if (array[i].type == TYPE_INT)
- {
- sum += array[i].value.int_v;
- }
- }
- return sum;
-}