Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 13 Próxima »

TLPP - LANGUAGE

O consumo do DynCall estabelece uma legenda própria para definição do tipo de retorno e parâmetros de uma chamada de função ou método de uma DLL.

As chamadas CallFunction, CallMethod, GetVar e SetVar (veja DynCall - Acesso às funções) necessitam de informação a respeito dos tipos C ou C++ envolvidos.
Dessa forma, ficou convencionado adotar na assinatura da chamada uma letra corresponde a cada um dos tipos envolvidos, conforme o seguinte quadro.

Importante ressaltar que essa legenda não corresponde à legenda de tipos de TLPP.
É uma legenda particular do DynCall e se relaciona aos tipos baixo nível de C/C++.

Observe que a legenda é case-sensitive. Por exemplo, há a letra "C" para char e "c" para unsigned char.


legenda

tipo C/C++

V

void

B

bool

C

char

c

unsigned char

S

short

s

unsigned short

I

int

i

unsigned int

L

long

l

unsigned long

G

long long

g

unsigned long long

F

float

D

double

P

void *

A

char *

T

size_t


A fim de exemplificar o modelo, podemos considerar duas funções em C.

Exemplo: assinatura de parâmetros (lado C/C++)
double doCalc(int x, float y);
void printData(short a, unsigned short b, float c, unsigned long long d, char *e);


Ao invocar essa função C, podemos montar da seguinte maneira a assinatura de chamada

Exemplo: assinatura de parâmetros (lado TLPP)
Local nRet, nX, nY, nW as NumericLocal cSignature, cValue as Character

//..... (um trecho oculto)

// assinatura para chamar doCalc
cSignature := "DIF"
oDll:CallFunction("doCalc", cSignature, nRet, nX, nY)


// assinatura para chamar printData
cSignature := "VSsFgA"
oDll:CallFunction("printData", cSignature, Nil, nX, nY, nZ, nW, cValue)
  • Sem rótulos