Full Property Declaration

A full property declaration looks a lot like a declaration for a class. It implicitly opens a namespace and allows for overloaded setters, member fields, helper methods, constructors/destructors etc.

property g_prop
{
    int m_x = 5; // member field with in-place initializer

    int get ()
    {
        return m_x;
    }

    set (int x)
    {
        m_x = x;
        update ();
    }

    set (double x); // overloaded setter
    update (); // helper method
}

A body of a method can be placed right away (Java-style inline body definition) or outside – maybe even in another file (C++-style out-of-line body definition).