SWIG and __int64

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Matt Whelan

    SWIG and __int64

    Supposedly, recent versions of SWIG can be made to work with MS VC++'s
    non-standard integer data types. According to a recent SWIG ChangeLog
    entry:

    %apply long long { __int64 };

    should make Swig happy. But it doesn't. I get Syntax Errors on each
    line where __int64 appears.

    Am I missing something? I'm new to SWIG (but not to Python or C++).
    My searches to date have turned up no examples of successful __int64
    and SWIG interaction. If anyone could provide such an example, it
    would be deeply appreciated.

    I also need to do similar things for __int8 * and __int32, but I
    assume once I get __int64 working the solutions for those will become
    obvious.

    --
    Matt Whelan
  • Lyle Johnson

    #2
    Re: SWIG and __int64

    Matt Whelan wrote:
    [color=blue]
    > Supposedly, recent versions of SWIG can be made to work with MS VC++'s
    > non-standard integer data types. According to a recent SWIG ChangeLog
    > entry:
    >
    > %apply long long { __int64 };
    >
    > should make Swig happy. But it doesn't. I get Syntax Errors on each
    > line where __int64 appears.[/color]

    Just to clarify: are you getting errors when running SWIG (i.e. to
    generate the wrapper code) or when compiling the code that SWIG
    generated for you?

    Comment

    • Matt Whelan

      #3
      Re: SWIG and __int64

      Lyle Johnson <lyle@users.sou rceforge.net> wrote in message news:<3F3BE519. 3060802@users.s ourceforge.net> ...[color=blue]
      > Just to clarify: are you getting errors when running SWIG (i.e. to
      > generate the wrapper code) or when compiling the code that SWIG
      > generated for you?[/color]

      Yes, it's in the SWIG generation step.

      I think I've figured out the problem, but I still don't know what to
      do about it.

      All the __int?? types are specified as unsigned in my code. SWIG
      works great on default-signedness types, but it throws syntax errors
      on "unsigned __int64" and friends.

      So here's what I've got:

      ----Begin Code----
      test.i:
      %module test_wrap
      %{
      #include "test.h"
      %}

      %apply long long { __int64 }

      %include test.h

      test.h:
      #ifndef TEST_H
      #define TEST_H

      unsigned __int64 foo(); //body is {return 42;} in test.cpp

      #endif
      ----End Code----

      If I remove the unsigned qualifier, it works fine, but as it is I get
      a syntax error on line 4 of test.h.

      I've tried adding the unsigned qualifier to the %apply statment in all
      possible ways; none of them help.

      I'm beginning to suspect this is a bug in SWIG. If someone can give
      me a work around (or educate me on what I'm doing wrong), I would
      appreciate it.

      Comment

      Working...