Typedef c++ em java

4 respostas
phpinheiro

Pessoal,

alguém sabe se existe um comando equivalente ao typedef do c++ em java?

Enfim, estou precisando definir nomes e tipos próprios em java.

Não quero ter que criar uma classe para cada tipo, acho que vai aumentar muito o código.

então, só pra exemplificar, como eu faria o equivalente em java para estes trechos:

typedef struct tagSystemBoardInfo{
      ULONG                    totalBoardCount;
      ULONG                    totalphysicalDsp;
      GV_BOARD_INFO     board[GV_MAX_BOARD_COUNT];
}SYSTEM_BOARD_INFO, *PSYSTEM_BOARD_INFO;
typedef enum{
      VIDEOAUTOREDUCE_MOTION = 1,
      VIDEOAUTOREDUCE_BRIGHTNESS
}VideoAutoReduceType_t;

Valeu.

4 Respostas

R

Até onde seu sei, infelizmente não há no Java nada equivalente ao typedef do C/C++. Talvez a biblioteca (paga) abaixo possa lhe ajudar nisso:

http://www.excelsior-usa.com/xfunction.html

T

Crie uma classe para cada typedef struct e um enum para cada typedef enum. Você não tem como escapar disso.

Se as classes vão ser usadas somente dentro de um determinado pacote, não há necessidade de torná-las públicas, e você pode então deixá-las todas dentro do mesmo arquivo .java. Você só precisa separar as classes se a classe for declarada public; nesse caso, você tem de criar um arquivo .java para cada classe public.

phpinheiro

Inicialmente eu pensei nisso mesmo thingol…

Até dei uma olhada em um topico da ibm falando disso(http://www.ibm.com/developerworks/library/j-jtp02216.html), mas parece que é meio bugado.

O que preciso fazer é acessar uma dll via jna. Tenho um arquivo .h de exemplo, e estes typedef estao todos neste .h, junto com as definições dos métodos da dll.

Acho que vou acabar fazendo uma classe public pra cada struct, e uma classe com todos os enums. Assim acho que fica mais fácil pra manutenção.

Se alguém tiver mais alguma idéia, será bem vinda.

Aldrin_Leal

Bem, o lance do JNA envolve justamente isso: Mapear typedefs em classes.

Uma dica: Alinhamento de bytes e certas estruturas complicam um pouco a vida. Faça o seguinte: Crie um programa bobo que faça estes includes e imprima o tamanho destes typedefs através de sizeof.

void main(void) {

printf(“Estrutura #1:\n”, sizeof(xxx));

}

Isso é um começo - O fato de uma estrutura possuir, digamos, um campo char (em C, 8 bits) e outro int (32-bits) não implica que ele possua 5 bytes. Na verdade, o compilador tende a alinhar para otimizar o acesso (endereços múltiplos de 4 são mais rápidos) farão com que ele possua oito bytes.

É apenas uma idéia, é claro.

Criado 13 de maio de 2009
Ultima resposta 13 de mai. de 2009
Respostas 4
Participantes 4