doc/tut/greeter0/: Initial `greeter' example.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 23 Jun 2020 09:45:16 +0000 (10:45 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 23 Jun 2020 09:45:16 +0000 (10:45 +0100)
doc/tut/greeter0/.gitignore [new file with mode: 0644]
doc/tut/greeter0/Makefile [new file with mode: 0644]
doc/tut/greeter0/greet.c [new file with mode: 0644]
doc/tut/greeter0/greeter.sod [new file with mode: 0644]

diff --git a/doc/tut/greeter0/.gitignore b/doc/tut/greeter0/.gitignore
new file mode 100644 (file)
index 0000000..af794f7
--- /dev/null
@@ -0,0 +1,3 @@
+*.o
+/greeter.[ch]
+/greet
diff --git a/doc/tut/greeter0/Makefile b/doc/tut/greeter0/Makefile
new file mode 100644 (file)
index 0000000..b872e87
--- /dev/null
@@ -0,0 +1,20 @@
+### -*-makefile-*-
+
+SOD = sod
+
+.SUFFIXES: .sod .c .h
+.sod.c:; $(SOD) -tc $<
+.sod.h:; $(SOD) -th $<
+.PRECIOUS: %.c %.h
+
+all::
+.PHONY: all
+
+clean::; rm -f *.o
+.PHONY: clean
+
+all:: greet
+greet: greeter.o greet.o
+       $(CC) -o greet $^ -lsod
+greet.o greeter.o: greeter.h
+clean::; rm -f greet greeter.c greeter.h
diff --git a/doc/tut/greeter0/greet.c b/doc/tut/greeter0/greet.c
new file mode 100644 (file)
index 0000000..b2defd2
--- /dev/null
@@ -0,0 +1,11 @@
+/* -*-c-*- */
+
+#include "greeter.h"
+
+int main(void)
+{
+  SOD_DECL(Greeter, g, NO_KWARGS);
+
+  Greeter_greet(g, stdout);
+  return (0);
+}
diff --git a/doc/tut/greeter0/greeter.sod b/doc/tut/greeter0/greeter.sod
new file mode 100644 (file)
index 0000000..c5a10d3
--- /dev/null
@@ -0,0 +1,18 @@
+/* -*-sod-*- */
+
+code c: includes {
+#include "greeter.h"
+}
+
+code h: includes {
+#include <stdio.h>
+#include <sod/sod.h>
+}
+
+typename FILE;
+
+class Greeter: SodObject {
+  void greet(FILE *fp) {
+    fputs("Hello, world!\n", fp);
+  }
+}