summaryrefslogtreecommitdiff
path: root/Modules/modules.b
diff options
context:
space:
mode:
authorseh <henesy.dev@gmail.com>2019-03-18 03:44:58 -0500
committerseh <henesy.dev@gmail.com>2019-03-18 03:44:58 -0500
commitbe5690bf05707107bc6f02005af82399b0c1c655 (patch)
treec1bf423876c63ada9ff4dc5091720bc58d3afa98 /Modules/modules.b
parent1dbebd5fe59f27106a4dfa553c9ee8b893d6008e (diff)
add work on modules example
Diffstat (limited to 'Modules/modules.b')
-rw-r--r--Modules/modules.b48
1 files changed, 48 insertions, 0 deletions
diff --git a/Modules/modules.b b/Modules/modules.b
new file mode 100644
index 0000000..6dbeb85
--- /dev/null
+++ b/Modules/modules.b
@@ -0,0 +1,48 @@
+implement Modules;
+
+include "sys.m";
+include "draw.m";
+
+# Note the lack of `include "persons.m";`
+include "towns.m";
+
+sys: Sys;
+print: import sys;
+
+persons: Persons;
+Person: import persons;
+
+towns: Towns;
+Town: import towns;
+
+Modules: module {
+ init: fn(nil: ref Draw->Context, nil: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string) {
+ sys = load Sys Sys->PATH;
+
+ persons = load Persons "./persons.dis";
+ towns = load Towns "./towns.dis";
+
+ persons->init();
+ towns->init();
+
+ print("%d\n", persons->getpop());
+ print("%d\n", towns->persons->getpop());
+
+ p := persons->mkperson();
+ p.name = "Spike";
+ p.age = 27;
+
+ print("%d\n", persons->getpop());
+ print("%d\n", towns->persons->getpop());
+
+ t := towns->mktown();
+ t.pop = array[] of {p, ref Person(13, "Ed")};
+ t.name = "Mars";
+
+ print("%s\n", t.stringify());
+
+ exit;
+}