// Vala Sample File

/*
* Multiline comment
* NOTE FIXME ALERT
*/
void main() {
print("Hello World\n");
}

// Example 1
class Sample: Object {
void greeting() {
stdout.printf("Hello World\n");
}

static void main(string[] args) {
var sample = new Sample();
sample.greeting();
}
}

// Example 2
using GLib;

interface Printable {
public abstract string print();

public virtual string pretty_print() {
return "Please " + print();
}
}

class NormalPrint: Object, Printable {
string print() {
return "don't forget about me";
}
}

class OverridePrint: Object, Printable {
string print() {
return "Mind the gap";
}

public override string pretty_print() {
return "Override";
}
}

void main(string[] args) {
var normal = new NormalPrint();
var overridden = new OverridePrint();

print(normal.pretty_print());
print(overridden.pretty_print());
}

// Example 3
using Gtk;

int main(string[] args) {
Gtk.init(ref args);

var window = new Window();
window.title = "Hello, World!";
window.border_width = 10;
window.window_position = WindowPosition.CENTER;
window.set_default_size(350, 70);
window.destroy.connect(Gtk.main_quit);

var label = new Label("Hello, World!");

window.add(label);
window.show_all();

Gtk.main();
return 0;
}