Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6888745
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T06:03:58+00:00 2026-05-27T06:03:58+00:00

I have two C functions that I’m exposing through SWIG to my Java layer

  • 0

I have two C functions that I’m exposing through SWIG to my Java layer and both have an input param with a const void * data type (“val) that needs to be a uint8_t for the addCategory function but a char for the addAttribute function. I’m currently, in the SWIG Interface file, using the %apply to map the const void * C type to a short on the Java side. Is there a way to modify the SWIG interface file to support both a char (String) and a uint8_t (short) for the const void * input parameter?

C Functions from header file:

int
addCategory(query_t *query, type_t type, const void *val);

int
addAttribute(query_t *query, type_t type, const void *val);

SWIG Interface File:

%module Example
%include "stdint.i"
void setPhy_idx(uint32_t value);
%include "arrays_java.i"
void setId(unsigned char *value);
%{
#include "Example.h"
%}
%apply char * { unsigned char * };
%apply char * { void * };
%apply uint8_t { const void * }
%apply int32_t { int32_t * }
%include "Example.h"
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T06:03:59+00:00Added an answer on May 27, 2026 at 6:03 am

    You can’t directly do this – what type would be used in this place in Java? You need to help SWIG decide that in some way.

    You have (at least) three possible solutions:

    1. Use a type hierarchy – The base type will be what the function takes, the subclasses will get wrapped also. You could do this on the C++ side, or on the Java side using SWIG’s typemap facilities. I think this is needlessly complicated though, so I’ve not made an example here.
    2. Use overloads (or even different functions, with different names altogether – you could use %rename to make them back into overloads in Java even if they have different names in C)
    3. Use a union. This will get wrapped with set and get functions by SWIG:

      %module test
      
      union values {
        unsigned char *string;
        void *generic;
        uint8_t someOtherThing;
        uint32_t number;
      };
      
      void func(values v);
      

      This results in a Java class called values, which func() takes and can pass one of the members of the union through. Clearly you’d want to %apply appropriate typemaps for the members of the union.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Say I have two functions that expect ...rest parameters private function a(...myParams):void { trace(myParams.length);
I have two T-SQL scalar functions that both perform calculations over large sums of
I have two functions: void prepare() and void finish() that will be called sequentially
I have two functions that generate DOM elements. They both attempt to create the
Inside my view.py, I have two functions, one that processes input from a form
I have two functions : void foo(const char * p) and template<size_t T_Size> void
I have two functions that have different enough logic but pretty much the same
So I have two jquery functions that bassically do the same, but on 2
I have two functions to add and remove table rows that contain a form
I have two functions in an ActionScript class, they are: private function loaderCompleteHandler(event:Event):void {

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.