1using GLib;
2
3[Compact]
4class CompactClass {
5	public int field;
6}
7
8[Compact]
9class CompactClassWithDestructor {
10	~CompactClassWithDestructor () {
11		stdout.printf ("~CompactClassWithDestructor\n");
12	}
13}
14
15class DerivedClass : CompactClass {
16}
17
18[Compact]
19public class PublicClass {
20	public int field;
21}
22
23[Compact]
24abstract class AbstractClass {
25	public int field;
26}
27
28[Compact]
29class ClassWithCreationMethod {
30	public ClassWithCreationMethod () {
31		stdout.printf ("ClassWithCreationMethod\n");
32	}
33
34	public int field;
35}
36
37[Compact]
38class ClassWithNamedCreationMethod {
39	public ClassWithNamedCreationMethod.named () {
40		stdout.printf ("ClassWithNamedCreationMethod\n");
41	}
42
43	public int field;
44}
45
46class SimpleGTypeInstanceClass {
47}
48
49class DerivedGTypeInstanceClass : SimpleGTypeInstanceClass {
50}
51
52public class PublicGTypeInstanceClass {
53}
54
55class GTypeInstanceClassWithCreationMethod {
56	public GTypeInstanceClassWithCreationMethod () {
57		stdout.printf ("GTypeInstanceClassWithCreationMethod\n");
58	}
59}
60
61class GTypeInstanceClassWithNamedCreationMethod {
62	public GTypeInstanceClassWithNamedCreationMethod.named () {
63		stdout.printf ("GTypeInstanceClassWithNamedCreationMethod\n");
64	}
65}
66
67class SimpleGObjectClass : Object {
68}
69
70class DerivedGObjectClass : SimpleGObjectClass {
71}
72
73public class PublicGObjectClass : Object {
74}
75
76abstract class AbstractGObjectClass : Object {
77}
78
79class GObjectClassWithCreationMethod : Object {
80	public GObjectClassWithCreationMethod () {
81	}
82}
83
84class GObjectClassWithNamedCreationMethod : Object {
85	public GObjectClassWithNamedCreationMethod.named () {
86	}
87}
88
89void main () {
90	stdout.printf ("Classes Test:\n");
91
92	stdout.printf ("new CompactClass ()\n");
93	var compact_class = new CompactClass ();
94	stdout.printf ("new DerivedClass ()\n");
95	var derived_class = new DerivedClass ();
96	stdout.printf ("new PublicClass ()\n");
97	var public_class = new PublicClass ();
98	stdout.printf ("new ClassWithCreationMethod ()\n");
99	var class_with_creation_method = new ClassWithCreationMethod ();
100	stdout.printf ("new ClassWithNamedCreationMethod ()\n");
101	var class_with_named_creation_method = new ClassWithNamedCreationMethod.named ();
102	stdout.printf ("new CompactClassWithDestructor ()\n");
103	var compact_class_with_destructor = new CompactClassWithDestructor ();
104	compact_class_with_destructor = null;
105
106	stdout.printf ("new SimpleGTypeInstanceClass ()\n");
107	var simple_gtypeinstance_class = new SimpleGTypeInstanceClass ();
108	stdout.printf ("new DerivedGTypeInstanceClass ()\n");
109	var derived_gtypeinstance_class = new DerivedGTypeInstanceClass ();
110	stdout.printf ("new PublicGTypeInstanceClass ()\n");
111	var public_gtypeinstance_class = new PublicGTypeInstanceClass ();
112	stdout.printf ("new GTypeInstanceClassWithCreationMethod ()\n");
113	var gtypeinstance_class_with_creation_method = new GTypeInstanceClassWithCreationMethod ();
114	stdout.printf ("new GTypeInstanceClassWithNamedCreationMethod ()\n");
115	var gtypeinstance_class_with_named_creation_method = new GTypeInstanceClassWithNamedCreationMethod.named ();
116
117	stdout.printf ("new SimpleGObjectClass ()\n");
118	var simple_gobject_class = new SimpleGObjectClass ();
119	stdout.printf ("new DerivedGObjectClass ()\n");
120	var derived_gobject_class = new DerivedGObjectClass ();
121	stdout.printf ("new PublicGObjectClass ()\n");
122	var public_gobject_class = new PublicGObjectClass ();
123	stdout.printf ("new GObjectClassWithCreationMethod ()\n");
124	var gobject_class_with_creation_method = new GObjectClassWithCreationMethod ();
125	stdout.printf ("new GObjectClassWithNamedCreationMethod ()\n");
126	var gobject_class_with_named_creation_method = new GObjectClassWithNamedCreationMethod.named ();
127
128	stdout.printf ("new CompactClass () { field = 1 }\n");
129	compact_class = new CompactClass () { field = 1 };
130	stdout.printf ("compact_class.field = %d\n", compact_class.field);
131
132	stdout.printf (".\n");
133}
134
135