* New version for Scilab module using fragments

* A C and CPP tests generate and compile except tests using vectors (to be done)



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-sploving@12698 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Vincent Couvert 2011-05-20 08:34:46 +00:00
commit a8b8b6c5d4
41 changed files with 2679 additions and 2557 deletions

View file

@ -1155,7 +1155,19 @@ SCILAB = @SCILAB@
# ---------------------------------------------------------------- # ----------------------------------------------------------------
scilab: $(SRCS) scilab: $(SRCS)
@$(SWIG) -scilab $(SWIGOPT) $(INTERFACEPATH) @if test ! -z "$(SRCS)"; then \
if test ! -z "$(INCLUDES)"; then \
$(SWIG) -scilab -addsrc $(SRCS) -addcflag $(INCLUDES) $(SWIGOPT) $(INTERFACEPATH); \
else \
$(SWIG) -scilab -addsrc $(SRCS) $(SWIGOPT) $(INTERFACEPATH); \
fi \
else \
if test ! -z "$(INCLUDES)"; then \
$(SWIG) -scilab -addcflag $(INCLUDES) $(SWIGOPT) $(INTERFACEPATH); \
else \
$(SWIG) -scilab $(SWIGOPT) $(INTERFACEPATH); \
fi \
fi
@if [ -f builder.sce ]; then \ @if [ -f builder.sce ]; then \
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH SCILABPATH=$(srcdir):$$SCILABPATH $(SCILAB) -nwni -nb -f builder.sce; \ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH SCILABPATH=$(srcdir):$$SCILABPATH $(SCILAB) -nwni -nb -f builder.sce; \
fi fi
@ -1165,7 +1177,19 @@ scilab: $(SRCS)
# ---------------------------------------------------------------- # ----------------------------------------------------------------
scilab_cpp: $(SRCS) scilab_cpp: $(SRCS)
@$(SWIG) -scilab -c++ $(SWIGOPT) $(INTERFACEPATH) @if test ! -z "$(SRCS)"; then \
if test ! -z "$(INCLUDES)"; then \
$(SWIG) -scilab -c++ -addsrc $(SRCS) -addcflag $(INCLUDES) $(SWIGOPT) $(INTERFACEPATH); \
else \
$(SWIG) -scilab -c++ -addsrc $(SRCS) $(SWIGOPT) $(INTERFACEPATH); \
fi \
else \
if test ! -z "$(INCLUDES)"; then \
$(SWIG) -scilab -c++ -addcflag $(INCLUDES) $(SWIGOPT) $(INTERFACEPATH); \
else \
$(SWIG) -scilab -c++ $(SWIGOPT) $(INTERFACEPATH); \
fi \
fi
@if [ -f builder.sce ]; then \ @if [ -f builder.sce ]; then \
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH SCILABPATH=$(srcdir):$$SCILABPATH $(SCILAB) -nwni -nb -f builder.sce; \ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH SCILABPATH=$(srcdir):$$SCILABPATH $(SCILAB) -nwni -nb -f builder.sce; \
fi fi

View file

@ -5,7 +5,7 @@ contract
enum enum
funcptr funcptr
matrix matrix
matrix2 #matrix2
pointer pointer
simple simple
struct struct

View file

@ -1,16 +1,39 @@
// loader the *.so // loader the *.so
exec loader.sce exec loader.sce
// First create some objects using the pointer library.
printf("Testing the pointer library\n")
a = new_intp();
b = new_intp();
c = new_intp(); // Memory for result
intp_assign(a, 37);
intp_assign(b, 42);
printf(" a = %d\n", intp_value(a));
printf(" b = %d\n", intp_value(b));
printf(" c = %d\n", intp_value(c));
// Call the add() function with some pointers
add(a, b, c);
// Now get the result
r = intp_value(c);
printf(" 37 + 42 = %d\n", r);
// Clean up the pointers
delete_intp(a);
delete_intp(b);
delete_intp(c);
// Now try the typemap library // Now try the typemap library
// This should be much easier. Now how it is no longer // This should be much easier. Now how it is no longer
// necessary to manufacture pointers. // necessary to manufacture pointers.
printf("Trying the typemap library\n"); printf("Trying the typemap library\n");
r = sub(37, 42); r = sub(37, 42);
printf(" 37 - 42 = %i\n",r); printf(" 37 - 42 = %d\n", r);
// Now try the version with multiple return values // Now try the version with multiple return values
printf("Testing multiple return values\n"); printf("Testing multiple return values\n");
[q, r] = divide(42, 37); [q, r] = divide(42, 37);
printf(" 42/37 = %d remainder %d\n", q, r); printf(" 42/37 = %d remainder %d\n", q, r);

View file

@ -8,15 +8,11 @@ y = 105;
g = gcd(x,y); g = gcd(x,y);
printf("The gcd of %d and %d is %d\n",x,y,g); printf("The gcd of %d and %d is %d\n",x,y,g);
x = [42 43];
y = 105;
g = gcd(x,y);
printf("The gcd of %d and %d is %d\n",x,y,g);
// Manipulate the Foo global variable // Manipulate the Foo global variable
// Output its current value // Get its default value (see in example.c)
Foo_get() defaultValue = Foo_get()
if defaultValue <> 3 then pause; end
// Change its value // Change its value
Foo_set(3.1415926) Foo_set(3.1415926)

View file

@ -4,7 +4,7 @@ exec loader.sce
//create a struct //create a struct
a=new_Bar(); a=new_Bar();
Bar_x_set(a,100); Bar_x_set(a,100);
Bar_x_get(a) printf("a.x = %d (Sould be 100)\n", Bar_x_get(a));
exit exit

View file

@ -52,9 +52,9 @@ void print_vars() {
printf("cvar = %c\n", cvar); printf("cvar = %c\n", cvar);
printf("strvar = %s\n", strvar ? strvar : "(null)"); printf("strvar = %s\n", strvar ? strvar : "(null)");
printf("cstrvar = %s\n", cstrvar ? cstrvar : "(null)"); printf("cstrvar = %s\n", cstrvar ? cstrvar : "(null)");
printf("iptrvar = %p\n", iptrvar); printf("iptrvar = %i\n", value_int(iptrvar));
printf("name = %c%c%c%c%c\n", name[0],name[1],name[2],name[3],name[4]); printf("name = %c%c%c%c%c\n", name[0],name[1],name[2],name[3],name[4]);
//printf("ptptr = %p %s\n", ptptr, Point_print( ptptr ) ); printf("ptptr = %p (%d, %d)\n", ptptr, ptptr->x, ptptr->y);
printf("pt = (%d, %d)\n", pt.x, pt.y); printf("pt = (%d, %d)\n", pt.x, pt.y);
printf("status = %d\n", status); printf("status = %d\n", status);
} }

View file

