Add support for Scilab 2025.x.0

Add support for Scilab 2025.0.0 and 2025.1.0 (const-related changes, error management).

Add CI job for Scilab 2025.1.0.

Fixes #3155
This commit is contained in:
vincentcouvert 2025-06-06 21:23:07 +02:00 committed by GitHub
parent 739997707c
commit dd0e14ad22
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 19 additions and 8 deletions

View File

@ -203,6 +203,8 @@ jobs:
VER: '2023.1.0'
- SWIGLANG: scilab
VER: '2024.1.0'
- SWIGLANG: scilab
VER: '2025.1.0'
- SWIGLANG: tcl
# c++11 testing
- SWIGLANG: csharp

View File

@ -33,11 +33,15 @@ printf("Foo = %f\n", Foo_get());
ierr = execstr('gcd(-42, 105)', 'errcatch');
if ierr <> 20003 then
error("gcd(-42, 105) must provoke a RunTimeError")
else
errclear()
end
ierr = execstr('fact(-4)', 'errcatch');
if ierr <> 20003 then
error("fact(-4) must provoke a RunTimeError")
else
errclear()
end
exit

View File

@ -54,6 +54,7 @@ try
path_set("Whoa!");
printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
errclear();
printf("Good.\n");
end
printf(" Trying to set ''status''\n");
@ -61,6 +62,7 @@ try
status_set(0);
printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
errclear();
printf("Good.\n");
end

View File

@ -167,7 +167,7 @@ SWIG_SciString_FromCharPtr(void *pvApiCtx, int iVarOut, const char *pchValue) {
const char* pstStrings[1];
pstStrings[0] = pchValue;
sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, 1, 1, pstStrings);
sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, 1, 1, (char CONST_PTR* CONST_PTR*)pstStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
@ -237,7 +237,7 @@ SWIGINTERN int
SWIG_SciString_FromCharPtrArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, char **charPtrArray) {
SciErr sciErr;
sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, (const char* const*) charPtrArray);
sciErr = createMatrixOfString(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, (char CONST_PTR* CONST_PTR*)charPtrArray);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
@ -261,13 +261,13 @@ SWIGINTERN int
SWIG_CreateScilabVariable_dec(char)(void *pvApiCtx, const char* psVariableName, const char cVariableValue) {
SciErr sciErr;
char sValue[2];
const char* psStrings[1];
CONST_PTR char* psStrings[1];
sValue[0] = cVariableValue;
sValue[1] = '\0';
psStrings[0] = sValue;
sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, psStrings);
sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, (char CONST_PTR* CONST_PTR*)psStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
@ -278,12 +278,12 @@ SWIG_CreateScilabVariable_dec(char)(void *pvApiCtx, const char* psVariableName,
%fragment(SWIG_CreateScilabVariable_frag(charptr), "wrapper") {
SWIGINTERN int
SWIG_CreateScilabVariable_dec(charptr)(void *pvApiCtx, const char* psVariableName, const char* psVariableValue) {
SWIG_CreateScilabVariable_dec(charptr)(void *pvApiCtx, const char* psVariableName, CONST_PTR char* psVariableValue) {
SciErr sciErr;
const char* psStrings[1];
CONST_PTR char* psStrings[1];
psStrings[0] = psVariableValue;
sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, psStrings);
sciErr = createNamedMatrixOfString(pvApiCtx, psVariableName, 1, 1, (char CONST_PTR* CONST_PTR*)psStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;

View File

@ -12,6 +12,9 @@
extern "C" {
#endif
#include "api_scilab.h"
#ifndef CONST_PTR /* Scilab < 2025.0.0 */
#define CONST_PTR const
#endif
#if SCI_VERSION_MAJOR < 5 || SCI_VERSION_MAJOR == 5 && SCI_VERSION_MINOR < 4
#define __USE_DEPRECATED_STACK_FUNCTIONS__
#include "stack-c.h"
@ -329,7 +332,7 @@ SwigScilabPtrFromObject(void *pvApiCtx, int iVarOut, void *pvObj, swig_type_info
pstTypeName = SWIG_TypeName(descriptor);
}
sciErr = createMatrixOfStringInList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, piMListAddr, 1, 1, 1, &pstTypeName);
sciErr = createMatrixOfStringInList(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, piMListAddr, 1, 1, 1, (char CONST_PTR* CONST_PTR*)&pstTypeName);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;