You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(11) |
Nov
(184) |
Dec
(182) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(224) |
Feb
(404) |
Mar
(244) |
Apr
(232) |
May
(162) |
Jun
(193) |
Jul
(174) |
Aug
(161) |
Sep
(170) |
Oct
(283) |
Nov
(310) |
Dec
(130) |
2007 |
Jan
(210) |
Feb
(129) |
Mar
(174) |
Apr
(246) |
May
(269) |
Jun
(212) |
Jul
(229) |
Aug
(202) |
Sep
(190) |
Oct
(194) |
Nov
(172) |
Dec
(128) |
2008 |
Jan
(343) |
Feb
(137) |
Mar
(186) |
Apr
(266) |
May
(156) |
Jun
(147) |
Jul
(140) |
Aug
(78) |
Sep
(128) |
Oct
(126) |
Nov
(100) |
Dec
(106) |
2009 |
Jan
(152) |
Feb
(165) |
Mar
(209) |
Apr
(166) |
May
(97) |
Jun
(152) |
Jul
(159) |
Aug
(196) |
Sep
(151) |
Oct
(107) |
Nov
(128) |
Dec
(64) |
2010 |
Jan
(105) |
Feb
(77) |
Mar
(129) |
Apr
(151) |
May
(126) |
Jun
(97) |
Jul
(86) |
Aug
(99) |
Sep
(64) |
Oct
(88) |
Nov
(59) |
Dec
(91) |
2011 |
Jan
(159) |
Feb
(111) |
Mar
(153) |
Apr
(114) |
May
(88) |
Jun
(201) |
Jul
(158) |
Aug
(124) |
Sep
(101) |
Oct
(149) |
Nov
(160) |
Dec
(68) |
2012 |
Jan
(74) |
Feb
(68) |
Mar
(121) |
Apr
(92) |
May
(172) |
Jun
(100) |
Jul
(85) |
Aug
(65) |
Sep
(74) |
Oct
(105) |
Nov
(76) |
Dec
(21) |
2013 |
Jan
(101) |
Feb
(57) |
Mar
(76) |
Apr
(35) |
May
(43) |
Jun
(50) |
Jul
(32) |
Aug
(50) |
Sep
(33) |
Oct
(58) |
Nov
(26) |
Dec
(49) |
2014 |
Jan
(46) |
Feb
(49) |
Mar
(54) |
Apr
(33) |
May
(46) |
Jun
(57) |
Jul
(34) |
Aug
(36) |
Sep
(69) |
Oct
(37) |
Nov
(27) |
Dec
(57) |
2015 |
Jan
(25) |
Feb
(52) |
Mar
(97) |
Apr
(41) |
May
(44) |
Jun
(36) |
Jul
(27) |
Aug
(33) |
Sep
(29) |
Oct
(45) |
Nov
(23) |
Dec
(23) |
2016 |
Jan
(6) |
Feb
(31) |
Mar
(17) |
Apr
(41) |
May
(31) |
Jun
(51) |
Jul
(20) |
Aug
(36) |
Sep
(69) |
Oct
(55) |
Nov
(29) |
Dec
(17) |
2017 |
Jan
(25) |
Feb
(22) |
Mar
(29) |
Apr
(18) |
May
(30) |
Jun
(13) |
Jul
(22) |
Aug
(12) |
Sep
(20) |
Oct
(60) |
Nov
(36) |
Dec
(20) |
2018 |
Jan
(16) |
Feb
(12) |
Mar
(25) |
Apr
(15) |
May
(32) |
Jun
(28) |
Jul
(8) |
Aug
(20) |
Sep
(6) |
Oct
(40) |
Nov
(18) |
Dec
(56) |
2019 |
Jan
(21) |
Feb
(9) |
Mar
(30) |
Apr
(44) |
May
(18) |
Jun
(17) |
Jul
(12) |
Aug
(14) |
Sep
(17) |
Oct
(12) |
Nov
(19) |
Dec
(13) |
2020 |
Jan
(6) |
Feb
(22) |
Mar
(6) |
Apr
(7) |
May
(3) |
Jun
(32) |
Jul
(35) |
Aug
(11) |
Sep
(22) |
Oct
(9) |
Nov
(9) |
Dec
(14) |
2021 |
Jan
(21) |
Feb
(1) |
Mar
(8) |
Apr
(6) |
May
(2) |
Jun
(11) |
Jul
(5) |
Aug
|
Sep
(15) |
Oct
(18) |
Nov
(3) |
Dec
(18) |
2022 |
Jan
(3) |
Feb
(3) |
Mar
(2) |
Apr
(8) |
May
(5) |
Jun
(6) |
Jul
(7) |
Aug
(5) |
Sep
(12) |
Oct
(9) |
Nov
(4) |
Dec
(3) |
2023 |
Jan
(2) |
Feb
(2) |
Mar
(5) |
Apr
(9) |
May
(8) |
Jun
(10) |
Jul
(1) |
Aug
(5) |
Sep
(1) |
Oct
(2) |
Nov
(6) |
Dec
(2) |
2024 |
Jan
(6) |
Feb
(6) |
Mar
(10) |
Apr
(6) |
May
(10) |
Jun
(8) |
Jul
|
Aug
(6) |
Sep
(4) |
Oct
|
Nov
|
Dec
|
From: Jim <guy...@12...> - 2024-09-13 07:24:00
|
Hi, You can try like this: File.i %include "carrays.i" %array_class(PointAsC,PointAsCArray); C# Code: EntryPoint entryPoint = new EntryPoint(); int count = 10; PointAsCArray array = new PointAsCArray(count); for (int i = 0; i < count; i++) { array.setitem(i, new PointAsC()); } entryPoint.generate_pointer_array(array.cast(), count); Console.WriteLine(array.getitem(0).getX()); Console.WriteLine(array.getitem(1).getX()); Console.WriteLine(array.getitem(2).getX()); Console.WriteLine(array.getitem(3).getX()); Here is result: Values are: 0 Values are: 0.1 Values are: 0.2 Values are: 0.3 Values are: 0.4 Values are: 0.5 Values are: 0.6 Values are: 0.7 Values are: 0.8 Values are: 0.9 0 0.1 0.2 0.30000000000000004 At 2024-09-11 15:31:02, "Kamigaku" <kam...@gm...> wrote: Hi everyone, I've been struggling on an issue for the couple of days and my last hope is here on this mailing list. I'm currently trying to do something rather simp'e which consists in creating a simple class in cpp and in C# create an array of this class for it to be passed in cpp, updated in cpp and resent updated to the C#. So cpp defines the model, C# instantiate it. But I'm struggling on the return update as it appears that my values are updated inside the cpp function but once returned to the C#, they have their default values as defined in C#. Any idea what I'm doing wrong? The C# documentation specify that an arguments with an %apply of type OUTPUT "if the parameter is marked as being output, the contents of the reserved buffer are copied back into the managed array after the call returns". Below, you will find my source code: Entrypoint.h #include <iostream> using namespace std; #include "PointAsC.h" class EntryPoint { public: // Constructeurs EntryPoint(); }; Entrypoint.cpp #include "entrypoint.h" using namespace std; EntryPoint::EntryPoint() {} PointAsC.h #ifndef POINT_H #define POINT_H #include <iostream> using namespace std; class PointAsC { public: PointAsC(); PointAsC(double x, double y); void setX(double x); void setY(double y); double getX() const; double getY() const; private: double x, y; }; #endif PointAsC.cpp #include "PointAsC.h" #include <cmath> #include <iostream> using namespace std; PointAsC::PointAsC() : x(0), y(0) {} PointAsC::PointAsC(double x, double y) : x(x), y(y) {} void PointAsC::setX(double x) { this->x = x; } void PointAsC::setY(double y) { this->y = y; } double PointAsC::getX() const { return this->x; } double PointAsC::getY() const { return this->y; } File .i /* File : example.i */ %module dwdbms %include typemaps.i %include arrays_csharp.i %{ #include "PointAsC.h" #include "entrypoint.h" %} %include <PointAsC.h> %typemap(ctype) PointAsC* "PointAsC*" %typemap(cstype) PointAsC* "PointAsC[]" %typemap(imtype) PointAsC* "PointAsC[]" %typemap(csin) PointAsC* "$csinput" %typemap(in) PointAsC* "$1 = $input;" %typemap(freearg) PointAsC* "" %typemap(argout) PointAsC* "" %apply PointAsC INOUT[] {PointAsC* pointsArray} %include <entrypoint.h> %extend EntryPoint { void generate_pointer_array(PointAsC* pointsArray, int amount) { for(int i = 0; i < amount; i++) { pointsArray[i].setX(0.1 * i); std::cout << "Values are: " << pointsArray[i].getX() << std::endl; } } } My C# code using System; namespace TestStandardLibrary { class RunSwig { public static void Main() { EntryPoint entryPoint = new EntryPoint(); PointAsC[] pointAsC = new PointAsC[10]; for (int i = 0; i < pointAsC.Length; i++) { pointAsC[i] = new PointAsC(); } entryPoint.generate_pointer_array(pointAsC, pointAsC.Length); Console.WriteLine(pointAsC[0].getX()); Console.WriteLine(pointAsC[1].getX()); Console.WriteLine(pointAsC[2].getX()); Console.WriteLine(pointAsC[3].getX()); } } } |
From: Kamigaku <kam...@gm...> - 2024-09-11 07:31:27
|
Hi everyone, I've been struggling on an issue for the couple of days and my last hope is here on this mailing list. I'm currently trying to do something rather simp'e which consists in creating a simple class in cpp and in C# create an array of this class for it to be passed in cpp, updated in cpp and resent updated to the C#. So cpp defines the model, C# instantiate it. But I'm struggling on the return update as it appears that my values are updated inside the cpp function but once returned to the C#, they have their default values as defined in C#. Any idea what I'm doing wrong? The C# documentation specify that an arguments with an %apply of type OUTPUT "if the parameter is marked as being output, the contents of the reserved buffer are copied back into the managed array after the call returns". Below, you will find my source code: *Entrypoint.h* #include <iostream> using namespace std; #include "PointAsC.h" class EntryPoint { public: // Constructeurs EntryPoint(); }; *Entrypoint.cpp* #include "entrypoint.h" using namespace std; EntryPoint::EntryPoint() {} *PointAsC.h* #ifndef POINT_H #define POINT_H #include <iostream> using namespace std; class PointAsC { public: PointAsC(); PointAsC(double x, double y); void setX(double x); void setY(double y); double getX() const; double getY() const; private: double x, y; }; #endif *PointAsC.cpp* #include "PointAsC.h" #include <cmath> #include <iostream> using namespace std; PointAsC::PointAsC() : x(0), y(0) {} PointAsC::PointAsC(double x, double y) : x(x), y(y) {} void PointAsC::setX(double x) { this->x = x; } void PointAsC::setY(double y) { this->y = y; } double PointAsC::getX() const { return this->x; } double PointAsC::getY() const { return this->y; } *File .i* /* File : example.i */ %module dwdbms %include typemaps.i %include arrays_csharp.i %{ #include "PointAsC.h" #include "entrypoint.h" %} %include <PointAsC.h> %typemap(ctype) PointAsC* "PointAsC*" %typemap(cstype) PointAsC* "PointAsC[]" %typemap(imtype) PointAsC* "PointAsC[]" %typemap(csin) PointAsC* "$csinput" %typemap(in) PointAsC* "$1 = $input;" %typemap(freearg) PointAsC* "" %typemap(argout) PointAsC* "" %apply PointAsC INOUT[] {PointAsC* pointsArray} %include <entrypoint.h> %extend EntryPoint { void generate_pointer_array(PointAsC* pointsArray, int amount) { for(int i = 0; i < amount; i++) { pointsArray[i].setX(0.1 * i); std::cout << "Values are: " << pointsArray[i].getX() << std::endl; } } } *My C# code* using System; namespace TestStandardLibrary { class RunSwig { public static void Main() { EntryPoint entryPoint = new EntryPoint(); PointAsC[] pointAsC = new PointAsC[10]; for (int i = 0; i < pointAsC.Length; i++) { pointAsC[i] = new PointAsC(); } entryPoint.generate_pointer_array(pointAsC, pointAsC.Length); Console.WriteLine(pointAsC[0].getX()); Console.WriteLine(pointAsC[1].getX()); Console.WriteLine(pointAsC[2].getX()); Console.WriteLine(pointAsC[3].getX()); } } } |
From: William S F. <ws...@fu...> - 2024-09-02 23:33:05
|
On Fri, 16 Aug 2024 at 18:42, Len Cumbow <le...@po...> wrote: > Hi, > > Brand new to Swig. I inherited some Swig code that is part of the build of > SnoPy, and I have no idea what I am doing. I just want to get SnoPy working > with Python. SnoPy privides Snobol parsing capabilities to Python. > > SnoPy can be found here: https://sourceforge.net/projects/snopy/ and > here: https://snopy.sourceforge.net/ > > It was written by Don Rozenberg decades ago. I contacted him and he > graciously declined to be involved with the project any longer. He's 88 and > has more pressing concerns. > > That leaves me on my own. Any maybe with the help of some kind strangers. > > I've attached snobol.i > > The errors I get are as follows, and despite some crude efforts to fix > things, I am stuck. Any help would be appreciated. > > swig -python snobol.i > > snobol.i:3: Error: %typemap attribute 'out' is missing its value. If this > is specifying the target language, that's no longer supported: use #ifdef > SWIG<LANG> instead. > snobol.i:74: Error: Obsolete typemap feature ($source/$target). > snobol.i:74: Error: The use of $source and $target in a typemap > declaration is no longer supported. > > For typemaps related to argument input (in,ignore,default,arginit,check), > replace $source by $input and $target by $1. > > For typemaps related to return values (out,argout,ret,except), replace > $source by $1 and $target by $result. See the file > Doc/Manual/Typemaps.html for complete details. > The solution is as described in the two sentences above! Just grep for $source and $target in your code base to find the places to update. William |
From: William S F. <ws...@fu...> - 2024-09-02 22:40:24
|
On Sat, 31 Aug 2024 at 07:13, Rokas Kupstys via Swig-user < swi...@li...> wrote: > Hi, > > Does anyone know how to have SWIG automatically discard overloads of > compatible types? For example, we get this behavior for "const char*" > and "std::string", where functions differing only with these types of > corresponding parameters are treated as same. std_string.i has > "%typemap(typecheck) string = char *;" which i thought is responsible > for discarding overloads. I added typemaps for string_view, but > "%typemap(typecheck) std::string_view = char *;" does not work. I also > am dealing with two STL libraries - standard one and EASTL, so i need to > treat types from both libraries as equal as well. All these types should > be considered as strings: std::string, std::string_view, eastl::string, > eastl::string_view, const char* (and corresponding const-ref variants, > omitted for brevity). I know i can ignore those functions, but this > would be very tedious, i would rather use a built in mechanism to > discard these overloads. Please advice. > The typecheck typemaps should work as you expect. Maybe you've done something unexpected like not declaring the typemaps before the types are parsed or there is a namespace issue. Try the -debug-tmsearch option, eg you should see something like this for simple usage: %include <std_string.i> %inline %{ void abc(const std::string& s) {} void abc(const char* s) {} %} example.i:6: Searching for a suitable 'typecheck' typemap for: std::string const &s Looking for: std::string const &s Looking for: std::string const & Using: %typemap(typecheck) std::string const & = char * and the automated ignore you want with a warning (this is the C# output, I'm not sure what language(s) you are using)... example.i:7: Warning 516: Overloaded method abc(char const *) ignored, example.i:6: Warning 516: using abc(std::string const &) instead. William |
From: Rokas K. <ro...@zo...> - 2024-08-31 06:12:37
|
Hi, Does anyone know how to have SWIG automatically discard overloads of compatible types? For example, we get this behavior for "const char*" and "std::string", where functions differing only with these types of corresponding parameters are treated as same. std_string.i has "%typemap(typecheck) string = char *;" which i thought is responsible for discarding overloads. I added typemaps for string_view, but "%typemap(typecheck) std::string_view = char *;" does not work. I also am dealing with two STL libraries - standard one and EASTL, so i need to treat types from both libraries as equal as well. All these types should be considered as strings: std::string, std::string_view, eastl::string, eastl::string_view, const char* (and corresponding const-ref variants, omitted for brevity). I know i can ignore those functions, but this would be very tedious, i would rather use a built in mechanism to discard these overloads. Please advice. Thanks -- -- Rokas Kupstys |
From: Dima K. <sw...@di...> - 2024-08-26 00:40:53
|
Hi. Thanks for replying. Rokas Kupstys via Swig-user <swi...@li...> writes: > In case of python, output parameters are returned by function itself. > If your f function had a void return type then wrapped function would > return modified string s. If return type was say int, then function > would return a tuple (result_int, output_s). See > https://www.swig.org/Doc4.2/Python.html#Python_nn46 These functions work to allow a python program to call a swig-wrapped function. But as far as I can tell, they do NOT work to allow a Python director overload to provide its own flavor of the virtual function. The documentation of the various functions in https://www.swig.org/Doc4.2/Library.html#Library_nn12 makes that clear; it says: It is important to emphasize that this function does not mutate the string value passed---instead it makes a copy of the input value, mutates it, and returns it as a result. I think I need to %extend or %rename something to change the director-generated wrapping function to be able to write into the char* buffer. I'm attaching a trivial example. This can be built on my Debian box with swig \ -c++ \ -python \ -o Tst_wrap.cpp \ Tst.i && \ g++ \ -shared \ -fPIC \ -o _Tst.cpython-312-x86_64-linux-gnu.so Tst_wrap.cpp Tst.cc \ -I/usr/include/python3.12 \ -I. && \ python3 tst.py This has a class Tst with two virtual functions: f0() and f1(). And a non-virtual function g() that calls f0() and f1(). The non-derived implementation of f0() and f1() modify the memory pointed to by its argument. The sample program tst.py calls Tst::g() to show that indeed f0() and f1() do modify the input memory. And the sample program tst.py ALSO creates a derived class Tst2 using a swig director. It provides its own implentations of f0() and f1(), but those cannot modify the input memory, without some extra swig stuff that I cannot figure out. Help appreciated. Thanks |
From: Rokas K. <ro...@zo...> - 2024-08-25 07:11:56
|
Hi Dima, In case of python, output parameters are returned by function itself. If your f function had a void return type then wrapped function would return modified string s. If return type was say int, then function would return a tuple (result_int, output_s). See https://www.swig.org/Doc4.2/Python.html#Python_nn46 -- Rokas Kupstys On 2024-08-25 04:51, Dima Kogan wrote: > Hi. > > I'm trying to extend a generated director function for a virtual > override, and having trouble. Can somebody please help, or suggest a > different way to do this? > > I'm trying to swig-wrap a C++ class to Python. I have this: > > class C > { > ... > virtual f(char* s); > }; > > f() uses the argument s to provide output: the C++ caller of C::f() > passes in a buffer, and reads what C::f() wrote there. I want to use > swig directors to provide a custom Python implemention of f(). > > But Python strings are immutable, so the normal director implementation > doesn't work, since it uses a Python string to represent s. > > A custom implementation is thus needed to workaround this immutability: > by using a bytearray instead of str; or maybe having the Python function > return the new string, and the custom code copying it into s[]. In any > case, I need some custom code in SwigDirector_C::f(), and I don't know > how to specify that. > > Thanks. > > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user |
From: Dima K. <sw...@di...> - 2024-08-25 02:06:27
|
Hi. I'm trying to extend a generated director function for a virtual override, and having trouble. Can somebody please help, or suggest a different way to do this? I'm trying to swig-wrap a C++ class to Python. I have this: class C { ... virtual f(char* s); }; f() uses the argument s to provide output: the C++ caller of C::f() passes in a buffer, and reads what C::f() wrote there. I want to use swig directors to provide a custom Python implemention of f(). But Python strings are immutable, so the normal director implementation doesn't work, since it uses a Python string to represent s. A custom implementation is thus needed to workaround this immutability: by using a bytearray instead of str; or maybe having the Python function return the new string, and the custom code copying it into s[]. In any case, I need some custom code in SwigDirector_C::f(), and I don't know how to specify that. Thanks. |
From: Len C. <le...@po...> - 2024-08-16 17:42:39
|
Hi, Brand new to Swig. I inherited some Swig code that is part of the build of SnoPy, and I have no idea what I am doing. I just want to get SnoPy working with Python. SnoPy privides Snobol parsing capabilities to Python. SnoPy can be found here: https://sourceforge.net/projects/snopy/ and here: https://snopy.sourceforge.net/ It was written by Don Rozenberg decades ago. I contacted him and he graciously declined to be involved with the project any longer. He's 88 and has more pressing concerns. That leaves me on my own. Any maybe with the help of some kind strangers. I've attached snobol.i The errors I get are as follows, and despite some crude efforts to fix things, I am stuck. Any help would be appreciated. swig -python snobol.i snobol.i:3: Error: %typemap attribute 'out' is missing its value. If this is specifying the target language, that's no longer supported: use #ifdef SWIG<LANG> instead. snobol.i:74: Error: Obsolete typemap feature ($source/$target). snobol.i:74: Error: The use of $source and $target in a typemap declaration is no longer supported. For typemaps related to argument input (in,ignore,default,arginit,check), replace $source by $input and $target by $1. For typemaps related to return values (out,argout,ret,except), replace $source by $1 and $target by $result. See the file Doc/Manual/Typemaps.html for complete details. make: *** [makefile:19: snobol_wrap.o] Error 1 |
From: William S F. <ws...@fu...> - 2024-08-09 18:56:50
|
I've added support for the constantsmodifiers pragma for changing the visibility from public to default. See the commit https://github.com/swig/swig/commit/51b281eff092b074b3780d056444a9dc4f8b82b2 which has details and examples. This will go into swig-4.3.0. William On Tue, 25 Jun 2024 at 07:09, lille stor <lil...@gm...> wrote: > Hi William, > > Thanks for the info! > > I'm a bit confused now... I though that the sole purpose of typemap > "javainterfacemodifiers" was to actually change, e.g., the visibility of > the generated Java interface class. See this commit: > https://github.com/swig/swig/commit/c1b004f4fa62b1b15e047fd9462ddf3b46e55357 > <https://deref-gmx.com/mail/client/gVi7LFeAy8M/dereferrer/?redirectUrl=https%3A%2F%2Fgithub.com%2Fswig%2Fswig%2Fcommit%2Fc1b004f4fa62b1b15e047fd9462ddf3b46e55357>. > Also, when looking at this line > https://github.com/swig/swig/blob/ce2bb71a486bd575afb3c19ef98aae5f5e147905/Source/Modules/java.cxx#L2098 > <https://deref-gmx.com/mail/client/8i3vhEUjpo0/dereferrer/?redirectUrl=https%3A%2F%2Fgithub.com%2Fswig%2Fswig%2Fblob%2Fce2bb71a486bd575afb3c19ef98aae5f5e147905%2FSource%2FModules%2Fjava.cxx%23L2098> > (in java.cxx), it seems to indicate that. > > Not sure how to proceed from here... thanks for the clarification! > > > > *Sent:* Friday, June 21, 2024 at 4:05 PM > *From:* "William S Fulton" <ws...@fu...> > *To:* "lille stor" <lil...@gm...> > *Cc:* swi...@li... > *Subject:* Re: [Swig-user] Make SWIG generated Java interface file not > visible outside package > > This is not possible as it is hard coded to 'public'. We could add in some > pragmas similar to the Java module class pragmas > https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas to provide > this flexibility. I suggest adding in a Github issue for this. > > William > > On Thu, 20 Jun 2024 at 10:21, lille stor via Swig-user < > swi...@li...> wrote: > >> I am using SWIG (version 4.2.1) to generate a Java wrapper for some C >> code. This C code has some constants that SWIG represents with the Java >> interface file below. As it stands, this interface can be accessed by >> classes outside the "abc" package because it is declared as "public". >> >> /* >> ---------------------------------------------------------------------------- >> * This file was automatically generated by SWIG ( >> http://www.swig.org). >> * Version 4.2.1 >> * >> * Do not make changes to this file unless you know what you are >> doing--modify >> * the SWIG interface file instead. >> * >> ----------------------------------------------------------------------------- >> */ >> package abc; >> public interface TestConstants { >> public final static int YES = TestJNI.YES_get(); >> public final static int NO = TestJNI.NO_get(); >> public final static int ENABLED = TestJNI.ENABLED_get(); >> public final static int DISABLED = TestJNI.DISABLED_get(); >> } >> >> >> How can I make this interface visible only to classes within the same >> package (i.e., change "public interface TestConstants" to just "interface >> TestConstants")? I have tried: >> >> %typemap(javainterfacemodifiers) SWIGTYPE "interface" >> >> ... but it did not work. How can I achieve this using SWIG? >> >> _______________________________________________ >> Swig-user mailing list >> Swi...@li... >> https://lists.sourceforge.net/lists/listinfo/swig-user > > |
From: lille s. <lil...@gm...> - 2024-06-25 06:12:29
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hi William,<br/> <br/> Thanks for the info!<br/> <br/> I'm a bit confused now... I though that the sole purpose of typemap "javainterfacemodifiers" was to actually change, e.g., the visibility of the generated Java interface class. See this commit: <a href="https://deref-gmx.com/mail/client/NJMEeIruE9s/dereferrer/?redirectUrl=https%3A%2F%2Fderef-gmx.com%2Fmail%2Fclient%2FgVi7LFeAy8M%2Fdereferrer%2F%3FredirectUrl%3Dhttps%253A%252F%252Fgithub.com%252Fswig%252Fswig%252Fcommit%252Fc1b004f4fa62b1b15e047fd9462ddf3b46e55357" target="_blank">https://github.com/swig/swig/commit/c1b004f4fa62b1b15e047fd9462ddf3b46e55357</a>. Also, when looking at this line <a href="https://deref-gmx.com/mail/client/jzT5bUsR9CM/dereferrer/?redirectUrl=https%3A%2F%2Fderef-gmx.com%2Fmail%2Fclient%2F8i3vhEUjpo0%2Fdereferrer%2F%3FredirectUrl%3Dhttps%253A%252F%252Fgithub.com%252Fswig%252Fswig%252Fblob%252Fce2bb71a486bd575afb3c19ef98aae5f5e147905%252FSource%252FModules%252Fjava.cxx%2523L2098" target="_blank">https://github.com/swig/swig/blob/ce2bb71a486bd575afb3c19ef98aae5f5e147905/Source/Modules/java.cxx#L2098 </a>(in java.cxx), it seems to indicate that.<br/> <br/> Not sure how to proceed from here... thanks for the clarification!</div> <div> <div> <div> </div> <div> </div> <div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"> <div style="margin:0 0 10px 0;"><b>Sent:</b> Friday, June 21, 2024 at 4:05 PM<br/> <b>From:</b> "William S Fulton" <ws...@fu...><br/> <b>To:</b> "lille stor" <lil...@gm...><br/> <b>Cc:</b> swi...@li...<br/> <b>Subject:</b> Re: [Swig-user] Make SWIG generated Java interface file not visible outside package</div> <div name="quoted-content"> <div> <div> </div> <div>This is not possible as it is hard coded to 'public'. We could add in some pragmas similar to the Java module class pragmas <a href="https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas" target="_blank">https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas</a> to provide this flexibility. I suggest adding in a Github issue for this.</div> <div> </div> <div>William</div> </div> <div class="gmail_quote"> <div class="gmail_attr">On Thu, 20 Jun 2024 at 10:21, lille stor via Swig-user <<a href="mailto:swi...@li..." onclick="" target="_blank">swi...@li...</a>> wrote:</div> <blockquote class="gmail_quote" style="margin: 0.0px 0.0px 0.0px 0.8ex;border-left: 1.0px solid rgb(204,204,204);padding-left: 1.0ex;"> <div> <div style="font-family: Verdana;font-size: 12.0px;"> <div>I am using SWIG (version 4.2.1) to generate a Java wrapper for some C code. This C code has some constants that SWIG represents with the Java interface file below. As it stands, this interface can be accessed by classes outside the "abc" package because it is declared as "public".</div> <div> </div> <div> <div> /* ----------------------------------------------------------------------------<br/> * This file was automatically generated by SWIG (<a href="http://www.swig.org" target="_blank">http://www.swig.org</a>).<br/> * Version 4.2.1<br/> *<br/> * Do not make changes to this file unless you know what you are doing--modify<br/> * the SWIG interface file instead.<br/> * ----------------------------------------------------------------------------- */</div> <div> package abc;</div> <div> public interface TestConstants {<br/> public final static int YES = TestJNI.YES_get();<br/> public final static int NO = TestJNI.NO_get();<br/> public final static int ENABLED = TestJNI.ENABLED_get();<br/> public final static int DISABLED = TestJNI.DISABLED_get();<br/> }</div> <div> </div> </div> <div> </div> <div>How can I make this interface visible only to classes within the same package (i.e., change "public interface TestConstants" to just "interface TestConstants")? I have tried:</div> <div> </div> <div> %typemap(javainterfacemodifiers) SWIGTYPE "interface"</div> <div> </div> <div>... but it did not work. How can I achieve this using SWIG?</div> <div> </div> </div> </div> _______________________________________________<br/> Swig-user mailing list<br/> <a href="mailto:Swi...@li..." onclick="" target="_blank">Swi...@li...</a><br/> <a href="https://lists.sourceforge.net/lists/listinfo/swig-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/swig-user</a></blockquote> </div> </div> </div> </div> </div></div></body></html> |
From: lille s. <lil...@gm...> - 2024-06-25 06:10:12
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div> <div>Hi William,<br/> <br/> Thanks for the info!<br/> <br/> I'm a bit confused now... I though that the sole purpose of typemap "javainterfacemodifiers" was to actually change, e.g., the visibility of the generated Java interface class. See this commit: <a href="https://deref-gmx.com/mail/client/gVi7LFeAy8M/dereferrer/?redirectUrl=https%3A%2F%2Fgithub.com%2Fswig%2Fswig%2Fcommit%2Fc1b004f4fa62b1b15e047fd9462ddf3b46e55357" target="_blank">https://github.com/swig/swig/commit/c1b004f4fa62b1b15e047fd9462ddf3b46e55357</a>. Also, when looking at this line <a href="https://deref-gmx.com/mail/client/8i3vhEUjpo0/dereferrer/?redirectUrl=https%3A%2F%2Fgithub.com%2Fswig%2Fswig%2Fblob%2Fce2bb71a486bd575afb3c19ef98aae5f5e147905%2FSource%2FModules%2Fjava.cxx%23L2098" target="_blank">https://github.com/swig/swig/blob/ce2bb71a486bd575afb3c19ef98aae5f5e147905/Source/Modules/java.cxx#L2098</a> (in java.cxx), it seems to indicate that.<br/> <br/> Not sure how to proceed from here... thanks for the clarification!</div> <div> </div> <div> </div> <div> <div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"> <div style="margin:0 0 10px 0;"><b>Sent:</b> Friday, June 21, 2024 at 4:05 PM<br/> <b>From:</b> "William S Fulton" <ws...@fu...><br/> <b>To:</b> "lille stor" <lil...@gm...><br/> <b>Cc:</b> swi...@li...<br/> <b>Subject:</b> Re: [Swig-user] Make SWIG generated Java interface file not visible outside package</div> <div name="quoted-content"> <div> <div> </div> <div>This is not possible as it is hard coded to 'public'. We could add in some pragmas similar to the Java module class pragmas <a href="https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas" target="_blank">https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas</a> to provide this flexibility. I suggest adding in a Github issue for this.</div> <div> </div> <div>William</div> </div> <div class="gmail_quote"> <div class="gmail_attr">On Thu, 20 Jun 2024 at 10:21, lille stor via Swig-user <<a href="mailto:swi...@li..." onclick="" target="_blank">swi...@li...</a>> wrote:</div> <blockquote class="gmail_quote" style="margin: 0.0px 0.0px 0.0px 0.8ex;border-left: 1.0px solid rgb(204,204,204);padding-left: 1.0ex;"> <div> <div style="font-family: Verdana;font-size: 12.0px;"> <div>I am using SWIG (version 4.2.1) to generate a Java wrapper for some C code. This C code has some constants that SWIG represents with the Java interface file below. As it stands, this interface can be accessed by classes outside the "abc" package because it is declared as "public".</div> <div> </div> <div> <div> /* ----------------------------------------------------------------------------<br/> * This file was automatically generated by SWIG (<a href="http://www.swig.org" target="_blank">http://www.swig.org</a>).<br/> * Version 4.2.1<br/> *<br/> * Do not make changes to this file unless you know what you are doing--modify<br/> * the SWIG interface file instead.<br/> * ----------------------------------------------------------------------------- */</div> <div> package abc;</div> <div> public interface TestConstants {<br/> public final static int YES = TestJNI.YES_get();<br/> public final static int NO = TestJNI.NO_get();<br/> public final static int ENABLED = TestJNI.ENABLED_get();<br/> public final static int DISABLED = TestJNI.DISABLED_get();<br/> }</div> <div> </div> </div> <div> </div> <div>How can I make this interface visible only to classes within the same package (i.e., change "public interface TestConstants" to just "interface TestConstants")? I have tried:</div> <div> </div> <div> %typemap(javainterfacemodifiers) SWIGTYPE "interface"</div> <div> </div> <div>... but it did not work. How can I achieve this using SWIG?</div> <div> </div> </div> </div> _______________________________________________<br/> Swig-user mailing list<br/> <a href="mailto:Swi...@li..." onclick="" target="_blank">Swi...@li...</a><br/> <a href="https://lists.sourceforge.net/lists/listinfo/swig-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/swig-user</a></blockquote> </div> </div> </div> </div> </div></div></body></html> |
From: William S F. <ws...@fu...> - 2024-06-21 14:06:34
|
This is not possible as it is hard coded to 'public'. We could add in some pragmas similar to the Java module class pragmas https://swig.org/Doc4.2/Java.html#Java_module_class_pragmas to provide this flexibility. I suggest adding in a Github issue for this. William On Thu, 20 Jun 2024 at 10:21, lille stor via Swig-user < swi...@li...> wrote: > I am using SWIG (version 4.2.1) to generate a Java wrapper for some C > code. This C code has some constants that SWIG represents with the Java > interface file below. As it stands, this interface can be accessed by > classes outside the "abc" package because it is declared as "public". > > /* > ---------------------------------------------------------------------------- > * This file was automatically generated by SWIG (http://www.swig.org > ). > * Version 4.2.1 > * > * Do not make changes to this file unless you know what you are > doing--modify > * the SWIG interface file instead. > * > ----------------------------------------------------------------------------- > */ > package abc; > public interface TestConstants { > public final static int YES = TestJNI.YES_get(); > public final static int NO = TestJNI.NO_get(); > public final static int ENABLED = TestJNI.ENABLED_get(); > public final static int DISABLED = TestJNI.DISABLED_get(); > } > > > How can I make this interface visible only to classes within the same > package (i.e., change "public interface TestConstants" to just "interface > TestConstants")? I have tried: > > %typemap(javainterfacemodifiers) SWIGTYPE "interface" > > ... but it did not work. How can I achieve this using SWIG? > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: lille s. <lil...@gm...> - 2024-06-20 09:20:54
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>I am using SWIG (version 4.2.1) to generate a Java wrapper for some C code. This C code has some constants that SWIG represents with the Java interface file below. As it stands, this interface can be accessed by classes outside the "abc" package because it is declared as "public".</div> <div> </div> <div> <div> /* ----------------------------------------------------------------------------<br/> * This file was automatically generated by SWIG (<a href="http://www.swig.org" target="_blank">http://www.swig.org</a>).<br/> * Version 4.2.1<br/> *<br/> * Do not make changes to this file unless you know what you are doing--modify<br/> * the SWIG interface file instead.<br/> * ----------------------------------------------------------------------------- */</div> <div> package abc;</div> <div> public interface TestConstants {<br/> public final static int YES = TestJNI.YES_get();<br/> public final static int NO = TestJNI.NO_get();<br/> public final static int ENABLED = TestJNI.ENABLED_get();<br/> public final static int DISABLED = TestJNI.DISABLED_get();<br/> }</div> <div> </div> </div> <div> </div> <div>How can I make this interface visible only to classes within the same package (i.e., change "public interface TestConstants" to just "interface TestConstants")? I have tried:</div> <div> </div> <div> %typemap(javainterfacemodifiers) SWIGTYPE "interface"</div> <div> </div> <div>... but it did not work. How can I achieve this using SWIG?</div> <div> </div></div></body></html> |
From: Seth G <se...@ge...> - 2024-06-18 07:43:29
|
Thanks Julien - that is the approach we went with. Final pull request at https://github.com/MapServer/MapServer/pull/7083/files Seth -- web:https://geographika.net & https://mapserverstudio.net twitter: @geographika On Tue, Jun 18, 2024, at 8:54 AM, Julien Marrec wrote: > Macros? > > SWIG_VERSION is a hexadecimal integer such as 0x010311 (corresponding to SWIG-1.3.11). > > #if SWIG_VERSION < 0x040300 > // Swig before 4.3.0 > #else > // Swig at 4.3.0 and above > #endif > -- > Julien Marrec, EBCP, BPI MFBA > Owner at EffiBEM <http://www.effibem.com> > T: +33 6 95 14 42 13 > > LinkedIn (en <https://www.linkedin.com/in/julienmarrec>) *| *(fr <https://fr.linkedin.com/in/julienmarrec/fr>) : <http://www.linkedin.com/in/julienmarrec> > > > Le lun. 17 juin 2024 à 18:52, Seth G <se...@ge...> a écrit : >> Hi all, >> >> We ran into some build issues with the latest SWIG master (4.3.0) - which removes t_output_helper. >> >> I've updated the code as suggested in the release notes by using SWIG_Python_AppendOutput. See https://github.com/MapServer/MapServer/pull/7083/files >> >> Is there a way to make this change compatible with both 4.3.0 and previous 4.x SWIG builds? >> >> SWIG_Python_AppendOutput expects a new $is_void parameter in 4.3.0 but won't build in previous versions when added, e.g. SWIG_Python_AppendOutput($result,r,1); >> >> Thanks for any hints, >> >> Seth >> >> >> >> >> _______________________________________________ >> Swig-user mailing list >> Swi...@li... >> https://lists.sourceforge.net/lists/listinfo/swig-user |
From: Julien M. <jul...@gm...> - 2024-06-18 06:54:40
|
Macros? SWIG_VERSION is a hexadecimal integer such as 0x010311 (corresponding to SWIG-1.3.11). #if SWIG_VERSION < 0x040300 // Swig before 4.3.0 #else // Swig at 4.3.0 and above #endif -- Julien Marrec, EBCP, BPI MFBA Owner at EffiBEM <http://www.effibem.com> T: +33 6 95 14 42 13 LinkedIn (en <https://www.linkedin.com/in/julienmarrec>) *| *(fr <https://fr.linkedin.com/in/julienmarrec/fr>) : <http://www.linkedin.com/in/julienmarrec> Le lun. 17 juin 2024 à 18:52, Seth G <se...@ge...> a écrit : > Hi all, > > We ran into some build issues with the latest SWIG master (4.3.0) - which > removes t_output_helper. > > I've updated the code as suggested in the release notes by using > SWIG_Python_AppendOutput. See > https://github.com/MapServer/MapServer/pull/7083/files > > Is there a way to make this change compatible with both 4.3.0 and previous > 4.x SWIG builds? > > SWIG_Python_AppendOutput expects a new $is_void parameter in 4.3.0 but > won't build in previous versions when added, e.g. > SWIG_Python_AppendOutput($result,r,1); > > Thanks for any hints, > > Seth > > > > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: Seth G <se...@ge...> - 2024-06-17 16:51:20
|
Hi all, We ran into some build issues with the latest SWIG master (4.3.0) - which removes t_output_helper. I've updated the code as suggested in the release notes by using SWIG_Python_AppendOutput. See https://github.com/MapServer/MapServer/pull/7083/files Is there a way to make this change compatible with both 4.3.0 and previous 4.x SWIG builds? SWIG_Python_AppendOutput expects a new $is_void parameter in 4.3.0 but won't build in previous versions when added, e.g. SWIG_Python_AppendOutput($result,r,1); Thanks for any hints, Seth |
From: lille s. <lil...@gm...> - 2024-06-14 06:14:48
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><p>I am using SWIG to generate a Java wrapper for some C code. This C code has some constants that SWIG represents with the Java interface file below. As it stands, this interface can be accessed by classes outside the <code>abc</code> package because it is declared as <code>public</code>. How can I modify the SWIG configuration to make this interface visible only to classes within the same package (i.e., change "<code>public interface TestConstants"</code> to <code>"interface TestConstants"</code>)? I've tried several approaches (e.g., using typemaps and pragmas), but none have worked.</p> <p>Here is the automatically generated Java interface file:</p> <pre class="lang-java s-code-block"><code class="hljs language-java"><span class="hljs-comment"> /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 3.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. * ----------------------------------------------------------------------------- */</span> <span class="hljs-keyword"> package</span> abc; <span class="hljs-keyword"> public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">TestConstants</span> { <span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> <span class="hljs-type">int</span> <span class="hljs-variable">YES</span> <span class="hljs-operator">=</span> TestJNI.YES_get(); <span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> <span class="hljs-type">int</span> <span class="hljs-variable">NO</span> <span class="hljs-operator">=</span> TestJNI.NO_get(); <span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> <span class="hljs-type">int</span> <span class="hljs-variable">ENABLED</span> <span class="hljs-operator">=</span> TestJNI.ENABLED_get(); <span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> <span class="hljs-type">int</span> <span class="hljs-variable">DISABLED</span> <span class="hljs-operator">=</span> TestJNI.DISABLED_get(); }</code></pre> <div> </div> <div> <p>How can I achieve this using SWIG? Thanks!</p> <p>PS: I have posted this same question in stackoverflow but have received no answers until now...</p> <p> </p> </div></div></body></html> |
From: René G. <ren...@vi...> - 2024-05-22 09:47:08
|
Hello, Thanks for the help. That was exactly my issue. I linked against python3.lib, but did not remove the linkage against python38.lib. Python38.lib won in the end. Solution was to update my CMake installation to version 3.26+ as that version added support for the Python stable ABI and change my CMake code to the following: find_package(Python REQUIRED COMPONENTS Development.SABIModule) target_link_libraries(${PYTHON_WRAPPER_NAME} Python::SABIModule) With best regards René Glockan From: William S Fulton <ws...@fu...> Sent: Wednesday, May 22, 2024 8:49 AM To: René Glockan <ren...@vi...> Cc: swi...@li... Subject: Re: [Swig-user] Python stable ABI under Windows Probably worth looking closely at the Python docs on the stable ABI at https://docs.python.org/3/c-api/stable.html. It does say to not link against the versioned dll on Windows. William On Tue, 21 May 2024 at 21:40, René Glockan <ren...@vi... <mailto:ren...@vi...> > wrote: Hello, I'm currently trying to get the python stable ABI to work in our project. According to the documentation I only have to add `target_compile_definitions(_${PYTHON_WRAPPER_NAME} PUBLIC Py_LIMITED_API=0x03040000)` to my existing CMake project. Under my ubuntu 20.04 test system this worked and I could use any other Python version. But under Windows (10) I'm still limited to the python version I used to build it. If I use any other python version I get the following error: `ImportError: DLL load failed while importing _Pyswig_test: The specified module could not be found.` _Pyswig_test being the name of my test project. Everything is in the same directory. It did change something during compilation as it now links against python.lib instead of the previous python38.lib. Do I have to do something special to make the stable ABI work under Windows? With best regards René Glockan _______________________________________________ Swig-user mailing list Swi...@li... <mailto:Swi...@li...> https://lists.sourceforge.net/lists/listinfo/swig-user |
From: William S F. <ws...@fu...> - 2024-05-22 06:49:32
|
Probably worth looking closely at the Python docs on the stable ABI at https://docs.python.org/3/c-api/stable.html. It does say to not link against the versioned dll on Windows. William On Tue, 21 May 2024 at 21:40, René Glockan <ren...@vi...> wrote: > Hello, > > I'm currently trying to get the python stable ABI to work in our project. > According to the documentation I only have to add > `target_compile_definitions(_${PYTHON_WRAPPER_NAME} PUBLIC > Py_LIMITED_API=0x03040000)` > to my existing CMake project. Under my ubuntu 20.04 test system this worked > and I could use any other Python version. > But under Windows (10) I'm still limited to the python version I used to > build it. > If I use any other python version I get the following error: > `ImportError: DLL load failed while importing _Pyswig_test: The specified > module could not be found.` > _Pyswig_test being the name of my test project. Everything is in the same > directory. > It did change something during compilation as it now links against > python.lib instead of the previous python38.lib. > Do I have to do something special to make the stable ABI work under > Windows? > > With best regards > René Glockan > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: William S F. <ws...@fu...> - 2024-05-22 06:45:46
|
On Mon, 20 May 2024 at 07:43, Andy Tai <at...@at...> wrote: > Hi, can typemaps be used to match "later" parts of the arguments of a > C function? > For example, if I have a C function > > void func(int a1, const char *str, size_t size) ; > > where the second and the third arguments are meant to pass in a C string. > > I find that if I try to apply the typical typemap > > %typemap(in) (const char *, size_t) { > Change above line to: void func(int a1, const char *str, size_t size) ; then you'll see the typemap contents in the generated code. You could also use -debug-tmused to see if your typemap matches, see http://swig.org/Doc4.2/Typemaps.html. Once you see your code in the wrapper function, then maybe it will need further work, I'm not familar enough with Guile to know if it will actually work. William |
From: William S F. <ws...@fu...> - 2024-05-22 06:27:37
|
I'd have thought that versioning will work. SWIG just generates the source code and it is up to you to compile it appropriately for your target language. Probably best to consult your operating system's documentation on your dynamic linker and versioning as well docs on your target language and versioned shared objects. William On Tue, 7 May 2024 at 18:34, Joachim Wuttke <j.w...@fz...> wrote: > Linux convention wants shared libraries to be versioned, > with less specific symlinks: > > libfoo.so.1.54.0 > libfoo.so.1.54 -> libfoo.so.1.54.0 > libfoo.so.1 -> libfoo.so.1.54 > libfoo.so -> libfoo.so.1 > > Would that also be good practice for Swig-generated > shared libraries that are meant to be used as plugins? > > The Swig docs have _example.so without version number though. > > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: René G. <ren...@vi...> - 2024-05-21 20:39:50
|
Hello, I'm currently trying to get the python stable ABI to work in our project. According to the documentation I only have to add `target_compile_definitions(_${PYTHON_WRAPPER_NAME} PUBLIC Py_LIMITED_API=0x03040000)` to my existing CMake project. Under my ubuntu 20.04 test system this worked and I could use any other Python version. But under Windows (10) I'm still limited to the python version I used to build it. If I use any other python version I get the following error: `ImportError: DLL load failed while importing _Pyswig_test: The specified module could not be found.` _Pyswig_test being the name of my test project. Everything is in the same directory. It did change something during compilation as it now links against python.lib instead of the previous python38.lib. Do I have to do something special to make the stable ABI work under Windows? With best regards René Glockan |
From: Andy T. <at...@at...> - 2024-05-20 06:42:54
|
Hi, can typemaps be used to match "later" parts of the arguments of a C function? For example, if I have a C function void func(int a1, const char *str, size_t size) ; where the second and the third arguments are meant to pass in a C string. I find that if I try to apply the typical typemap %typemap(in) (const char *, size_t) { size_t temp; $1 = SWIG_Guile_scm2newstr($input,&temp); $2 = temp; } the output code from SWIG does not seem to recognize the 2nd and 3rd arguments as meant to be converted from a string in the target script language for which the binding of the function is being generated. Any way to do that (or I missed something)? Thanks for info |
From: Liu S. <smi...@gm...> - 2024-05-19 08:36:21
|
Hello, I'm new with swig and I try to portage a C++ framework to Python. I'm reading the documentation for C++ class structures, but I encountered some problems with C++ virtual method calls. I used setattr in python to set an attribute, but after calling the C++ virtual method to python, the attribute disappeared. Why is this happening? How can I prevent this attribute from disappearing? eg: %feature("director") Bike; class Wheel: public: Wheel(); virtual ~Wheel(); }; class Bike { public: Bike(); virtual ~Bike(); void setWheel(Wheel* w) { m_wheel = w; }; void printInfo() { printWheel(m_wheel); } virtual void printWheel(Wheel* w) = 0; private: Wheel* m_wheel; }; then at the Python side: import mymodule class MyBike(mymodule.Bike): def printWheel(self, wheel): print(wheel.name) wheel = Wheel() setattr(wheel, "name", "myWheel") bike = MyBike() bike.setWheel(wheel) bike.printInfo(): At this time, the error is as follows: print(wheel.name) AttributeError: 'Wheel' object has no attribute 'name Thanks a lot Smith |