From: Ian B. <ian...@gm...> - 2014-09-15 07:15:54
|
Further information on the string handling. I have a function that takes a std::string, called get_global_param_string. I added a debugging command to print out the length of the string and another string that it should be equal to. When I call the function with the argument 'errstring', somehow the string is not the same length as err. ``` C++ std::string get_global_param_string(std::string ParamName) { std::string err = "errstring"; std::cout << ParamName.size() << " " << err.size() << std::endl; ... ``` In scilab I do -->get_global_param_string("errstring") 10 9 This seems to be the root cause of all the problems I have with the scilab wrapper. Everything else seems to work fine. On Mon, Sep 15, 2014 at 2:26 AM, Ian Bell <ian...@gm...> wrote: > Simon et al., > > A couple of issues with the use of the swig+scilab code that I have run > into. I've almost got my code working. It now compiles at least on > ubuntu, a major milestone, but doesn't work. I am not getting any results > out of my code, but it seems very close. I guess this is a pretty good > real-world test case for the wrapper. > > OSX is a non starter with my code for the moment. There are some clang - > related bugs that I will try to investigate and give an update when I can. > I haven't tried yet with windows, but I'm not holding my breath. > > I use CMake and am trying to integrate into CMake build system. That has > its own set of issues, but I think I can work around the CMake problems. > The scilab problems on the other hand... > > builder.sce copies the .cpp files into the TMPDIR directory (yuck.). This > is not nice when .cpp files have relative imports of headers that are in > other folders. Can you avoid doing that and just keep a list of files to > be compiled? To workaround this problem, I had to add all my source > folders to the list of include folders. What if you have two files with > the same name? > > I had some problems understanding the values allowed to > buildverbositylevel, I put in two tiny PR to resolve my confusion, feel > free to modify. But that said, even at a verbosity level of 2, I can't see > what commands are being executed in the makefile itself. Can you please fix > that? > > There is something very funny with string handling. In C++ land, I have > std::map<std::string, int>, but for some reason I can't lookup string > values in the map when wrapping for scilab that I can always do without any > problems from other wrappers. In another function, it takes in a string as > input, and it prints out an error message saying that the exact string I > passed in is invalid (but it isn't). Generally it seems string handling is > broken. Have you had any experience with this? > > To me, it seems like some sort of non-printing character is getting added > to the strings at the end, or it is getting messed up somehow enough that > the compare() function doesn't say they are equal, but it's very hard for > me to say. In any case, string comparisons with the strings that pass > through scilab are no longer valid. I can't say much more than that I > guess. > > Apart from that, seems like things are working, at least kind of. > > I will certainly not shed a tear over builder.sce when it goes away. That > is such a pain to work with and debug. > > Thanks for all your hard work with this!! > > Kind Regards, > Ian > |