Вместо того, чтобы говорить %ignore
с помощью установщика и получателя, назовите само поле непосредственно, например:
%module Test
%typemap(javacode) struct details_t_ %{
public String getMacAddress() {
return Test.getMacAddressAsString(this); //another API in Test.java
}
%};
// Ignore field, not get/sets
%ignore details_t_::mac;
%rename (Details) details_t_;
typedef struct details_t_ {
uint16_t code;
char *name;
sockaddr *saddr;
uint32_t saddr_len;
uint8_t flag;
ios_boolean is_child;
unsigned char mac[6];
} details_t;
Если вы хотите сделать его неизменным вместо скрытого (т. Е. Только получатель, без установщика)генерируется) вы можете написать:
%immutable details_t_::mac;
вместо %ignore
в предыдущем примере.
Если вы хотите сделать всю структуру неизменной, вы можете сделать:
// Read only, i.e. only getters
%immutable;
%rename (Details) details_t_;
typedef struct details_t_ {
uint16_t code;
char *name;
sockaddr *saddr;
uint32_t saddr_len;
uint8_t flag;
ios_boolean is_child;
unsigned char mac[6];
} details_t;
// Cancel the immutable directive
%mutable;