X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=wrappergen%2Fwrite_jna.c;h=1739481ba1f8b6e1cd2df8e9ca53951a2b468529;hb=2d80323e46c8417fd471853ac2894fbeeb9728e5;hp=f86da8a4322b1ac8ad77748bf7cab7320058395f;hpb=2235ffe28664cc838d8c476aae18ab79df96916b;p=cparser diff --git a/wrappergen/write_jna.c b/wrappergen/write_jna.c index f86da8a..1739481 100644 --- a/wrappergen/write_jna.c +++ b/wrappergen/write_jna.c @@ -44,8 +44,6 @@ static pset_new_t avoid_symbols; static output_limit *output_limits; static const char *libname; -static void write_type(type_t *type); - static bool is_system_header(const char *fname) { if (strncmp(fname, "/usr/include", 12) == 0) @@ -81,7 +79,7 @@ static const char *get_atomic_type_string(const atomic_type_kind_t type) case ATOMIC_TYPE_CHAR: return "byte"; case ATOMIC_TYPE_SCHAR: return "byte"; case ATOMIC_TYPE_UCHAR: return "byte"; - case ATOMIC_TYPE_SHORT: return "short"; + case ATOMIC_TYPE_SHORT: return "short"; case ATOMIC_TYPE_USHORT: return "short"; case ATOMIC_TYPE_INT: return "int"; case ATOMIC_TYPE_UINT: return "int"; @@ -224,16 +222,11 @@ static void write_type(type_t *type) case TYPE_ENUM: write_enum_type(&type->enumt); return; - case TYPE_BUILTIN: - write_type(type->builtin.real_type); - return; case TYPE_ERROR: - case TYPE_INVALID: case TYPE_TYPEOF: case TYPE_TYPEDEF: panic("invalid type found"); case TYPE_ARRAY: - case TYPE_BITFIELD: case TYPE_REFERENCE: case TYPE_FUNCTION: case TYPE_COMPLEX: @@ -277,7 +270,7 @@ static void write_unary_expression(const unary_expression_t *expression) case EXPR_UNARY_NOT: fputc('!', out); break; - case EXPR_UNARY_CAST_IMPLICIT: + case EXPR_UNARY_CAST: write_expression(expression->value); return; default: @@ -541,6 +534,8 @@ void write_jna_decls(FILE *output, const translation_unit_t *unit) const char *input_name = entity->base.source_position.input_name; if (is_system_header(input_name)) continue; + if (entity->function.elf_visibility != ELF_VISIBILITY_DEFAULT) + continue; if (output_limits != NULL) { bool in_limits = false; for (output_limit *limit = output_limits; limit != NULL;