summaryrefslogtreecommitdiffstats
path: root/loans.c
diff options
context:
space:
mode:
Diffstat (limited to 'loans.c')
-rw-r--r--loans.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/loans.c b/loans.c
new file mode 100644
index 0000000..f812aaf
--- /dev/null
+++ b/loans.c
@@ -0,0 +1,48 @@
+#include "loans.h"
+#include "stdio.h"
+
+loan loan_init(loan_type type, int n, int d, float r, float P) {
+ loan ret;
+ ret.type = type;
+
+ switch (type) {
+ case BULLET:
+ ret.c = bullet_init(n, d, r, P);
+ break;
+ case STRAIGHTLINE:
+ ret.c = sl_init(n, d, r, P);
+ break;
+ case MORTGAGE:
+ ret.c = mort_init(n, d, r, P);
+ break;
+ }
+
+ return ret;
+}
+
+float loan_update(loan l) {
+ switch (l.type) {
+ case BULLET:
+ return bullet_update(l.c);
+ case STRAIGHTLINE:
+ return sl_update(l.c);
+ case MORTGAGE:
+ return mort_update(l.c);
+ }
+ perror("Unkown Loan type supplied!");
+ exit(EXIT_FAILURE);
+}
+
+void loan_free(loan l) {
+ switch (l.type) {
+ case BULLET:
+ bullet_free(l.c);
+ break;
+ case STRAIGHTLINE:
+ sl_free(l.c);
+ break;
+ case MORTGAGE:
+ mort_free(l.c);
+ break;
+ }
+}