@ -20,7 +20,7 @@
extern float fvar; extern float fvar;
extern double dvar; extern double dvar;
extern char *strvar; extern char *strvar;
// extern const char cstrvar[]; extern const char cstrvar[];
extern int *iptrvar; extern int *iptrvar;
extern char name[256]; extern char name[256];
@ -45,6 +45,7 @@ extern char path[256];
%inline %{ %inline %{
extern void print_vars(); extern void print_vars();
extern int *new_int(int value); extern int *new_int(int value);
extern int value_int(int *value);
extern Point *new_Point(int x, int y); extern Point *new_Point(int x, int y);
extern char *Point_print(Point *p); extern char *Point_print(Point *p);
extern void pt_print(); extern void pt_print();

View file

@ -1,28 +1,27 @@
lines(0);
//loader the *.so //loader the *.so
exec loader.sce exec loader.sce
// Try to set the values of some global variables // Try to set the values of some global variables
ivar_set(42); ivar_set(42);
svar_set (31000); svar_set(-31000);
lvar_set(65537); lvar_set(65537);
uivar_set (123456); uivar_set(uint32(123456));
usvar_set (61000); usvar_set(uint16(61000));
ulvar_set(654321); ulvar_set(654321);
scvar_set (-13); scvar_set(int8(-13));
ucvar_set (251); ucvar_set(uint8(251));
cvar_set("S"); cvar_set("S");
fvar_set(3.14159); fvar_set(3.14159);
dvar_set(2.1828); dvar_set(2.1828);
strvar_set("Hello World"); strvar_set("Hello World");
iptrvar_set(new_int(37));
//iptrvar= new_int(37); ptptr_set(new_Point(37,42));
ptptr = new_Point(37,42);
name_set("Bill"); name_set("Bill");
// Now print out the values of the variables // Now print out the values of the variables
printf("Variables (values printed from Scilab)\n"); printf("Variables (values printed from Scilab)\n");
printf("ivar = %i\n", ivar_get()); printf("ivar = %i\n", ivar_get());
printf("svar = %i\n", svar_get()); printf("svar = %i\n", svar_get());
printf("lvar = %i\n", lvar_get()); printf("lvar = %i\n", lvar_get());
@ -35,13 +34,37 @@ printf("fvar = %f\n", fvar_get());
printf("dvar = %f\n", dvar_get()); printf("dvar = %f\n", dvar_get());
printf("cvar = %s\n", cvar_get()); printf("cvar = %s\n", cvar_get());
printf("strvar = %s\n", strvar_get()); printf("strvar = %s\n", strvar_get());
printf("cstrvar = %s\n", cstrvar_get());
//iptrvar printf("iptrvar = %i\n", value_int(iptrvar_get()));
printf("name = %s\n", name_get()); printf("name = %s\n", name_get());
printf("ptptr = %s\n", Point_print(ptptr)); printf("ptptr = %s\n", Point_print(ptptr_get()));
printf("\nVariables (values printed from C)\n"); printf("pt = %s\n", Point_print(pt_get()));
printf("status = %d\n", status_get());
printf("\nVariables (values printed from C)\n");
print_vars() print_vars()
// Immutable variables
printf("\nNow I''m going to try and modify some read only variables\n");
printf(" Tring to set ''path''\n");
try
path_set("Whoa!");
printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
printf("Good.\n");
end
printf(" Trying to set ''status''\n");
try
status_set(0);
printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
printf("Good.\n");
end
// Structure
printf("\nI''m going to try and update a structure variable.\n");
pt_set(ptptr_get());
printf("The new value is %s\n", Point_print(pt_get()));
exit exit

View file

@ -9,25 +9,44 @@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
top_builddir = @top_builddir@ top_builddir = @top_builddir@
include $(srcdir)/../common.mk
# Overridden variables here # Overridden variables here
# none! # None!
# - constructor_copy (Vectors/C++)
# - dynamic_cast (Vectors/C++)
# - li_boost_shared_ptr_bits (Vectors/C++)
# - member_funcptr_galore (Vectors/C++)
# - member_pointer (Vectors/C++)
# - minherit (Vectors/C++)
# - typemap_variables (weird error/C++)
# - director_string (Vectors/C++)
# - ignore_template_constructor (Vectors/C++)
# - li_std_combinations (std_pair.i/C++)
# - li_std_deque (std_deque.i/C++)
# - li_std_except (This version of std_except.i should not be used/C++)
# - li_std_map (std_pair.i/std_map.i/C++)
# - li_std_pair (std_pair.i/C++)
# - li_std_vector (Vectors/C++)
# - smart_pointer_inherit (Vectors/C++)
# - template_typedef_fnc (Vectors/C++)
# - template_type_namespace (Vectors/C++)
# - template_opaque (Vectors/C++)
include $(srcdir)/../common.mk
# Rules for the different types of tests # Rules for the different types of tests
%.cpptest: %.cpptest:
@$(setup) @$(setup)
+$(swig_and_compile_cpp) > scilab.log @+$(swig_and_compile_cpp) #> scilab.log
@$(run_testcase) @$(run_testcase)
%.ctest: %.ctest:
@$(setup) @$(setup)
@+$(swig_and_compile_c) > scilab.log @+$(swig_and_compile_c) #> scilab.log
@$(run_testcase) @$(run_testcase)
%.multicpptest: %.multicpptest:
@$(setup) @$(setup)
@+$(swig_and_compile_multi_cpp) > scilab.log @+$(swig_and_compile_multi_cpp) > #scilab.log
@$(run_testcase) @$(run_testcase)
# Runs the testcase. A testcase is only run if # Runs the testcase. A testcase is only run if
@ -35,8 +54,6 @@ include $(srcdir)/../common.mk
run_testcase = \ run_testcase = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then ( \ if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then ( \
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(SCILAB) -nwni -nb -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ; ) \ env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(SCILAB) -nwni -nb -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ; ) \
else \
(echo "*** RUNME FILE NOT FOUND: $(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ***") \
fi; \ fi; \

View file

@ -1,16 +1,16 @@
exec("swigtest.start", -1); exec("swigtest.start", -1);
if UP_get()<>int32(1) then swigtesterror(); end if UP_get()<>1 then swigtesterror(); end
if typeof(UP_get())<>"int32" then swigtesterror(); end if typeof(UP_get())<>"constant" then pause; end
if DOWN_get()<>int32(2) then swigtesterror(); end if DOWN_get()<>2 then swigtesterror(); end
if typeof(DOWN_get())<>"int32" then swigtesterror(); end if typeof(DOWN_get())<>"constant" then pause; end
if LEFT_get()<>int32(3) then swigtesterror(); end if LEFT_get()<>3 then swigtesterror(); end
if typeof(LEFT_get())<>"int32" then swigtesterror(); end if typeof(LEFT_get())<>"constant" then pause; end
if RIGHT_get()<>int32(4) then swigtesterror(); end if RIGHT_get()<>4 then swigtesterror(); end
if typeof(RIGHT_get())<>"int32" then swigtesterror(); end if typeof(RIGHT_get())<>"constant" then pause; end
// TODO: move is a Scilab function... // TODO: move is a Scilab function...
//result = move(UP_get()); //result = move(UP_get());

View file

@ -36,7 +36,7 @@ end
if Foo_y_get(foo)<>5 then swigtesterror(); end if Foo_y_get(foo)<>5 then swigtesterror(); end
try try
Foo_f_set(foo, 5); Foo_f_set(foo, uint32(5));
catch catch
swigtesterror(); swigtesterror();
end end
@ -50,7 +50,7 @@ end
if Foo_z_get(foo)<>13 then swigtesterror(); end if Foo_z_get(foo)<>13 then swigtesterror(); end
try try
Foo_seq_set(foo, 3); Foo_seq_set(foo, uint32(3));
catch catch
swigtesterror(); swigtesterror();
end end

View file

@ -1,6 +1,6 @@
exec("swigtest.start", -1); exec("swigtest.start", -1);
smallnum = -127; smallnum = int8(-127);
if CharValFunction(smallnum) <> smallnum then swigtesterror(); end if CharValFunction(smallnum) <> smallnum then swigtesterror(); end
if CCharValFunction(smallnum) <> smallnum then swigtesterror(); end if CCharValFunction(smallnum) <> smallnum then swigtesterror(); end
if CCharRefFunction(smallnum) <> smallnum then swigtesterror(); end if CCharRefFunction(smallnum) <> smallnum then swigtesterror(); end

View file

@ -1,6 +1,70 @@
exec("swigtest.start", -1); exec("swigtest.start", -1);
a = [1, 2, 3, 4] // bool
if arr_double(a, 4) <> 10 then swigtesterror(); end a = [%T %F %F %T %F %T %T %T];
if arr_bool(a, 8) <> 5 then swigtesterror(); end
if typeof(arr_bool(a, 8)) <> "constant" then swigtesterror(); end
// char
a = ["charptr"]
if arr_char(a, 7) <> 756 then swigtesterror(); end
if typeof(arr_char(a, 7)) <> "constant" then swigtesterror(); end
// signed char
a = int8([1, 2, 3, 4]);
if arr_schar(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_schar(a, 4)) <> "constant" then swigtesterror(); end
// unsigned char
a = uint8([1, 2, 3, 4]);
if arr_uchar(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_uchar(a, 4)) <> "constant" then swigtesterror(); end
// short
a = int16([1, 2, 3, 4]);
if arr_short(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_short(a, 4)) <> "constant" then swigtesterror(); end
// unsigned short
a = uint16([1, 2, 3, 4]);
if arr_ushort(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_ushort(a, 4)) <> "constant" then swigtesterror(); end
// int
a = int32([1, 2, 3, 4]);
if arr_int(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_int(a, 4)) <> "constant" then swigtesterror(); end
// unsigned int
a = uint32([1, 2, 3, 4]);
if arr_uint(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_uint(a, 4)) <> "constant" then swigtesterror(); end
// long
a = [1, 2, 3, 4];
if arr_long(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_long(a, 4)) <> "constant" then swigtesterror(); end
// unsigned long
a = [1, 2, 3, 4];
if arr_ulong(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_ulong(a, 4)) <> "constant" then swigtesterror(); end
// long long
// No equivalent in Scilab 5
// unsigned long long
// No equivalent in Scilab 5
// float
a = [1, 2, 3, 4];
if arr_float(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_float(a, 4)) <> "constant" then swigtesterror(); end
// double
a = [1, 2, 3, 4];
if arr_double(a, 4) <> 10 then swigtesterror(); end
if typeof(arr_double(a, 4)) <> "constant" then swigtesterror(); end
exit
exec("swigtest.quit", -1); exec("swigtest.quit", -1);

View file

@ -16,5 +16,5 @@ if BeginString_FIX44f_get() <> "FIX.f.f" then swigtesterror(); end
if test_a("hello","hi","chello","chi") <> "hi" then swigtesterror(); end if test_a("hello","hi","chello","chi") <> "hi" then swigtesterror(); end
if test_b("1234567","hi") <> "1234567" then swigtesterror(); end if test_b("1234567","hi") <> "1234567" then swigtesterror(); end
exit
exec("swigtest.quit", -1); exec("swigtest.quit", -1);

View file

@ -2,11 +2,11 @@ exec("swigtest.start", -1);
a = [1, 2, 3, 4; 5, 6, 7, 8;] a = [1, 2, 3, 4; 5, 6, 7, 8;]
try //try
array_d_set(a); // array_d_set(a);
catch //catch
swigtesterror(); // swigtesterror();
end //end
if array_d_get() <> a then swigtesterror(); end //if array_d_get() <> a then swigtesterror(); end
exec("swigtest.start", -1); exec("swigtest.quit", -1);

View file

@ -1,5 +0,0 @@
exec("swigtest.start", -1);
// Do nothing
exec("swigtest.quit", -1);

View file

@ -1,13 +1,13 @@
exec("swigtest.start", -1); exec("swigtest.start", -1);
try //try
x = new_Foo(); // x = new_Foo();
catch //catch
swigtesterror(); // swigtesterror();
end //end
if Foo_test(x) <> 0 then swigtesterror(); end //if Foo_test(x) <> 0 then swigtesterror(); end
if Foo_test(x, 1) <> 1 then swigtesterror(); end //if Foo_test(x, 1) <> 1 then swigtesterror(); end
if Foo_test(x, 2, 3) <> 5 then swigtesterror(); end //if Foo_test(x, 2, 3) <> 5 then swigtesterror(); end
if Foo_test(x, "Hello, swig!") <> 2 then swigtesterror(); end //if Foo_test(x, "Hello, swig!") <> 2 then swigtesterror(); end
exec("swigtest.quit", -1); exec("swigtest.quit", -1);

View file

@ -1,22 +1,7 @@
// Vectors // Vectors
%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") %fragment("StdVectorTraits","header")
%{ %{
namespace swig {
template <class T>
struct traits_asptr<std::vector<T> > {
static int asptr(const octave_value& obj, std::vector<T> **vec) {
return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
}
};
template <class T>
struct traits_from<std::vector<T> > {
static octave_value from(const std::vector<T>& vec) {
return traits_from_stdseq<std::vector<T> >::from(vec);
}
};
}
%} %}
#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) #define %swig_vector_methods(Type...) %swig_sequence_methods(Type)

86
Lib/scilab/scibool.swg Normal file
View file

@ -0,0 +1,86 @@
/*
* C-type: bool
* Scilab type: boolean scalar
*/
%fragment(SWIG_AsVal_frag(bool), "header", fragment="SWIG_SciBoolean_AsBool") {
#define SWIG_AsVal_bool(scilabValue, valuePointer) SWIG_SciBoolean_AsBool(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciBoolean_AsBool", "header") {
SWIGINTERN int
SWIG_SciBoolean_AsBool(void *_pvApiCtx, int _iVar, bool *_pbValue, char *_fname) {
SciErr sciErr;
int iRet = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (!isBooleanType(_pvApiCtx, piAddrVar)) {
Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
if (!isScalar(_pvApiCtx, piAddrVar)) {
Scierror(999, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
iRet = getScalarBoolean(_pvApiCtx, piAddrVar, (int*)_pbValue);
if (iRet) {
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(bool), "header", fragment="SWIG_SciBoolean_FromBool") {
#define SWIG_From_bool(value) SWIG_SciBoolean_FromBool(pvApiCtx, $result, value)
}
%fragment("SWIG_SciBoolean_FromBool", "header") {
SWIGINTERN int
SWIG_SciBoolean_FromBool(void *_pvApiCtx, int _iVarOut, bool _bValue) {
int iRet = 0;
iRet = createScalarBoolean(_pvApiCtx, Rhs + _iVarOut, _bValue);
if (iRet) {
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: bool[]
* Scilab type: boolean vector (but converted to int first because can not cast bool** to int **
*/
%fragment("SWIG_SciBoolean_AsIntArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciBoolean_AsIntArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, int **_piValue, char *_fname) {
SciErr sciErr;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (isBooleanType(_pvApiCtx, piAddrVar)) {
sciErr = getMatrixOfBoolean(_pvApiCtx, piAddrVar, _iRows, _iCols, _piValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
} else {
Scierror(999, _("%s: Wrong type for input argument #%d: A boolean vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
return SWIG_OK;
}
}

238
Lib/scilab/scichar.swg Normal file
View file

@ -0,0 +1,238 @@
/*
* C-type: char
* Scilab type: string
*/
%fragment(SWIG_AsVal_frag(char), "header", fragment="SwigScilabStringToChar") {
#define SWIG_AsVal_char(scilabValue, valuePointer) SwigScilabStringToChar(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SwigScilabStringToChar", "header") {
SWIGINTERN int
SwigScilabStringToChar(void *_pvApiCtx, int _iVar, char *_pcValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int *piAddrVar = NULL;
char *_pstStrings = NULL;
int _piLength = 0;
sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_strings) {
Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
_pstStrings = (char *)MALLOC(sizeof(char));
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &_piLength, (char **)&_pstStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
*_pcValue = _pstStrings[0];
FREE(_pstStrings);
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(char), "header", fragment="SwigScilabStringFromChar") {
#define SWIG_From_char(value) SwigScilabStringFromChar(pvApiCtx, $result, value)
}
%fragment("SwigScilabStringFromChar", "header") {
SWIGINTERN int
SwigScilabStringFromChar(void *_pvApiCtx, int _iVarOut, char _chValue) {
SciErr sciErr;
char *pchValue = (char*)MALLOC(sizeof(char) * 2);
pchValue[0] = _chValue;
pchValue[1] = '\0';
sciErr = createMatrixOfString(_pvApiCtx, Rhs + _iVarOut, 1, 1, &pchValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
FREE(pchValue);
return Rhs + _iVarOut;
}
}
/*
* CHAR *
*/
%fragment("SWIG_AsCharArray", "header", fragment = "SwigScilabStringToCharPtr") {
#define SWIG_AsCharArray(scilabValue, charPtrPointer, charPtrLength) SwigScilabStringToCharPtr(pvApiCtx, scilabValue, charPtrPointer, charPtrLength, fname)
}
%fragment("SWIG_AsCharPtrAndSize", "header", fragment = "SwigScilabStringToCharPtrAndSize") {
#define SWIG_AsCharPtrAndSize(scilabValue, charPtrPointer, charPtrLength, allocMemory) SwigScilabStringToCharPtrAndSize(pvApiCtx, scilabValue, charPtrPointer, charPtrLength, allocMemory, fname)
}
%fragment("SWIG_FromCharPtr", "header", fragment = "SwigScilabStringFromCharPtr") {
#define SWIG_FromCharPtr(charPtr) SwigScilabStringFromCharPtr(pvApiCtx, $result, charPtr)
}
%fragment("SWIG_FromCharPtrAndSize", "header", fragment = "SwigScilabStringFromCharPtrAndSize") {
#define SWIG_FromCharPtrAndSize(charPtr, charPtrLength) SwigScilabStringFromCharPtrAndSize(pvApiCtx, $result, charPtr)
}
%fragment("SwigScilabStringToCharPtr", "header") {
SWIGINTERN int
SwigScilabStringToCharPtr(void *_pvApiCtx, int _iVar, char *_pcValue, int _iLength, char *_fname) {
SciErr sciErr;
int iRows = 0;
int iCols = 0;
int iType = 0;
int *piAddrVar = NULL;
char *pstStrings = NULL;
int piLength = 0;
sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_strings) {
Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, NULL);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
pstStrings = (char *)MALLOC(sizeof(char) * (piLength + 1));
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, (char **)&pstStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
strcpy(_pcValue, pstStrings);
FREE(pstStrings);
return SWIG_OK;
}
}
%fragment("SwigScilabStringToCharPtrAndSize", "header") {
SWIGINTERN int
SwigScilabStringToCharPtrAndSize(void *_pvApiCtx, int _iVar, char **_pcValue, size_t *_piLength, int *alloc, char *_fname) {
SciErr sciErr;
int iRows = 0;
int iCols = 0;
int iType = 0;
int *piAddrVar = NULL;
char *_pstStrings = NULL;
int piLength = 0;
sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_strings) {
Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, NULL);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
_pstStrings = (char *)MALLOC(sizeof(char) * (piLength + 1));
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, (char **)&_pstStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (_pcValue != NULL) {
*_pcValue = strdup(_pstStrings);
}
FREE(_pstStrings);
if (_piLength != NULL) {
*_piLength = (size_t) piLength;
}
return SWIG_OK;
}
}
%fragment("SwigScilabStringFromCharPtr", "header") {
SWIGINTERN int
SwigScilabStringFromCharPtr(void *_pvApiCtx, int _iVarOut, const char *_pchValue) {
SciErr sciErr;
char **pstData = NULL;
pstData = (char **)MALLOC(sizeof(char *));
pstData[0] = strdup(_pchValue);
sciErr = createMatrixOfString(_pvApiCtx, Rhs + _iVarOut, 1, 1, (char **)pstData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
freeArrayOfString(pstData, 1);
return Rhs + _iVarOut;
}
}
%fragment("SwigScilabStringFromCharPtrAndSize", "header") {
SWIGINTERN int
SwigScilabStringFromCharPtrAndSize(void *_pvApiCtx, int _iVarOut, const char *_pchValue) {
SciErr sciErr;
char **pstData = NULL;
pstData = (char **)MALLOC(sizeof(char *));
pstData[0] = strdup(_pchValue);
sciErr = createMatrixOfString(_pvApiCtx, Rhs + _iVarOut, 1, 1, (char **)pstData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
FREE(pstData);
return Rhs + _iVarOut;
}
}

127
Lib/scilab/scidouble.swg Normal file
View file

@ -0,0 +1,127 @@
/*
* DOUBLE SCALAR
*/
%fragment(SWIG_AsVal_frag(double), "header", fragment="SwigScilabDoubleToDouble") {
#define SWIG_AsVal_double(scilabValue, valuePointer) SwigScilabDoubleToDouble(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment(SWIG_From_frag(double), "header", fragment="SwigScilabDoubleFromDouble") {
#define SWIG_From_double(value) SwigScilabDoubleFromDouble(pvApiCtx, $result, value)
}
%fragment("SwigScilabDoubleToDouble", "header") {
SWIGINTERN int
SwigScilabDoubleToDouble(void *_pvApiCtx, int _iVar, double *_pdblValue, char *_fname) {
SciErr sciErr;
int iRet = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (!isDoubleType(_pvApiCtx, piAddrVar) || isVarComplex(_pvApiCtx, piAddrVar)) {
Scierror(999, _("%s: Wrong type for input argument #%d: A real expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
if (!isScalar(_pvApiCtx, piAddrVar)) {
Scierror(999, _("%s: Wrong size for input argument #%d: A real expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
iRet = getScalarDouble(_pvApiCtx, piAddrVar, _pdblValue);
if (iRet) {
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SwigScilabDoubleFromDouble", "header") {
SWIGINTERN int
SwigScilabDoubleFromDouble(void *_pvApiCtx, int _iVarOut, double _dblValue) {
int iRet;
iRet = createScalarDouble(_pvApiCtx, Rhs + _iVarOut, _dblValue);
if (iRet) {
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* DOUBLE ARRAY
*/
%fragment("SwigScilabDoubleToDoubleArray", "header") {
SWIGINTERN int
SwigScilabDoubleToDoubleArray(void *_pvApiCtx, int _iVar, double **_pdblDoubleValue, char *_fname) {
SciErr sciErr;
int iRows = 0;
int iCols = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (isDoubleType(_pvApiCtx, piAddrVar) && !isVarComplex(_pvApiCtx, piAddrVar)) {
sciErr = getMatrixOfDouble(_pvApiCtx, piAddrVar, &iRows, &iCols, _pdblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
} else {
Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciDouble_AsDoubleArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciDouble_AsDoubleArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, double **_pdblDoubleValue, char *_fname) {
SciErr sciErr;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (isDoubleType(_pvApiCtx, piAddrVar) && !isVarComplex(_pvApiCtx, piAddrVar)) {
sciErr = getMatrixOfDouble(_pvApiCtx, piAddrVar, _iRows, _iCols, _pdblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
} else {
Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciDouble_FromDoubleArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciDouble_FromDoubleArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, double *_pdblValue) {
SciErr sciErr;
sciErr = createMatrixOfDouble(_pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _pdblValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

40
Lib/scilab/scifloat.swg Normal file
View file

@ -0,0 +1,40 @@
/*
* FLOAT SCALAR
*/
%fragment(SWIG_AsVal_frag(float), "header", fragment="SwigScilabDoubleToFloat") {
#define SWIG_AsVal_float(scilabValue, valuePointer) SwigScilabDoubleToFloat(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment(SWIG_From_frag(float), "header", fragment="SwigScilabDoubleFromFloat") {
#define SWIG_From_float(value) SwigScilabDoubleFromFloat(pvApiCtx, $result, value)
}
%fragment("SwigScilabDoubleToFloat", "header", fragment="SwigScilabDoubleToDouble") {
SWIGINTERN int
SwigScilabDoubleToFloat(void *_pvApiCtx, int _iVar, float *_pfValue, char *_fname) {
double dblValue = 0.0;
if(SwigScilabDoubleToDouble(_pvApiCtx, _iVar, &dblValue, _fname) != SWIG_OK) {
return SWIG_ERROR;
}
*_pfValue = (float) dblValue;
return SWIG_OK;
}
}
%fragment("SwigScilabDoubleFromFloat", "header") {
SWIGINTERN int
SwigScilabDoubleFromFloat(void *_pvApiCtx, int _iVarOut, float _flValue) {
SciErr sciErr;
double dblDoubleValue = (double) _flValue;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfDouble(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &dblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

106
Lib/scilab/sciint.swg Normal file
View file

@ -0,0 +1,106 @@
/*
* C-type: int
* Scilab type: double scalar
*/
%fragment(SWIG_AsVal_frag(int), "header", fragment="SWIG_SciDouble_AsInt") {
#define SWIG_AsVal_int(scilabValue, valuePointer) SWIG_SciDouble_AsInt(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment(SWIG_AsVal_frag(size_t), "header", fragment="SWIG_SciDouble_AsInt") {
#define SWIG_AsVal_size_t(scilabValue, valuePointer) SWIG_SciDouble_AsInt(pvApiCtx, scilabValue, (int*)valuePointer, fname)
}
%fragment("SWIG_SciDouble_AsInt", "header", fragment="SwigScilabDoubleToDouble") {
SWIGINTERN int
SWIG_SciDouble_AsInt(void *_pvApiCtx, int _iVar, int *_piValue, char *_fname) {
double dblValue = 0.0;
if(SwigScilabDoubleToDouble(_pvApiCtx, _iVar, &dblValue, _fname) != SWIG_OK) {
return SWIG_ERROR;
}
*_piValue = (int) dblValue;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(int), "header", fragment="SWIG_SciDouble_FromInt") {
#define SWIG_From_int(value) SWIG_SciDouble_FromInt(pvApiCtx, $result, value)
}
%fragment(SWIG_From_frag(size_t), "header", fragment="SWIG_SciDouble_FromInt") {
#define SWIG_From_size_t(value) SWIG_SciDouble_FromInt(pvApiCtx, $result, (int)value)
}
%fragment("SWIG_SciDouble_FromInt", "header") {
SWIGINTERN int
SWIG_SciDouble_FromInt(void *_pvApiCtx, int _iVarOut, int _iValue) {
SciErr sciErr;
double dblDoubleValue = (double) _iValue;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfDouble(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &dblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: int[ANY]
* Scilab type: int32 vector
*/
%fragment("SWIG_SciInt32_AsIntArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt32_AsIntArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, int **_piValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit signed integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_INT32) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit signed integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfInteger32(_pvApiCtx, piAddrVar, _iRows, _iCols, _piValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciInt32_FromIntArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt32_FromIntArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, const int *_piData) {
SciErr sciErr;
sciErr = createMatrixOfInteger32(_pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _piData);
if(sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

83
Lib/scilab/scilong.swg Normal file
View file

@ -0,0 +1,83 @@
/*
* C-type: long
* Scilab type: double scalar
*/
%fragment(SWIG_AsVal_frag(long), "header", fragment="SwigScilabDoubleToLong") {
#define SWIG_AsVal_long(scilabValue, valuePointer) SwigScilabDoubleToLong(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment(SWIG_From_frag(long), "header", fragment="SwigScilabDoubleFromLong") {
#define SWIG_From_long(value) SwigScilabDoubleFromLong(pvApiCtx, $result, value)
}
/*
* C-type: unsigned long
* Scilab type: double scalar
*/
%fragment(SWIG_AsVal_frag(unsigned long), "header", fragment="SwigScilabDoubleToUnsignedLong") {
#define SWIG_AsVal_unsigned_SS_long(scilabValue, valuePointer) SwigScilabDoubleToUnsignedLong(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment(SWIG_From_frag(unsigned long), "header", fragment="SwigScilabDoubleFromUnsignedLong") {
#define SWIG_From_unsigned_SS_long(value) SwigScilabDoubleFromUnsignedLong(pvApiCtx, $result, value)
}
%fragment("SwigScilabDoubleToLong", "header", fragment="SwigScilabDoubleToDouble") {
SWIGINTERN int
SwigScilabDoubleToLong(void *_pvApiCtx, int _iVar, long *_plValue, char *_fname) {
double dblValue = 0.0;
if(SwigScilabDoubleToDouble(_pvApiCtx, _iVar, &dblValue, _fname) != SWIG_OK) {
return SWIG_ERROR;
}
*_plValue = (long) dblValue;
return SWIG_OK;
}
}
%fragment("SwigScilabDoubleToUnsignedLong", "header", fragment="SwigScilabDoubleToDouble") {
SWIGINTERN int
SwigScilabDoubleToUnsignedLong(void *_pvApiCtx, int _iVar, unsigned long *_pulValue, char *_fname) {
double dblValue = 0.0;
if(SwigScilabDoubleToDouble(_pvApiCtx, _iVar, &dblValue, _fname) != SWIG_OK) {
return SWIG_ERROR;
}
*_pulValue = (unsigned long) dblValue;
return SWIG_OK;
}
}
%fragment("SwigScilabDoubleFromLong", "header") {
SWIGINTERN int
SwigScilabDoubleFromLong(void *_pvApiCtx, int _iVarOut, long _lValue) {
SciErr sciErr;
double dblDoubleValue = (double) _lValue;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfDouble(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &dblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
%fragment("SwigScilabDoubleFromUnsignedLong", "header") {
SWIGINTERN int
SwigScilabDoubleFromUnsignedLong(void *_pvApiCtx, int _iVarOut, unsigned long _ulValue) {
SciErr sciErr;
double dblDoubleValue = (double) _ulValue;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfDouble(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &dblDoubleValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

View file

@ -0,0 +1,54 @@
/*
* C-type: long
* Scilab 5 type: NONE
* Scilab 6 type: int64
*/
%fragment(SWIG_AsVal_frag(long long), "header", fragment="SWIG_SciInt64_ToLongLong") {
#define SWIG_AsVal_long_SS_long(scilabValue, valuePointer) SWIG_SciInt64_ToLongLong(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciInt64_ToLongLong", "header") {
SWIGINTERN int
SWIG_SciInt64_ToLongLong(void *_pvApiCtx, int _iVar, long long *_pllValue, char *_fname) {
Scierror(999, _("%s: Scilab 5.X does not manage '%s' data type.\n"), "SWIG_SciInt64_ToLongLong", "int64");
return SWIG_ERROR;
}
}
%fragment(SWIG_From_frag(long long), "header", fragment="SWIG_SciInt64_FromLongLong") {
#define SWIG_From_long_SS_long(value) SWIG_SciInt64_FromLongLong(pvApiCtx, $result, value)
}
%fragment("SWIG_SciInt64_FromLongLong", "header") {
SWIGINTERN int
SWIG_SciInt64_FromLongLong(void *_pvApiCtx, int _iVarOut, long long _llValue) {
Scierror(999, _("%s: Scilab 5.X does not manage '%s' data type.\n"), "SWIG_SciInt64_ToLongLong", "int64");
return SWIG_ERROR;
}
}
/*
* C-type: unsigned long long
* Scilab 5 type: NONE
* Scilab 6 type: uint64
*/
%fragment(SWIG_AsVal_frag(unsigned long long), "header", fragment="SWIG_SciUint64_ToUnsignedLongLong") {
#define SWIG_AsVal_unsigned_SS_long_SS_long(scilabValue, valuePointer) SWIG_SciUint64_ToUnsignedLongLong(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciUint64_ToUnsignedLongLong", "header") {
SWIGINTERN int
SWIG_SciUint64_ToUnsignedLongLong(void *_pvApiCtx, int _iVar, unsigned long long *_pullValue, char *_fname) {
Scierror(999, _("%s: Scilab 5.X does not manage '%s' data type.\n"), "SWIG_SciUint64_ToLongLong", "uint64");
return SWIG_ERROR;
}
}
%fragment(SWIG_From_frag(unsigned long long), "header", fragment="SWIG_SciUint64_FromUnsignedLongLong") {
#define SWIG_From_unsigned_SS_long_SS_long(value) SWIG_SciUint64_FromUnsignedLongLong(pvApiCtx, $result, value)
}
%fragment("SWIG_SciUint64_FromUnsignedLongLong", "header") {
SWIGINTERN int
SWIG_SciUint64_FromUnsignedLongLong(void *_pvApiCtx, int _iVarOut, unsigned long long _llValue) {
Scierror(999, _("%s: Scilab 5.X does not manage '%s' data type.\n"), "SWIG_SciUint64_ToLongLong", "uint64");
return SWIG_ERROR;
}
}

32
Lib/scilab/scipointer.swg Normal file
View file

@ -0,0 +1,32 @@
/*
* POINTER
*/
%fragment("SWIG_ConvertPtr", "header") {
#define SWIG_ConvertPtr(scilabValue, voidPointer, pointerDescriptor, flags) SwigScilabPtrToObject(pvApiCtx, scilabValue, voidPointer, pointerDescriptor, flags, fname)
}
%fragment("SWIG_NewPointerObj", "header") {
#define SWIG_NewPointerObj(pointer, pointerDescriptor, flags) SwigScilabPtrFromObject(pvApiCtx, $result, pointer, pointerDescriptor, flags)
}
/*
* FUNCTION POINTER
*/
%fragment("SWIG_ConvertFunctionPtr", "header") {
#define SWIG_ConvertFunctionPtr(scilabValue, voidPointer, pointerDescriptor) SwigScilabPtrToObject(pvApiCtx, scilabValue, voidPointer, pointerDescriptor, 0, fname)
}
%fragment("SWIG_NewFunctionPtrObj", "header") {
#define SWIG_NewFunctionPtrObj(pointer, pointerDescriptor) SwigScilabPtrFromObject(pvApiCtx, $result, pointer, pointerDescriptor, 0)
}
// No fragment used here, the functions "SwigScilabPtrToObject" and "SwigScilabPtrFromObject" are defined in sciruntime.swg
/*
* C++ member pointers, ie, member methods
*/
%fragment("SWIG_NewMemberObj", "header") {
#define SWIG_NewMemberObj(ptr, sz, tp) SWIG_Scilab_NewMemberObj(pvApiCtx, $result, ptr, sz, tp)
}
%fragment("SWIG_ConvertMember", "header") {
#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Scilab_ConvertPacked(pvApiCtx, obj, ptr, sz, ty, fname)
}

View file

@ -1,183 +1,75 @@
%fragment("SWIG_AsCharPtrAndSize","header") { %include <scidouble.swg>
%include <scilong.swg>
%include <scifloat.swg>
%include <scilonglong.swg>
%include <sciint.swg>
%include <sciunsignedint.swg>
%include <scishort.swg>
%include <sciunsignedshort.swg>
%include <scichar.swg>
%include <scisignedchar.swg>
%include <sciunsignedchar.swg>
%include <scipointer.swg>
%include <scibool.swg>
%fragment("SwigScilabInt32ToEnum", "header") {
SWIGINTERN int SWIGINTERN int
SWIG_AsCharPtrAndSize(int iPos, char** cptr, size_t* psize, int *alloc) SwigScilabInt32ToEnum(void *_pvApiCtx, int _iVar, int *_enumValue, char* _fname) {
{
SciErr sciErr;
int iType = 0;
int *piAddrVar = NULL;
char *_pstStrings = NULL;
int _piLength = 0;
int iCols = 0;
int iRows = 0;
sciErr = getVarAddressFromPosition(pvApiCtx, iPos, &piAddrVar);
if (sciErr.iErr)
{
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr || iType != sci_strings)
{
Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "SWIG_AsCharPtrAndSize", iPos);
printError(&sciErr, 0);
return SWIG_TypeError;
}
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &_piLength, NULL);
if (sciErr.iErr || iRows * iCols != 1)
{
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), "SWIG_AsCharPtrAndSize", iPos);
printError(&sciErr, 0);
return SWIG_TypeError;
}
_pstStrings = (char *)malloc(sizeof(char) * _piLength + 1);
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &_piLength, (char**)&_pstStrings);
if (sciErr.iErr)
{
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (cptr)
{
*cptr = _pstStrings;
}
if (psize)
{
*psize = _piLength + 1;
}
if (alloc)
{
*alloc = SWIG_OLDOBJ;
}
return SWIG_OK;
}
}
%fragment("SWIG_FromCharPtrAndSize","header") {
SWIGINTERNINLINE int
SWIG_FromCharPtrAndSize(const char* carray, size_t size)
{
SciErr sciErr;
int iVarOut = Rhs + 1; // TODO is this always true?
sciErr = createMatrixOfString(pvApiCtx, iVarOut, 1, 1, (char **)&carray);
if (sciErr.iErr)
{
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment(SWIG_AsVal_frag(long),"header") {
SWIGINTERN int SWIG_AsVal_dec(long)(int iPos, long* val)
{
SciErr sciErr; SciErr sciErr;
int iPrec = 0;
int iRows = 1; int iRows = 1;
int iCols = 1; int iCols = 1;
int iType = 0;
int *piAddrVar = NULL; int *piAddrVar = NULL;
double* piData = NULL; int *piData = NULL;
double v = 0.0;
sciErr = getVarAddressFromPosition(pvApiCtx, iPos, &piAddrVar); sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) if (sciErr.iErr) {
{
printError(&sciErr, 0); printError(&sciErr, 0);
return SWIG_TypeError;
}
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr)
{
printError(&sciErr, 0);
return SWIG_TypeError;
}
if (iType != sci_matrix)
{
return SWIG_TypeError;
}
if (isVarComplex(pvApiCtx, piAddrVar))
{
return SWIG_TypeError;
}
sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, (double **)&piData);
if (sciErr.iErr)
{
printError(&sciErr, 0);
return SWIG_TypeError;
}
if (iRows * iCols != 1)
{
return SWIG_TypeError;
}
v = piData[0];
if (v != floor(v))
{
return SWIG_TypeError;
}
if (val != NULL)
{
*val = (long) piData[0];
}
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(long),"header") {
SWIGINTERNINLINE int SWIG_From_dec(long) (long value)
{
double dblValue = (double) value;
if (createScalarDouble(pvApiCtx, Rhs + 1, dblValue) == 0)
{
return SWIG_OK;
}
return SWIG_ERROR; return SWIG_ERROR;
} }
sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_INT32) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
} }
/*%fragment(SWIG_AsPtr_frag(std::string),"header") { sciErr = getMatrixOfInteger32(pvApiCtx, piAddrVar, &iRows, &iCols, &piData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
*_enumValue = (int)piData[0];
return SWIG_OK;
}
}
%fragment("SwigScilabInt32FromEnum", "header") {
SWIGINTERN int SWIGINTERN int
SWIG_AsPtr_std_string(int iPos, std::string **val) SwigScilabInt32FromEnum(void *_pvApiCtx, int _iVarOut, int _enumValue) {
{ SciErr sciErr;
char* buf = 0; int iRowsOut = 1;
size_t size = 0; int iColsOut = 1;
int alloc = SWIG_OLDOBJ;
if (SWIG_IsOK((SWIG_AsCharPtrAndSize(iPos, &buf, &size, &alloc)))) sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &_enumValue);
{ if (sciErr.iErr) {
if (buf) printError(&sciErr, 0);
{
if (val)
{
*val = new std::string(buf, size - 1);
}
if (alloc == SWIG_NEWOBJ)
{
delete[] buf;
}
return SWIG_NEWOBJ;
}
else
{
if (val)
{
*val = 0;
}
return SWIG_OLDOBJ;
}
}
else
{
return SWIG_ERROR; return SWIG_ERROR;
} }
LhsVar(_iVarOut) = Rhs + _iVarOut;
return SWIG_OK;
}
} }
}*/

View file

@ -1,81 +1,178 @@
%insert(runtime) "swigrun.swg"; %insert(runtime) "swigrun.swg";
%insert(runtime) "swigerrors.swg"; %insert(runtime) "swigerrors.swg";
// Error message will be displayed inside Scilab fragment functions
// and the following line Will not work because code is not an int
//#define SWIG_Error(code, msg) Scierror(code, _("%s\n"), msg);
%insert(runtime) %{ %insert(runtime) %{
/* Scilab standard headers */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include "stack-c.h"
#include "MALLOC.h" #include "MALLOC.h"
#include "sciprint.h"
/* Typedefs for integers mapping */ #include "Scierror.h"
typedef short SCI_INT16_FROM_SHORT; #include "api_scilab.h"
typedef signed short SCI_INT16_FROM_SIGNED_SHORT; #include "localization.h"
typedef int SCI_INT32_FROM_INT; #include "freeArrayOfString.h"
typedef long SCI_INT32_FROM_LONG;
typedef signed int SCI_INT32_FROM_SIGNED_INT;
typedef signed long SCI_INT32_FROM_SIGNED_LONG;
void SWIG_Error(int code, const char *msg)
{
Scierror(code, _("%s\n"), msg);
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(999, msg); } else #undef Max
#define SWIG_fail return 0 #undef Min
#define SWIG_ConvertPtr(obj, vptr, descriptor, flags) SWIG_Scilab_ConvertPtr(pvApiCtx, obj, vptr, descriptor, flags) #define SWIG_fail return SWIG_ERROR;
#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Scilab_NewPointerObj(pvApiCtx, iVarOut, ptr, type, flags) #define SWIG_Error return SWIG_ERROR;
/* Convert a pointer value */ /* Used for C++ enums */
SWIGRUNTIMEINLINE int #define SWIG_AsVal_int(scilabValue, valuePointer) SWIG_SciDouble_AsInt(pvApiCtx, scilabValue, valuePointer, fname)
SWIG_Scilab_ConvertPtr(StrCtx* pvApiCtx, int obj, void **ptr, swig_type_info* descriptor, int flags) {
SWIGINTERN int
SwigScilabPtrToObject(void *_pvApiCtx, int _iVar, void **_pObjValue, swig_type_info *_descriptor, int _flags, char *_fname) {
SciErr sciErr; SciErr sciErr;
int* piAddrVar = NULL;
int iType = 0; int iType = 0;
void *_piData = NULL; int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar); sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) if (sciErr.iErr) {
{ printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_pointer) {
//Scierror(999, _("%s: Wrong type for input argument #%d: A pointer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getPointer(_pvApiCtx, piAddrVar, _pObjValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
SWIGRUNTIMEINLINE int
SwigScilabPtrFromObject(void *_pvApiCtx, int _iVarOut, void *_object, swig_type_info *_descriptor, int _flags) {
SciErr sciErr;
sciErr = createPointer(pvApiCtx, Rhs + _iVarOut, (void *)_object);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
SWIGRUNTIME int
SWIG_Scilab_ConvertPacked(void *_pvApiCtx, int _iVar, void *_ptr, int sz, swig_type_info *ty, char *_fname) {
swig_cast_info *tc;
SciErr sciErr;
int iRows = 0;
int iCols = 0;
int iType = 0;
int *piAddrVar = NULL;
char *pstStrings = NULL;
int piLength = 0;
sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0); printError(&sciErr, 0);
return SWIG_ERROR; return SWIG_ERROR;
} }
sciErr = getVarType(pvApiCtx, piAddrVar, &iType); sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) if (sciErr.iErr) {
{
printError(&sciErr, 0); printError(&sciErr, 0);
return SWIG_ERROR; return SWIG_ERROR;
} }
if (iType != sci_pointer) if (iType != sci_strings) {
{ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), _fname, _iVar);
Scierror(999, _("%s: Wrong type for input argument #%d: Pointer expected.\n"), "SWIG_Scilab_ConvertPtr", obj);
return SWIG_ERROR; return SWIG_ERROR;
} }
sciErr = getPointer(pvApiCtx, piAddrVar, ptr); sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, NULL);
if (sciErr.iErr) if (sciErr.iErr) {
{
printError(&sciErr, 0); printError(&sciErr, 0);
return SWIG_ERROR; return SWIG_ERROR;
} }
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
pstStrings = (char *)MALLOC(sizeof(char) * (piLength + 1));
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, (char **)&pstStrings);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
/* Pointer values must start with leading underscore */
if (*pstStrings != '_') {
return SWIG_ERROR;
}
pstStrings++;
pstStrings = (char*)SWIG_UnpackData(pstStrings, _ptr, sz);
if (ty) {
tc = SWIG_TypeCheck(pstStrings, ty);
if (!tc) {
return SWIG_ERROR;
}
}
FREE(pstStrings);
return SWIG_OK; return SWIG_OK;
} }
/* Create a new pointer object */ SWIGRUNTIME int
SWIGRUNTIMEINLINE int SWIG_Scilab_NewMemberObj(void *_pvApiCtx, int _iVarOut, void *_ptr, int _sz, swig_type_info *_type) {
SWIG_Scilab_NewPointerObj(StrCtx* pvApiCtx, int iVarOut, void *ptr, swig_type_info *type, int flags) { char result[1024];
char *r = result;
SciErr sciErr; SciErr sciErr;
sciErr = createPointer(pvApiCtx, iVarOut, (void *)ptr); char **pstData = NULL;
if (sciErr.iErr) if ((2*_sz + 1 + strlen(_type->name)) > 1000) {
{ return SWIG_ERROR;
printError(&sciErr, 0);
return 0;
} }
return iVarOut; *(r++) = '_';
r = SWIG_PackData(r, _ptr, _sz);
strcpy(r, _type->name);
pstData = (char **)MALLOC(sizeof(char *));
pstData[0] = strdup(r);
sciErr = createMatrixOfString(_pvApiCtx, Rhs + _iVarOut, 1, 1, (char **)pstData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
} }
freeArrayOfString(pstData, 1);
return Rhs + _iVarOut;
}
#define SwigScilabSetOutput(outputNumber, outputPosition)\
{\
/* Create a temporary variable to avoid calling function given as outputPosition two times */\
int stackPosition = outputPosition;\
if (stackPosition < 0) {\
return SWIG_ERROR;\
}\
LhsVar(outputNumber) = stackPosition;\
return SWIG_OK; \
}
#define SwigScilabRaise(OBJ, TYPE, DESC) Scierror(999, "C++ side threw an exception of type %s.\n", TYPE)
%} %}

97
Lib/scilab/scishort.swg Normal file
View file

@ -0,0 +1,97 @@
/*
* C-type: short
* Scilab type: double scalar
*/
%fragment(SWIG_AsVal_frag(short), "header", fragment="SWIG_SciDouble_AsShort") {
#define SWIG_AsVal_short(scilabValue, valuePointer) SWIG_SciDouble_AsShort(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciDouble_AsShort", "header", fragment="SWIG_SciDouble_AsInt") {
SWIGINTERN int
SWIG_SciDouble_AsShort(void *_pvApiCtx, int _iVar, short *_pshValue, char *_fname) {
int iValue = 0.0;
if(SWIG_SciDouble_AsInt(_pvApiCtx, _iVar, &iValue, _fname) != SWIG_OK) {
return SWIG_ERROR;
}
*_pshValue = (short) iValue;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(short), "header", fragment="SWIG_SciDouble_FromShort") {
#define SWIG_From_short(value) SWIG_SciDouble_FromShort(pvApiCtx, $result, value)
}
%fragment("SWIG_SciDouble_FromShort", "header", fragment="SWIG_SciDouble_FromInt") {
SWIGINTERN int
SWIG_SciDouble_FromShort(void *_pvApiCtx, int _iVarOut, short _shValue) {
int iValue = (int) _shValue;
return SWIG_SciDouble_FromInt(pvApiCtx, _iVarOut, iValue);
}
}
/*
* C-type: short[]
* Scilab type: int16 vector
* See in scitypemaps.swg
*/
/*
* C-type: short[ANY]
* Scilab type: int16 vector
*/
%fragment("SWIG_SciInt16_AsShortArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt16_AsShortArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, short **_psValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit signed integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_INT16) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit signed integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfInteger16(_pvApiCtx, piAddrVar, _iRows, _iCols, _psValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciInt16_FromShortArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt16_FromShortArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, short *_psValue) {
SciErr sciErr;
sciErr = createMatrixOfInteger16(_pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _psValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

View file

@ -0,0 +1,141 @@
/*
* C-type: signed char
* Scilab type: int8 scalar
*/
%fragment(SWIG_AsVal_frag(signed char), "header", fragment="SwigScilabInt8ToSignedChar") {
#define SWIG_AsVal_signed_SS_char(scilabValue, valuePointer) SwigScilabInt8ToSignedChar(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SwigScilabInt8ToSignedChar", "header") {
SWIGINTERN int
SwigScilabInt8ToSignedChar(void *_pvApiCtx, int _iVar, signed char *_pscValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int iPrec = 0;
int *piAddrVar = NULL;
char *pcData = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_INT8) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfInteger8(_pvApiCtx, piAddrVar, &iRows, &iCols, &pcData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A 8-bit integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
*_pscValue = *pcData;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(signed char), "header", fragment="SwigScilabInt8FromSignedChar") {
#define SWIG_From_signed_SS_char(value) SwigScilabInt8FromSignedChar(pvApiCtx, $result, value)
}
%fragment("SwigScilabInt8FromSignedChar", "header") {
SWIGINTERN int
SwigScilabInt8FromSignedChar(void *_pvApiCtx, int _iVarOut, signed char _scValue) {
SciErr sciErr;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfInteger8(pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, (char *)&_scValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: signed char[]
* Scilab type: int8 vector
*/
%fragment("SWIG_SciInt8_AsSignedCharArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt8_AsSignedCharArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, signed char **_pscValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_INT8) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfInteger8(_pvApiCtx, piAddrVar, _iRows, _iCols, (char **)_pscValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciInt8_FromSignedCharArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciInt8_FromSignedCharArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, const signed char *_pscValue) {
SciErr sciErr;
sciErr = createMatrixOfInteger8(pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, (const char *)_pscValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,141 @@
/*
* C-type: unsigned char
* Scilab type: uint8 scalar
*/
%fragment(SWIG_AsVal_frag(unsigned char), "header", fragment="SWIG_SciUint8_AsUnsignedChar") {
#define SWIG_AsVal_unsigned_SS_char(scilabValue, valuePointer) SWIG_SciUint8_AsUnsignedChar(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciUint8_AsUnsignedChar", "header") {
SWIGINTERN int
SWIG_SciUint8_AsUnsignedChar(void *_pvApiCtx, int _iVar, unsigned char *_pucValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int iPrec = 0;
int *piAddrVar = NULL;
unsigned char *pucData = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT8) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger8(_pvApiCtx, piAddrVar, &iRows, &iCols, &pucData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A 8-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
*_pucValue = *pucData;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(unsigned char), "header", fragment="SWIG_SciUint8_FromUnsignedChar") {
#define SWIG_From_unsigned_SS_char(value) SWIG_SciUint8_FromUnsignedChar(pvApiCtx, $result, value)
}
%fragment("SWIG_SciUint8_FromUnsignedChar", "header") {
SWIGINTERN int
SWIG_SciUint8_FromUnsignedChar(void *_pvApiCtx, int _iVarOut, unsigned char _ucValue) {
SciErr sciErr;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfUnsignedInteger8(pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &_ucValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: unsigned char[]
* Scilab type: uint8 vector
*/
%fragment("SWIG_SciUint8_AsUnsignedCharArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint8_AsUnsignedCharArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, unsigned char **_pucValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT8) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 8-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger8(_pvApiCtx, piAddrVar, _iRows, _iCols, _pucValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciUint8_FromUnsignedCharArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint8_FromUnsignedCharArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, const unsigned char *_puscValue) {
SciErr sciErr;
sciErr = createMatrixOfUnsignedInteger8(pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _puscValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

View file

@ -0,0 +1,141 @@
/*
* C-type: unsigned int
* Scilab type: uint32 scalar
*/
%fragment(SWIG_AsVal_frag(unsigned int), "header", fragment="SwigScilabUint32ToUnsignedInt") {
#define SWIG_AsVal_unsigned_SS_int(scilabValue, valuePointer) SwigScilabUint32ToUnsignedInt(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SwigScilabUint32ToUnsignedInt", "header") {
SWIGINTERN int
SwigScilabUint32ToUnsignedInt(void *_pvApiCtx, int _iVar, unsigned int *_puiValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int iPrec = 0;
int *piAddrVar = NULL;
unsigned int *puiData = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT32) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger32(_pvApiCtx, piAddrVar, &iRows, &iCols, &puiData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A 32-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
*_puiValue = *puiData;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(unsigned int), "header", fragment="SwigScilabUint32FromUnsignedInt") {
#define SWIG_From_unsigned_SS_int(value) SwigScilabUint32FromUnsignedInt(pvApiCtx, $result, value)
}
%fragment("SwigScilabUint32FromUnsignedInt", "header") {
SWIGINTERN int
SwigScilabUint32FromUnsignedInt(void *_pvApiCtx, int _iVarOut, unsigned int _uiValue) {
SciErr sciErr;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfUnsignedInteger32(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &_uiValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: unsigned int[]
* Scilab type: uint32 vector
*/
%fragment("SWIG_SciUint32_AsUnsignedIntArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint32_AsUnsignedIntArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, unsigned int **_puiValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT32) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger32(_pvApiCtx, piAddrVar, _iRows, _iCols, _puiValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciUint32_FromUnsignedIntArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint32_FromUnsignedIntArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, unsigned int *_puiValue) {
SciErr sciErr;
sciErr = createMatrixOfUnsignedInteger32(_pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _puiValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

View file

@ -0,0 +1,141 @@
/*
* C-type: unsigned short
* Scilab type: uint16 scalar
*/
%fragment(SWIG_AsVal_frag(unsigned short), "header", fragment="SWIG_SciUint16_AsUnsignedShort") {
#define SWIG_AsVal_unsigned_SS_short(scilabValue, valuePointer) SWIG_SciUint16_AsUnsignedShort(pvApiCtx, scilabValue, valuePointer, fname)
}
%fragment("SWIG_SciUint16_AsUnsignedShort", "header") {
SWIGINTERN int
SWIG_SciUint16_AsUnsignedShort(void *_pvApiCtx, int _iVar, unsigned short *_pusValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int iPrec = 0;
int *piAddrVar = NULL;
unsigned short *pusData = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT16) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger16(_pvApiCtx, piAddrVar, &iRows, &iCols, &pusData);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A 32-bit unsigned integer expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
*_pusValue = *pusData;
return SWIG_OK;
}
}
%fragment(SWIG_From_frag(unsigned short), "header", fragment="SWIG_SciUint16_FromUnsignedShort") {
#define SWIG_From_unsigned_SS_short(value) SWIG_SciUint16_FromUnsignedShort(pvApiCtx, $result, value)
}
%fragment("SWIG_SciUint16_FromUnsignedShort", "header") {
SWIGINTERN int
SWIG_SciUint16_FromUnsignedShort(void *_pvApiCtx, int _iVarOut, unsigned short _usValue) {
SciErr sciErr;
int iRowsOut = 1;
int iColsOut = 1;
sciErr = createMatrixOfUnsignedInteger16(_pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &_usValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}
/*
* C-type: unsigned short[]
* Scilab type: uint16 vector
*/
%fragment("SWIG_SciUint16_AsUnsignedShortArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint16_AsUnsignedShortArrayAndSize(void *_pvApiCtx, int _iVar, int *_iRows, int *_iCols, unsigned short **_pusValue, char *_fname) {
SciErr sciErr;
int iType = 0;
int iPrec = 0;
int *piAddrVar = NULL;
sciErr = getVarAddressFromPosition(_pvApiCtx, _iVar, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
sciErr = getVarType(_pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iType != sci_ints) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfIntegerPrecision(_pvApiCtx, piAddrVar, &iPrec);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
if (iPrec != SCI_UINT16) {
Scierror(999, _("%s: Wrong type for input argument #%d: A 16-bit unsigned integer vector expected.\n"), _fname, _iVar);
return SWIG_ERROR;
}
sciErr = getMatrixOfUnsignedInteger16(_pvApiCtx, piAddrVar, _iRows, _iCols, _pusValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return SWIG_OK;
}
}
%fragment("SWIG_SciUint16_FromUnsignedShortArrayAndSize", "header") {
SWIGINTERN int
SWIG_SciUint16_FromUnsignedShortArrayAndSize(void *_pvApiCtx, int _iVarOut, int _iRows, int _iCols, unsigned short *_pusValue) {
SciErr sciErr;
sciErr = createMatrixOfUnsignedInteger16(_pvApiCtx, Rhs + _iVarOut, _iRows, _iCols, _pusValue);
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
}
return Rhs + _iVarOut;
}
}

2
Lib/scilab/std_alloc.i Normal file
View file

@ -0,0 +1,2 @@
%include <std/std_alloc.i>

2
Lib/scilab/std_common.i Normal file
View file

@ -0,0 +1,2 @@
%include <std/std_common.i>

View file

@ -0,0 +1,2 @@
%include <std/std_container.i>

View file

@ -1 +1,47 @@
/*
* POINTER
*/
%fragment(SWIG_AsPtr_frag(std::string), "header", fragment="SwigScilabStringToString") {
#define SWIG_AsPtr_std_string(scilabValue, stringPointer) SwigScilabStringToString(pvApiCtx, scilabValue, stringPointer, fname)
}
%fragment(SWIG_From_frag(std::string), "header", fragment="SwigScilabStringFromString") {
#define SWIG_From_std_string(stringPointer) SwigScilabStringFromString(pvApiCtx, $result, stringPointer)
}
%fragment("SwigScilabStringToString", "header", fragment="SwigScilabStringToCharPtrAndSize") {
SWIGINTERN int
SwigScilabStringToString(void *_pvApiCtx, int _iVar, std::string **_pstValue, char *_fname) {
char* buf = 0;
size_t size = 0;
int alloc = SWIG_OLDOBJ;
if (SWIG_IsOK((SwigScilabStringToCharPtrAndSize(_pvApiCtx, _iVar, &buf, &size, &alloc, _fname)))) {
if (buf) {
if (_pstValue) {
*_pstValue = new std::string(buf, size);
}
if (alloc == SWIG_NEWOBJ) {
delete[] buf;
}
return SWIG_NEWOBJ;
} else {
if (_pstValue) {
*_pstValue = NULL;
}
return SWIG_OLDOBJ;
}
} else {
return SWIG_ERROR;
}
}
}
%fragment("SwigScilabStringFromString", "header", fragment="SwigScilabStringFromCharPtrAndSize") {
SWIGINTERN int
SwigScilabStringFromString(void *_pvApiCtx, int _iVarOut, std::string _pstValue) {
return SwigScilabStringFromCharPtrAndSize(_pvApiCtx, _iVarOut, _pstValue.c_str());
}
}
%include <typemaps/std_string.swg> %include <typemaps/std_string.swg>

View file

@ -1,10 +1,8 @@
%fragment("StdVectorTraits","header") %fragment(SWIG_AsVal_frag(std::vector< int >), "header") {
%{ #define SWIG_AsPtr_std_vector(scilabValue, stringPointer) SwigScilabStringToString(pvApiCtx, scilabValue, stringPointer, fname)
%} }
#define %swig_vector_methods(Type...) %swig_sequence_methods(Type)
#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type);
//#define %swig_vector_methods(Type...) %swig_sequence_methods(Type)
//#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type);
%include <std/std_vector.i> %include <std/std_vector.i>

View file

@ -49,43 +49,30 @@ or you can use the %apply directive :
double fadd(double *a, double *b); double fadd(double *a, double *b);
*/ */
%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsInt") int *INPUT(int temp), int &INPUT(int temp) {
%typemap(in) signed char *INPUT (int *piAddrVar, int iRows, int iCols, signed char temp), if (SWIG_SciDouble_AsInt(pvApiCtx, $input, &temp, fname) != SWIG_OK) {
unsigned char *INPUT (int *piAddrVar, int iRows, int iCols, unsigned char temp), SWIG_fail;
short *INPUT (int *piAddrVar, int iRows, int iCols, short temp),
unsigned short *INPUT (int *piAddrVar, int iRows, int iCols, unsigned short temp),
int *INPUT (int *piAddrVar, int iRows, int iCols, int temp),
unsigned int *INPUT (int *piAddrVar, int iRows, int iCols, unsigned int temp),
long *INPUT (int *piAddrVar, int iRows, int iCols, long temp),
unsigned long *INPUT (int *piAddrVar, int iRows, int iCols, unsigned long temp),
float *INPUT (int *piAddrVar, int iRows, int iCols, float temp),
double *INPUT (int *piAddrVar, int iRows, int iCols, double temp) {
int iType;
double *_piData;
int typearg;
sciErr = getVarAddressFromPosition(pvApiCtx, $input, &piAddrVar);
if (sciErr.iErr) {
printError(&sciErr, 0);
return 0;
} }
sciErr = getVarType(pvApiCtx, piAddrVar, &iType);
if (sciErr.iErr || iType != sci_matrix) {
Scierror(999, _("%s: Wrong type for input argument #%d: A real expected.\n"), fname, $argnum);
printError(&sciErr, 0);
return 0;
}
sciErr = getMatrixOfDouble(pvApiCtx, piAddrVar, &iRows, &iCols, &_piData);
if (sciErr.iErr || iRows * iCols != 1) {
Scierror(999, _("%s: Wrong size for input argument #%d: A real expected.\n"), fname, $argnum);
printError(&sciErr, 0);
return 0;
}
temp = ($*1_ltype)*_piData;
$1 = &temp; $1 = &temp;
} }
#undef INPUT_TYPEMAP //short *INPUT
//long *INPUT
//long long *INPUT
//unsigned int *INPUT
//unsigned short *INPUT
//unsigned long *INPUT
//unsigned long long *INPUT
//unsigned char *INPUT
//bool *INPUT
//float *INPUT
%typemap(in, noblock=1, fragment="SWIG_SciDouble_AsDouble") double *INPUT(double temp), double &INPUT(double temp) {
if (SWIG_SciDouble_AsDouble(pvApiCtx, $input, &temp, fname) != SWIG_OK) {
SWIG_fail;
}
$1 = &temp;
}
// OUTPUT typemaps. These typemaps are used for parameters that // OUTPUT typemaps. These typemaps are used for parameters that
// are output only. The output value is appended to the result as // are output only. The output value is appended to the result as
@ -95,7 +82,7 @@ or you can use the %apply directive :
The following methods can be applied to turn a pointer into an "output" The following methods can be applied to turn a pointer into an "output"
value. When calling a function, no input value would be given for value. When calling a function, no input value would be given for
a parameter, but an output value would be returned. In the case of a parameter, but an output value would be returned. In the case of
multiple output values, functions will return a Perl array. multiple output values, functions will return a Scilab array.
int *OUTPUT int *OUTPUT
short *OUTPUT short *OUTPUT
@ -127,83 +114,28 @@ or you can use the %apply directive :
%apply double *OUTPUT { double *ip }; %apply double *OUTPUT { double *ip };
double modf(double x, double *ip); double modf(double x, double *ip);
The Perl output of the function would be an array containing both The Scilab output of the function would be an array containing both
output values. output values.
*/ */
// Force the argument to be ignored. %typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromInt") int *OUTPUT, int &OUTPUT {
SwigScilabSetOutput($result, SWIG_SciDouble_FromInt(pvApiCtx, $result, *$1));
%typemap(in,numinputs=0) signed char *OUTPUT (signed temp),
unsigned char *OUTPUT (unsigned temp),
short *OUTPUT (short temp),
unsigned short *OUTPUT (unsigned short temp),
int *OUTPUT (int temp),
unsigned int *OUTPUT (unsigned int temp),
long *OUTPUT (long temp),
unsigned long *OUTPUT (unsigned long temp),
float *OUTPUT (float temp),
double *OUTPUT (double temp) {
$1 = ($1_ltype)&temp;
} }
//short *OUTPUT
%typemap(argout) signed char *OUTPUT(int iRowsOut, int iColsOut) { //long *OUTPUT
iRowsOut = 1; //long long *OUTPUT
iColsOut = 1; //unsigned int *OUTPUT
sciErr = createMatrixOfInteger8(pvApiCtx, iVarOut, iRowsOut, iColsOut, &temp$argnum); //unsigned short *OUTPUT
if (sciErr.iErr) { //unsigned long *OUTPUT
printError(&sciErr, 0); //unsigned long long *OUTPUT
return 0; //unsigned char *OUTPUT
//bool *OUTPUT
//float *OUTPUT
//double *OUTPUT
%typemap(argout, noblock=1, fragment="SWIG_SciDouble_FromDouble") double *OUTPUT, double &OUTPUT {
SwigScilabSetOutput($result, SWIG_SciDouble_FromDouble(pvApiCtx, $result, *$1));
} }
iOutNum++;
iVarOut++;
}
%typemap(argout) short *OUTPUT(int iRowsOut, int iColsOut),
unsigned char *OUTPUT(int iRowsOut, int iColsOut) {
iRowsOut = 1;
iColsOut = 1;
sciErr = createMatrixOfInteger16(pvApiCtx, iVarOut, iRowsOut, iColsOut, &temp$argnum);
if (sciErr.iErr) {
printError(&sciErr, 0);
return 0;
}
iOutNum++;
iVarOut++;
}
%typemap(argout) int *OUTPUT(int iRowsOut,int iColsOut),
unsigned int *OUTPUT(int iRowsOut,int iColsOut),
unsigned short *OUTPUT(int iRowsOut,int iColsOut),
unsigned long *OUTPUT(int iRowsOut,int iColsOut),
long *OUTPUT(int iRowsOut,int iColsOut) {
iRowsOut=1;
iColsOut=1;
sciErr = createMatrixOfInteger32(pvApiCtx, iVarOut, iRowsOut, iColsOut, &temp$argnum);
if (sciErr.iErr) {
printError(&sciErr, 0);
return 0;
}
iOutNum++;
iVarOut++;
}
%typemap(argout) double *OUTPUT(int iRowsOut, int iColsOut),
float *OUTPUT(int iRowsOut, int iColsOut) {
double temp;
temp = (double)(*$result);
iRowsOut = 1;
iColsOut = 1;
sciErr = createMatrixOfDouble(pvApiCtx, iVarOut, iRowsOut, iColsOut, &temp$argnum);
if (sciErr.iErr) {
printError(&sciErr, 0);
return 0;
}
iOutNum++;
iVarOut++;
}
// INOUT // INOUT
// Mappings for an argument that is both an input and output // Mappings for an argument that is both an input and output
@ -213,7 +145,7 @@ output values.
The following methods can be applied to make a function parameter both The following methods can be applied to make a function parameter both
an input and output value. This combines the behavior of both the an input and output value. This combines the behavior of both the
"INPUT" and "OUTPUT" methods described earlier. Output values are "INPUT" and "OUTPUT" methods described earlier. Output values are
returned in the form of a Perl array. returned in the form of a Scilab array.
int *INOUT int *INOUT
short *INOUT short *INOUT
@ -247,7 +179,7 @@ or you can use the %apply directive :
Unlike C, this mapping does not directly modify the input value. Unlike C, this mapping does not directly modify the input value.
Rather, the modified input value shows up as the return value of the Rather, the modified input value shows up as the return value of the
function. Thus, to apply this function to a Perl variable you might function. Thus, to apply this function to a Scilab variable you might
do this : do this :
$x = neg($x); $x = neg($x);
@ -275,6 +207,3 @@ do this :
%typemap(in) signed char *INOUT = signed char *OUTPUT; %typemap(in) signed char *INOUT = signed char *OUTPUT;
%typemap(in) float *INOUT = float *OUTPUT; %typemap(in) float *INOUT = float *OUTPUT;
%typemap(in) double *INOUT = double *OUTPUT; %typemap(in) double *INOUT = double *OUTPUT;

File diff suppressed because it is too large Load diff