Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Estado
subtletrue
colourGreen
titletlpp - language

O recurso de annotation foi liberado na versão 17.3.0.3 e o objetivo é possibilitar a declaração de metadados nas nossas classes, métodos e funções, isto é, as configurações deles podem ficar dentro do mesmo código fonte.

Sugere-se que a definição da annotation seja colocada em um TH (TLPP Header File) para que possa ser utilizada em vários fontes.


Informações
titleComo obter o tlpp-core.th ?
  • Para todo fonte escrito em TLPP, é recomendado incluir o arquivo "tlpp-core.th"; 
  • O processo de extração desse "th", bem como de todos os demais arquivos de cabeçalho de TLPP, pode ser feito pelo seguinte processo: TLPP - Ambiente de compilação.
Bloco de código
titleexemplo1.th
linenumberstrue
#include "tlpp-core.th"
@annotation ExemploDeAnnotation 
    property1 as char
    property2 as numeric default 1
@end

Uso da annotation em definição de classe:

Bloco de código
titleexemplo1.tlpp
linenumberstrue
#include "exemplo1.th"
@ExemploDeAnnotation(property1 = "MeuObject")
class meuObj
    public Data data1
    public method new()
EndClass

Uso da annotation em definição de método:

Bloco de código
titleexemplo2.tlpp
linenumberstrue
#include "exemplo1.th"
class meuObj
    public Data data1
	@ExemploDeAnnotation(property1 = "MetodoNew")
    public method new()
EndClass

Uso da annotation em definição de propriedade:

Bloco de código
titleexemplo3.tlpp
linenumberstrue
#include "exemplo1.th"
class meuObj
	@ExemploDeAnnotation(property1 = "PropertyData", property2 = 456)
    public Data data1
EndClass

Uso da annotation em definição de função:

Bloco de código
titleexemplo4.tlpp
linenumberstrue
#include "exemplo1.th"
@ExemploDeAnnotation(property1 = "FunctionTeste", property2 = 123)
main Function teste()
	conout("annotationTest")
Return

Novas funções disponíveis para uso juntamente com o recurso de Annotation, as funções foram disponibilizadas dentro do namespace Reflection:

...