summaryrefslogtreecommitdiffstats
path: root/src/types.h
diff options
context:
space:
mode:
authorgramanas <anastasis.gramm2@gmail.com>2021-11-13 21:05:38 +0200
committergramanas <anastasis.gramm2@gmail.com>2021-11-14 11:07:42 +0200
commit382da0ada99a2874052f0e6ccb2c25e012d47fc9 (patch)
treea92357f558dab48f376e666594da4aa6576f4861 /src/types.h
parent2e00a24994e094efc47fce4501b134caa801ea2c (diff)
downloadfoodtools-382da0ada99a2874052f0e6ccb2c25e012d47fc9.tar.gz
foodtools-382da0ada99a2874052f0e6ccb2c25e012d47fc9.tar.bz2
foodtools-382da0ada99a2874052f0e6ccb2c25e012d47fc9.zip
Update Makefile and add list ingredients draft
Diffstat (limited to 'src/types.h')
-rw-r--r--src/types.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/types.h b/src/types.h
new file mode 100644
index 0000000..0d870cf
--- /dev/null
+++ b/src/types.h
@@ -0,0 +1,73 @@
+#ifndef __TYPES_H
+#define __TYPES_H
+
+typedef struct item_t {
+ char *name;
+ char *qty;
+} item;
+
+enum step_type {
+ PREP = 0,
+ COOK,
+ SERVE,
+};
+
+typedef struct step_t {
+ char *inst;
+ char *duration;
+ char *result;
+ enum step_type type;
+} step;
+
+typedef struct recipe_t {
+ char * filename;
+ char * path;
+ char * title;
+ int n;
+ item **i;
+ int in;
+ step **s;
+ int sn;
+ struct recipe_t **r;
+ int rn;
+} recipe;
+
+recipe * new_recipe();
+void new_subrecipe(recipe * r, recipe * src);
+void new_item(recipe * r);
+void new_step(recipe * r);
+
+void free_recipe(recipe * r);
+void free_item(item * i);
+void free_step(step * s);
+
+void pprint_items(recipe * r);
+void show(recipe * r);
+void tojson(recipe * r);
+void tohtml(recipe * r);
+void torcp(recipe * r);
+
+/* Operations */
+
+/**
+ * Copy metadata from `src` to `dst`
+ */
+void copy_metadata(recipe * dst, recipe * src);
+
+/**
+ * Copy top level items from `src` to `dst`
+ */
+void copy_items(recipe * dst, recipe * src);
+
+/**
+ * Merge all items from `src` and add them to `dst`
+ */
+void merge_items(recipe * dst, recipe * src);
+
+/**
+ * Sum all top level item qtys in `src` and add them to `dst`
+ * making sure each item name exists only once.
+ */
+void distinct_sum_items(recipe * dst, recipe * src);
+
+#endif /* __TYPES_H */