From 7ed81b884715d26ff30e30f8b169bf1cb50868cd Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter@cassini.intern>
Date: Thu, 14 Jan 2016 17:43:39 +0100
Subject: [PATCH] Beispielprogramme 14.1.2016

---
 20160114/objects-1.c | 28 ++++++++++++++++++++++++++++
 20160114/objects-2.c | 28 ++++++++++++++++++++++++++++
 20160114/objects-3.c | 34 ++++++++++++++++++++++++++++++++++
 20160114/objects-4.c | 34 ++++++++++++++++++++++++++++++++++
 20160114/objects-5.c | 34 ++++++++++++++++++++++++++++++++++
 20160114/objects-6.c | 34 ++++++++++++++++++++++++++++++++++
 6 files changed, 192 insertions(+)
 create mode 100644 20160114/objects-1.c
 create mode 100644 20160114/objects-2.c
 create mode 100644 20160114/objects-3.c
 create mode 100644 20160114/objects-4.c
 create mode 100644 20160114/objects-5.c
 create mode 100644 20160114/objects-6.c

diff --git a/20160114/objects-1.c b/20160114/objects-1.c
new file mode 100644
index 0000000..1a62866
--- /dev/null
+++ b/20160114/objects-1.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { &i, &s };
+
+  return 0;
+}
diff --git a/20160114/objects-2.c b/20160114/objects-2.c
new file mode 100644
index 0000000..a47cfb4
--- /dev/null
+++ b/20160114/objects-2.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { (t_base *) &i, (t_base *) &s };
+
+  return 0;
+}
diff --git a/20160114/objects-3.c b/20160114/objects-3.c
new file mode 100644
index 0000000..ff9224c
--- /dev/null
+++ b/20160114/objects-3.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { (t_base *) &i, (t_base *) &s };
+
+  for (int i = 0; i < 2; i++)
+    if (object[i]->type == 1)
+      printf ("Integer: %d\n", object[i]->content);
+    else if (object[i]->type == 2)
+      printf ("String: \"%s\"\n", object[i]->content);
+
+  return 0;
+}
diff --git a/20160114/objects-4.c b/20160114/objects-4.c
new file mode 100644
index 0000000..ef7bffe
--- /dev/null
+++ b/20160114/objects-4.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { (t_base *) &i, (t_base *) &s };
+
+  for (int i = 0; i < 2; i++)
+    if (object[i]->type == 1)
+      printf ("Integer: %d\n", (t_integer *) object[i]->content);
+    else if (object[i]->type == 2)
+      printf ("String: \"%s\"\n", (t_string *) object[i]->content);
+
+  return 0;
+}
diff --git a/20160114/objects-5.c b/20160114/objects-5.c
new file mode 100644
index 0000000..820181d
--- /dev/null
+++ b/20160114/objects-5.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { (t_base *) &i, (t_base *) &s };
+
+  for (int i = 0; i < 2; i++)
+    if (object[i]->type == 1)
+      printf ("Integer: %d\n", ((t_integer *) object[i])->content);
+    else if (object[i]->type == 2)
+      printf ("String: \"%s\"\n", ((t_string *) object[i])->content);
+
+  return 0;
+}
diff --git a/20160114/objects-6.c b/20160114/objects-6.c
new file mode 100644
index 0000000..0e77410
--- /dev/null
+++ b/20160114/objects-6.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+
+typedef struct
+{
+  int type;
+} t_base;
+
+typedef struct
+{
+  int type;
+  int content;
+} t_integer;
+
+typedef struct
+{
+  int type;
+  char *content;
+} t_string;
+
+int main (void)
+{
+  t_integer i = { 1, 42 };
+  t_string s = { 2, "Hello, world!" };
+
+  t_base *object[] = { (t_base *) &i, (t_base *) &s };
+
+  for (int i = 0; i < 2; i++)
+    if (object[i]->type == 2)
+      printf ("Integer: %d\n", ((t_integer *) object[i])->content);
+    else if (object[i]->type == 1)
+      printf ("String: \"%s\"\n", ((t_string *) object[i])->content);
+
+  return 0;
+}
-- 
GitLab