This page describes a proposal for property attributes created in 2007 (thus predating the Delphi syntax).
As of 2014, no released version of FPC supports attributes.
According to Sven Barth (Feb 2014):
There is a branch which already supports class attributes. Property attributes (or any other kind of attributes) are not supported yet. Also they are implemented Delphi compatible (with attributes being in front of the class instead of after it).
The rest of this page describes the older, proposed syntax, and not any current or planned implementation.
PropertyDeclaration ::= PROPERTY Identifier [PropertyInterface] [PropertySpecifiers] [Directives]
PropertySpecifiers ::= [ ... ] [ ... ] [ATTRIBUTES AttributesArray]
AttributesArray ::= '[' (AttributeDeclaration [, AttributeDeclaration]) ']'
AttributeDeclaration ::= '<string>':'<string>'
TmenuItem = class(...) ... property Detachable: Boolean read FDetachable write SetDetachable attributes ['widgetsets:qt,gtk,win32', 'implementor:Vasya Pupkin', 'creation-date:01.01.2007']; ... end;
TxxxDatabase = class(...) ... property TransactionModel: TTransactionModel read FtransactionModel write SetTransactionModel attributes ['engines:firebird,oracle,sybase-asa']; ... end;
How to store additional info
There were two suggestions about the place for the property attributes:
- RTTI. Advantage - easier access from application. Disadvantage - bigger final executable.
- PPU. Advantage - info will not be added to executable. Disadvantage - more complicated way of accessing data.
As a result of the discussion PPU storage has been selected. This happened somewhere in 2008 looking at this article's revision history.