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.
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
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.
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.
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.