RAD Studio |  |

__declspec(property)

Category

Modifiers, Keyword extensions, Storage class specifiers

Syntax

Copy Code

    __declspec( property( get=get_func_name ) ) declarator
    __declspec( property( put=put_func_name ) ) declarator
    __declspec( property( get=get_func_name, put=put_func_name ) ) declarator

This attribute can be applied to non-static “virtual data members” in a class or structure definition. The compiler treats these “virtual data members” as data members by changing their references into function calls.

When the compiler sees a data member declared with this attribute on the right of a member-selection operator (“.” or “->“), it converts the operation to a get or put function, depending on whether such an expression is an l-value or an r-value. In more complicated contexts, such as “+=“, a rewrite is performed by doing both get and put.

This attribute can also be used in the declaration of an empty array in a class or structure definition.

Example

__declspec(property(get=GetX, put=PutX)) int x[];

The above statement indicates that x[] can be used with one or more array indices. In this case:

Copy Code

    i=p->x[a][b]

will be turned into:

Copy Code

    i=p->GetX(a, b),

and

Copy Code

    p->x[a][b] = i

will be turned into

Copy Code

    p->PutX(a, b, i);

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!