summaryrefslogtreecommitdiff
path: root/modules/spreadsheet/sci_gateway
diff options
context:
space:
mode:
Diffstat (limited to 'modules/spreadsheet/sci_gateway')
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/.dirstamp0
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_csv_helpers.Plo293
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_spreadsheet.Plo275
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvDefault.Plo317
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvRead.Plo336
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvStringToDouble.Plo310
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvTextScan.Plo319
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvWrite.Plo316
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_open.Plo276
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_read.Plo245
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.dirstamp0
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_csv_helpers.obin0 -> 31456 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_spreadsheet.obin0 -> 7088 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvDefault.obin0 -> 49368 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvRead.obin0 -> 35720 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvStringToDouble.obin0 -> 11472 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvTextScan.obin0 -> 27064 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvWrite.obin0 -> 26240 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_open.obin0 -> 24856 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_read.obin0 -> 15232 bytes
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/gw_csv_helpers.c466
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/gw_csv_helpers.h50
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/gw_spreadsheet.c46
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo12
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_csvDefault.c395
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_csvRead.c546
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_csvStringToDouble.c129
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_csvTextScan.c374
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_csvWrite.c328
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_xls_open.c250
-rwxr-xr-xmodules/spreadsheet/sci_gateway/c/sci_xls_read.c99
-rwxr-xr-xmodules/spreadsheet/sci_gateway/spreadsheet_gateway.xml41
40 files changed, 5519 insertions, 0 deletions
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/.dirstamp b/modules/spreadsheet/sci_gateway/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/.dirstamp
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_csv_helpers.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_csv_helpers.Plo
new file mode 100755
index 000000000..1c04e11bd
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_csv_helpers.Plo
@@ -0,0 +1,293 @@
+sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo: \
+ sci_gateway/c/gw_csv_helpers.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ sci_gateway/c/gw_csv_helpers.h \
+ ../../modules/core/includes/freeArrayOfString.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+sci_gateway/c/gw_csv_helpers.h:
+
+../../modules/core/includes/freeArrayOfString.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_spreadsheet.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_spreadsheet.Plo
new file mode 100755
index 000000000..0f217c0f2
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-gw_spreadsheet.Plo
@@ -0,0 +1,275 @@
+sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo: \
+ sci_gateway/c/gw_spreadsheet.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/core/includes/callFunctionFromGateway.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/core/includes/callFunctionFromGateway.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvDefault.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvDefault.Plo
new file mode 100755
index 000000000..570f3416c
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvDefault.Plo
@@ -0,0 +1,317 @@
+sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo: \
+ sci_gateway/c/sci_csvDefault.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h src/c/csvDefault.h \
+ sci_gateway/c/gw_csv_helpers.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+src/c/csvDefault.h:
+
+sci_gateway/c/gw_csv_helpers.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvRead.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvRead.Plo
new file mode 100755
index 000000000..ccc29be16
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvRead.Plo
@@ -0,0 +1,336 @@
+sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo: \
+ sci_gateway/c/sci_csvRead.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h src/c/csvRead.h \
+ ../../modules/string/includes/stringToComplex.h \
+ ../../modules/string/includes/complex_array.h \
+ ../../modules/string/includes/dynlib_string.h \
+ ../../modules/core/includes/BOOL.h src/c/csvDefault.h \
+ ../../modules/string/includes/complex_array.h \
+ sci_gateway/c/gw_csv_helpers.h src/c/getRange.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+src/c/csvRead.h:
+
+../../modules/string/includes/stringToComplex.h:
+
+../../modules/string/includes/complex_array.h:
+
+../../modules/string/includes/dynlib_string.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/csvDefault.h:
+
+../../modules/string/includes/complex_array.h:
+
+sci_gateway/c/gw_csv_helpers.h:
+
+src/c/getRange.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvStringToDouble.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvStringToDouble.Plo
new file mode 100755
index 000000000..99d5dcb3d
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvStringToDouble.Plo
@@ -0,0 +1,310 @@
+sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo: \
+ sci_gateway/c/sci_csvStringToDouble.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/string/includes/stringToComplex.h \
+ ../../modules/string/includes/complex_array.h \
+ ../../modules/string/includes/dynlib_string.h \
+ ../../modules/core/includes/BOOL.h src/c/csvDefault.h \
+ sci_gateway/c/gw_csv_helpers.h \
+ ../../modules/string/includes/complex_array.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/string/includes/stringToComplex.h:
+
+../../modules/string/includes/complex_array.h:
+
+../../modules/string/includes/dynlib_string.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/csvDefault.h:
+
+sci_gateway/c/gw_csv_helpers.h:
+
+../../modules/string/includes/complex_array.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvTextScan.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvTextScan.Plo
new file mode 100755
index 000000000..d7d1ac7bc
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvTextScan.Plo
@@ -0,0 +1,319 @@
+sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo: \
+ sci_gateway/c/sci_csvTextScan.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/string/includes/stringToComplex.h \
+ ../../modules/string/includes/complex_array.h \
+ ../../modules/string/includes/dynlib_string.h \
+ ../../modules/core/includes/BOOL.h src/c/csvDefault.h src/c/csvRead.h \
+ src/c/getRange.h ../../modules/string/includes/complex_array.h \
+ sci_gateway/c/gw_csv_helpers.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/string/includes/stringToComplex.h:
+
+../../modules/string/includes/complex_array.h:
+
+../../modules/string/includes/dynlib_string.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/csvDefault.h:
+
+src/c/csvRead.h:
+
+src/c/getRange.h:
+
+../../modules/string/includes/complex_array.h:
+
+sci_gateway/c/gw_csv_helpers.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvWrite.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvWrite.Plo
new file mode 100755
index 000000000..c59eef21a
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_csvWrite.Plo
@@ -0,0 +1,316 @@
+sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo: \
+ sci_gateway/c/sci_csvWrite.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h src/c/csvWrite.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h src/c/csvDefault.h \
+ src/c/checkCsvWriteFormat.h sci_gateway/c/gw_csv_helpers.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+src/c/csvWrite.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+src/c/csvDefault.h:
+
+src/c/checkCsvWriteFormat.h:
+
+sci_gateway/c/gw_csv_helpers.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_open.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_open.Plo
new file mode 100755
index 000000000..bed7a4e29
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_open.Plo
@@ -0,0 +1,276 @@
+sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo: \
+ sci_gateway/c/sci_xls_open.c /usr/include/stdc-predef.h \
+ /usr/include/stdlib.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h src/c/xls.h src/c/ripole/ole.h \
+ src/c/ripole/ripole.h ../../modules/fileio/includes/expandPathVariable.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/fileio/includes/dynlib_fileio.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/fileio/includes/mopen.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/tmpdir.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/fileio/includes/FileExist.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+src/c/xls.h:
+
+src/c/ripole/ole.h:
+
+src/c/ripole/ripole.h:
+
+../../modules/fileio/includes/expandPathVariable.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/fileio/includes/dynlib_fileio.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/fileio/includes/mopen.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/tmpdir.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/fileio/includes/FileExist.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_read.Plo b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_read.Plo
new file mode 100755
index 000000000..ca1d72f80
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.deps/libscispreadsheet_la-sci_xls_read.Plo
@@ -0,0 +1,245 @@
+sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo: \
+ sci_gateway/c/sci_xls_read.c /usr/include/stdc-predef.h \
+ /usr/include/stdlib.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_spreadsheet.h \
+ includes/dynlib_spreadsheet.h src/c/xls.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_spreadsheet.h:
+
+includes/dynlib_spreadsheet.h:
+
+src/c/xls.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/spreadsheet/sci_gateway/c/.dirstamp b/modules/spreadsheet/sci_gateway/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.dirstamp
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_csv_helpers.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_csv_helpers.o
new file mode 100755
index 000000000..2eff98dad
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_csv_helpers.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_spreadsheet.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_spreadsheet.o
new file mode 100755
index 000000000..abc1c71d2
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-gw_spreadsheet.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvDefault.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvDefault.o
new file mode 100755
index 000000000..fe3c34d6f
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvDefault.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvRead.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvRead.o
new file mode 100755
index 000000000..7309ff3bd
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvRead.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvStringToDouble.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvStringToDouble.o
new file mode 100755
index 000000000..a448ab9de
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvStringToDouble.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvTextScan.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvTextScan.o
new file mode 100755
index 000000000..93d932d6f
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvTextScan.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvWrite.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvWrite.o
new file mode 100755
index 000000000..1365f5aa0
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_csvWrite.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_open.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_open.o
new file mode 100755
index 000000000..414f976eb
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_open.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_read.o b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_read.o
new file mode 100755
index 000000000..dc02b41c8
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/.libs/libscispreadsheet_la-sci_xls_read.o
Binary files differ
diff --git a/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.c b/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.c
new file mode 100755
index 000000000..fb07843af
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.c
@@ -0,0 +1,466 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+#include <string.h>
+#include "api_scilab.h"
+#include "sci_types.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "localization.h"
+#include "gw_csv_helpers.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "freeArrayOfString.h"
+// =============================================================================
+char *csv_getArgumentAsStringWithEmptyManagement(void* _pvCtx, int _iVar, const char *fname,
+ const char *defaultValue,
+ int *iErr)
+{
+ SciErr sciErr;
+ char *returnedValue = NULL;
+ int *piAddressVar = NULL;
+ int iType = 0;
+ int m = 0, n = 0;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return NULL;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return NULL;
+ }
+
+ if (iType != sci_strings)
+ {
+ if (isEmptyMatrix(pvApiCtx, piAddressVar))
+ {
+ /* [] equals default value */
+ if (defaultValue)
+ {
+ *iErr = 0;
+ returnedValue = strdup(defaultValue);
+ }
+ else
+ {
+ *iErr = 0;
+ returnedValue = NULL;
+ }
+ }
+ else
+ {
+ *iErr = API_ERROR_INVALID_TYPE;
+ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, _iVar);
+ return NULL;
+ }
+ }
+ else
+ {
+ *iErr = checkVarDimension(pvApiCtx, piAddressVar, 1, 1);
+
+ if (*iErr == 0 )
+ {
+ *iErr = API_ERROR_CHECK_VAR_DIMENSION;
+ Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, _iVar);
+ return NULL;
+ }
+
+ *iErr = getAllocatedSingleString(pvApiCtx, piAddressVar, &returnedValue);
+ if (*iErr)
+ {
+ if (returnedValue)
+ {
+ FREE(returnedValue);
+ }
+
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return NULL;
+ }
+ if (strlen(returnedValue) == 0)
+ {
+ returnedValue = strdup(defaultValue);
+ }
+ }
+ return returnedValue;
+}
+// =============================================================================
+
+char *csv_getArgumentAsString(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr)
+{
+ SciErr sciErr;
+
+ int *piAddressVar = NULL;
+ int m = 0, n = 0;
+ int iType = 0;
+
+ char *returnedValue = NULL;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ if (iType != sci_strings)
+ {
+ *iErr = API_ERROR_INVALID_TYPE;
+ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
+ return NULL;
+ }
+
+ *iErr = checkVarDimension(pvApiCtx, piAddressVar, 1, 1);
+
+ if (*iErr == 0 )
+ {
+ *iErr = API_ERROR_CHECK_VAR_DIMENSION;
+ Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, _iVar);
+ return NULL;
+ }
+
+ *iErr = getAllocatedSingleString(pvApiCtx, piAddressVar, &returnedValue);
+ if (*iErr)
+ {
+ if (returnedValue)
+ {
+ FREE(returnedValue);
+ }
+
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return NULL;
+ }
+ return returnedValue;
+}
+// =============================================================================
+double csv_getArgumentAsScalarDouble(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr)
+{
+ SciErr sciErr;
+ double dValue = 0.;
+ int *piAddressVar = NULL;
+ int m = 0, n = 0;
+ int iType = 0;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return 0;
+ }
+
+ if (iType != sci_matrix)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A double expected.\n"), fname, _iVar);
+ *iErr = API_ERROR_INVALID_TYPE;
+ return 0;
+ }
+
+ *iErr = checkVarDimension(pvApiCtx, piAddressVar, 1, 1);
+
+ if (*iErr == 0 )
+ {
+ *iErr = API_ERROR_CHECK_VAR_DIMENSION;
+ Scierror(999, _("%s: Wrong size for input argument #%d: A double expected.\n"), fname, _iVar);
+ return 0;
+ }
+
+ *iErr = getScalarDouble(pvApiCtx, piAddressVar, &dValue);
+ return dValue;
+}
+// =============================================================================
+int csv_getArgumentAsScalarBoolean(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr)
+{
+ SciErr sciErr;
+ int bValue = 0;
+ int *piAddressVar = NULL;
+ int m = 0, n = 0;
+ int iType = 0;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ *iErr = sciErr.iErr;
+ return 0;
+ }
+
+ if (iType != sci_boolean)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), fname, _iVar);
+ *iErr = API_ERROR_INVALID_TYPE;
+ return 0;
+ }
+
+ *iErr = checkVarDimension(pvApiCtx, piAddressVar, 1, 1);
+
+ if (*iErr == 0 )
+ {
+ *iErr = API_ERROR_CHECK_VAR_DIMENSION;
+ Scierror(999, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), fname, _iVar);
+ return 0;
+ }
+
+ *iErr = getScalarBoolean(pvApiCtx, piAddressVar, &bValue);
+ return bValue;
+}
+// =============================================================================
+char **csv_getArgumentAsMatrixOfString(void* _pvCtx, int _iVar,
+ const char *fname,
+ int *m, int *n, int *iErr)
+{
+ SciErr sciErr;
+ char **pStringValues = NULL;
+ int *piAddressVar = NULL;
+ int m_ = 0, n_ = 0;
+ int iType = 0;
+ int *lengthStringValues = NULL;
+ int i = 0;
+
+ *m = 0;
+ *n = 0;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ if (iType != sci_strings)
+ {
+ *iErr = API_ERROR_INVALID_TYPE;
+ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, _iVar);
+ return NULL;
+ }
+
+ *iErr = getAllocatedMatrixOfString(pvApiCtx, piAddressVar, &m_, &n_, &pStringValues);
+ if (*iErr != 0)
+ {
+ if (pStringValues)
+ {
+ FREE(pStringValues);
+ }
+ return NULL;
+ }
+
+ *iErr = 0;
+ *m = m_;
+ *n = n_;
+
+ return pStringValues;
+}
+// =============================================================================
+int csv_isRowVector(void* _pvCtx, int _iVar)
+{
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+ return isRowVector(pvApiCtx, piAddressVar);
+}
+// =============================================================================
+int csv_isColumnVector(void* _pvCtx, int _iVar)
+{
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+ return isColumnVector(pvApiCtx, piAddressVar);
+}
+// =============================================================================
+int csv_isScalar(void* _pvCtx, int _iVar)
+{
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+ return isScalar(pvApiCtx, piAddressVar);
+}
+// =============================================================================
+int csv_isDoubleScalar(void* _pvCtx, int _iVar)
+{
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+
+ if (csv_isScalar(_pvCtx, _iVar))
+ {
+ int iType = 0;
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+
+ if (isVarComplex(pvApiCtx, piAddressVar) == 0)
+ {
+ return (iType == sci_matrix);
+ }
+ }
+ return 0;
+}
+// =============================================================================
+int csv_isEmpty(void* _pvCtx, int _iVar)
+{
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+ }
+
+ return isEmptyMatrix(pvApiCtx, piAddressVar);
+}
+// =============================================================================
+int *csv_getArgumentAsMatrixofIntFromDouble(void* _pvCtx, int _iVar,
+ const char *fname,
+ int *m, int *n, int *iErr)
+{
+ int *iReturnedArray = NULL;
+ double *dArray = NULL;
+ SciErr sciErr;
+ int *piAddressVar = NULL;
+ int iType = 0;
+ int m_ = 0;
+ int n_ = 0;
+ int i = 0;
+ int j = 0;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddressVar);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ if (iType != sci_matrix)
+ {
+ *iErr = API_ERROR_INVALID_TYPE;
+ Scierror(999, _("%s: Wrong type for input argument #%d: A matrix of double expected.\n"), fname, _iVar);
+ return NULL;
+ }
+
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVar, &m_, &n_, &dArray);
+ if (sciErr.iErr)
+ {
+ *iErr = sciErr.iErr;
+ printError(&sciErr, 0);
+ return NULL;
+ }
+
+ for (j = 0; j < m_ * n_; j++)
+ {
+ int iVal = (int)dArray[j];
+ if ((double)iVal != dArray[j])
+ {
+ *iErr = API_ERROR_GET_DOUBLE;
+ Scierror(999, _("%s: Wrong value for input argument #%d: A matrix of double, with integer values, expected.\n"), fname, _iVar);
+ return NULL;
+ }
+ }
+
+ iReturnedArray = (int*)MALLOC(sizeof(int) * (m_ * n_));
+ if (iReturnedArray == NULL)
+ {
+ *iErr = API_ERROR_ALLOC_DOUBLE;
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return NULL;
+ }
+
+ for (j = 0; j < m_ * n_; j++)
+ {
+ iReturnedArray[j] = (int)dArray[j];
+ }
+
+ *iErr = 0;
+ *m = m_;
+ *n = n_;
+
+ return iReturnedArray;
+}
+// =============================================================================
diff --git a/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.h b/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.h
new file mode 100755
index 000000000..2261f97eb
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/gw_csv_helpers.h
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+
+#ifndef __GW_CSV_HELPERS_H__
+#define __GW_CSV_HELPERS_H__
+
+
+char *csv_getArgumentAsStringWithEmptyManagement(void* _pvCtx, int _iVar,
+ const char *fname, const char *defaultValue,
+ int *iErr);
+
+char *csv_getArgumentAsString(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr);
+
+int csv_getArgumentAsScalarBoolean(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr);
+
+char **csv_getArgumentAsMatrixOfString(void* _pvCtx, int _iVar,
+ const char *fname,
+ int *m, int *n, int *iErr);
+
+int *csv_getArgumentAsMatrixofIntFromDouble(void* _pvCtx, int _iVar,
+ const char *fname,
+ int *m, int *n, int *iErr);
+
+double csv_getArgumentAsScalarDouble(void* _pvCtx, int _iVar,
+ const char *fname, int *iErr);
+
+
+int csv_isRowVector(void* _pvCtx, int _iVar);
+int csv_isColumnVector(void* _pvCtx, int _iVar);
+int csv_isScalar(void* _pvCtx, int _iVar);
+int csv_isDoubleScalar(void* _pvCtx, int _iVar);
+int csv_isEmpty(void* _pvCtx, int _iVar);
+
+#endif /* __GW_CSV_HELPERS_H__ */
+// =============================================================================
+
diff --git a/modules/spreadsheet/sci_gateway/c/gw_spreadsheet.c b/modules/spreadsheet/sci_gateway/c/gw_spreadsheet.c
new file mode 100755
index 000000000..957d1b39c
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/gw_spreadsheet.c
@@ -0,0 +1,46 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include "gw_spreadsheet.h"
+#include "api_scilab.h"
+#include "MALLOC.h"
+#include "callFunctionFromGateway.h"
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[] =
+{
+ {sci_xls_open, "xls_open"},
+ {sci_xls_read, "xls_read"},
+ {sci_csvDefault, "csvDefault"},
+ {sci_csvRead, "csvRead"},
+ {sci_csvStringToDouble, "csvStringToDouble"},
+ {sci_csvTextScan, "csvTextScan"},
+ {sci_csvWrite, "csvWrite"},
+ {sci_csvWrite, "write_csv"},
+ {sci_csvRead, "read_csv"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_spreadsheet(void)
+{
+ Rhs = Max(0, Rhs);
+
+ if (pvApiCtx == NULL)
+ {
+ pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
+ }
+
+ pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
+ callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo
new file mode 100755
index 000000000..ba236ccd5
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-gw_csv_helpers.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-gw_csv_helpers.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo
new file mode 100755
index 000000000..c04d0a506
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-gw_spreadsheet.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-gw_spreadsheet.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo
new file mode 100755
index 000000000..cd058f403
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_csvDefault.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_csvDefault.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo
new file mode 100755
index 000000000..9ccdd311a
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_csvRead.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_csvRead.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo
new file mode 100755
index 000000000..6fb82cc4a
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_csvStringToDouble.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_csvStringToDouble.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo
new file mode 100755
index 000000000..0f88146bd
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_csvTextScan.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_csvTextScan.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo
new file mode 100755
index 000000000..a73d7e9a4
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_csvWrite.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_csvWrite.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo
new file mode 100755
index 000000000..e2364bddd
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_xls_open.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_xls_open.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo
new file mode 100755
index 000000000..edd3d8a30
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscispreadsheet_la-sci_xls_read.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscispreadsheet_la-sci_xls_read.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/spreadsheet/sci_gateway/c/sci_csvDefault.c b/modules/spreadsheet/sci_gateway/c/sci_csvDefault.c
new file mode 100755
index 000000000..a03383f6f
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_csvDefault.c
@@ -0,0 +1,395 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "gw_spreadsheet.h"
+#include "api_scilab.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "csvDefault.h"
+#include "gw_csv_helpers.h"
+
+
+// =============================================================================
+#define SEPARATOR_FIELDNAME "separator"
+#define DECIMAL_FIELDNAME "decimal"
+#define CONVERSION_FIELDNAME "conversion"
+#define PRECISION_FIELDNAME "precision"
+#define COMMENTSREGEXP_FIELDNAME "regexp"
+#define EOL_FIELDNAME "eol"
+#define ENCODING_FIELDNAME "encoding"
+#define RESET_PARAMATERS "reset"
+#define BLANK_FIELDNAME "blank"
+// =============================================================================
+#define MACOS9_EOL_STRING "macos9"
+#define MACOS9_EOL "\r"
+#define WINDOWS_EOL_STRING "windows"
+#define WINDOWS_EOL "\r\n"
+#define LINUX_EOL_STRING "linux"
+#define LINUX_EOL "\n"
+// =============================================================================
+#define NUMBER_FIELD 8
+// =============================================================================
+static void freeVar(char** fieldname, char** fieldvalue);
+static int sci_csvDefault_no_rhs(char *fname);
+static int sci_csvDefault_one_rhs(char *fname);
+static int sci_csvDefault_two_rhs(char *fname);
+// =============================================================================
+int sci_csvDefault(char *fname, unsigned long fname_len)
+{
+ Rhs = Max(0, Rhs);
+ CheckRhs(0, 2);
+ CheckLhs(1, 1);
+
+ switch (Rhs)
+ {
+ case 0:
+ return sci_csvDefault_no_rhs(fname);
+ case 1:
+ return sci_csvDefault_one_rhs(fname);
+ case 2:
+ return sci_csvDefault_two_rhs(fname);
+ }
+ return 0;
+}
+// =============================================================================
+static int sci_csvDefault_no_rhs(char *fname)
+{
+ int sizeArray = NUMBER_FIELD * 2;
+ char **arrayOut = (char**)MALLOC(sizeof(char*) * sizeArray);
+
+ if (arrayOut)
+ {
+ SciErr sciErr;
+
+ int nbRows = NUMBER_FIELD;
+ int nbCols = 2;
+ const char *currentEol = getCsvDefaultEOL();
+
+ arrayOut[0] = strdup(SEPARATOR_FIELDNAME);
+ arrayOut[1] = strdup(DECIMAL_FIELDNAME);
+ arrayOut[2] = strdup(CONVERSION_FIELDNAME);
+ arrayOut[3] = strdup(PRECISION_FIELDNAME);
+ arrayOut[4] = strdup(COMMENTSREGEXP_FIELDNAME);
+ arrayOut[5] = strdup(EOL_FIELDNAME);
+ arrayOut[6] = strdup(ENCODING_FIELDNAME);
+ arrayOut[7] = strdup(BLANK_FIELDNAME);
+
+ arrayOut[8] = strdup(getCsvDefaultSeparator());
+ arrayOut[9] = strdup(getCsvDefaultDecimal());
+ arrayOut[10] = strdup(getCsvDefaultConversion());
+ arrayOut[11] = strdup(getCsvDefaultPrecision());
+ arrayOut[12] = strdup(getCsvDefaultCommentsRegExp());
+
+ if (currentEol)
+ {
+ if (strcmp(currentEol, MACOS9_EOL) == 0)
+ {
+ arrayOut[13] = strdup(MACOS9_EOL_STRING);
+ }
+ else if (strcmp(currentEol, WINDOWS_EOL) == 0)
+ {
+ arrayOut[13] = strdup(WINDOWS_EOL_STRING);
+ }
+ else if (strcmp(currentEol, LINUX_EOL) == 0)
+ {
+ arrayOut[13] = strdup(LINUX_EOL_STRING);
+ }
+ else
+ {
+ arrayOut[13] = strdup("ERROR");
+ }
+ }
+ else
+ {
+ arrayOut[13] = strdup("ERROR");
+ }
+
+ arrayOut[14] = strdup(getCsvDefaultEncoding());
+ arrayOut[15] = strdup(getCsvDefaultCsvIgnoreBlankLine());
+
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, nbRows, nbCols, arrayOut);
+ freeArrayOfString(arrayOut, sizeArray);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 0;
+ }
+
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ return 0;
+}
+// =============================================================================
+static int sci_csvDefault_one_rhs(char *fname)
+{
+ int iErr = 0;
+
+ char *fieldname = NULL;
+ char *fieldvalue = NULL;
+
+ fieldname = csv_getArgumentAsString(pvApiCtx, 1, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+
+ if (strcmp(fieldname, SEPARATOR_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultSeparator());
+ }
+ else if (strcmp(fieldname, DECIMAL_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultDecimal());
+ }
+ else if (strcmp(fieldname, CONVERSION_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultConversion());
+ }
+ else if (strcmp(fieldname, PRECISION_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultPrecision());
+ }
+ else if (strcmp(fieldname, COMMENTSREGEXP_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultCommentsRegExp());
+ }
+ else if (strcmp(fieldname, EOL_FIELDNAME) == 0)
+ {
+ const char *currentEol = getCsvDefaultEOL();
+ if (currentEol)
+ {
+ if (strcmp(currentEol, MACOS9_EOL) == 0)
+ {
+ fieldvalue = strdup(MACOS9_EOL_STRING);
+ }
+ else if (strcmp(currentEol, WINDOWS_EOL) == 0)
+ {
+ fieldvalue = strdup(WINDOWS_EOL_STRING);
+ }
+ else if (strcmp(currentEol, LINUX_EOL) == 0)
+ {
+ fieldvalue = strdup(LINUX_EOL_STRING);
+ }
+ else
+ {
+ fieldvalue = strdup("ERROR");
+ }
+ }
+ else
+ {
+ fieldvalue = strdup("ERROR");
+ }
+ }
+ else if (strcmp(fieldname, ENCODING_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultEncoding());
+ }
+ else if (strcmp(fieldname, BLANK_FIELDNAME) == 0)
+ {
+ fieldvalue = strdup(getCsvDefaultCsvIgnoreBlankLine());
+ }
+ else if (strcmp(fieldname, RESET_PARAMATERS) == 0)
+ {
+ freeVar(&fieldname, &fieldvalue);
+
+ setCsvDefaultReset();
+
+ createEmptyMatrix(pvApiCtx, Rhs + 1);
+
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+ return 0;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s', '%s', '%s', '%s', '%s' or '%s' expected.\n"), fname, 1, SEPARATOR_FIELDNAME, DECIMAL_FIELDNAME, CONVERSION_FIELDNAME, COMMENTSREGEXP_FIELDNAME, EOL_FIELDNAME, BLANK_FIELDNAME);
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+
+ createSingleString(pvApiCtx, Rhs + 1, fieldvalue);
+
+ freeVar(&fieldname, &fieldvalue);
+
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+
+ return 0;
+}
+// =============================================================================
+static int sci_csvDefault_two_rhs(char *fname)
+{
+ int iErr = 0;
+ int resultSet = 0;
+
+ char *fieldname = NULL;
+ char *fieldvalue = NULL;
+ int ifieldvalue = 0;
+
+ fieldname = csv_getArgumentAsString(pvApiCtx, 1, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+
+ if (strcmp(fieldname, PRECISION_FIELDNAME) == 0)
+ {
+ if (csv_isEmpty(pvApiCtx, 2))
+ {
+ freeVar(&fieldname, &fieldvalue);
+ Scierror(999, _("%s: Wrong type for input argument #%d: A double expected.\n"), fname, 2);
+ return 0;
+ }
+
+ if (csv_isDoubleScalar(pvApiCtx, 2))
+ {
+#define FORMAT_FIELDVALUESTR "%%.%dlg"
+ ifieldvalue = (int) csv_getArgumentAsScalarDouble(pvApiCtx, 2, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+
+ if ((ifieldvalue < 1) || (ifieldvalue > 17))
+ {
+ freeVar(&fieldname, &fieldvalue);
+ Scierror(999, _("%s: Wrong value for input argument #%d: A double (value %d to %d) expected.\n"), fname, 2, 1, 17);
+ return 0;
+ }
+
+ fieldvalue = (char*)MALLOC(sizeof(char) * ((int)strlen(FORMAT_FIELDVALUESTR) + 1));
+ if (fieldvalue == NULL)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return 0;
+ }
+ sprintf(fieldvalue, FORMAT_FIELDVALUESTR, ifieldvalue);
+ }
+ else
+ {
+ fieldvalue = csv_getArgumentAsString(pvApiCtx, 2, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ fieldvalue = csv_getArgumentAsString(pvApiCtx, 2, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+ }
+
+ if (strcmp(fieldname, SEPARATOR_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultSeparator(fieldvalue);
+ }
+ else if (strcmp(fieldname, DECIMAL_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultDecimal(fieldvalue);
+ }
+ else if (strcmp(fieldname, CONVERSION_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultConversion(fieldvalue);
+ }
+ else if (strcmp(fieldname, PRECISION_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultPrecision(fieldvalue);
+ }
+ else if (strcmp(fieldname, COMMENTSREGEXP_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultCommentsRegExp(fieldvalue);
+ }
+ else if (strcmp(fieldname, EOL_FIELDNAME) == 0)
+ {
+ if (strcmp(fieldvalue, MACOS9_EOL_STRING) == 0)
+ {
+ resultSet = setCsvDefaultEOL(MACOS9_EOL);
+ }
+ else if (strcmp(fieldvalue, WINDOWS_EOL_STRING) == 0)
+ {
+ resultSet = setCsvDefaultEOL(WINDOWS_EOL);
+ }
+ else if (strcmp(fieldvalue, LINUX_EOL_STRING) == 0)
+ {
+ resultSet = setCsvDefaultEOL(LINUX_EOL);
+ }
+ else
+ {
+ resultSet = 1;
+ }
+ }
+ else if (strcmp(fieldname, ENCODING_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultEncoding(fieldvalue);
+ }
+ else if (strcmp(fieldname, BLANK_FIELDNAME) == 0)
+ {
+ resultSet = setCsvDefaultCsvIgnoreBlankLine(fieldvalue);
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s', '%s', '%s' , '%s', '%s', '%s', '%s' or '%s' expected.\n"), fname, 1, SEPARATOR_FIELDNAME, DECIMAL_FIELDNAME, CONVERSION_FIELDNAME, PRECISION_FIELDNAME, COMMENTSREGEXP_FIELDNAME, EOL_FIELDNAME, ENCODING_FIELDNAME, BLANK_FIELDNAME);
+ freeVar(&fieldname, &fieldvalue);
+ return 0;
+ }
+
+ createScalarBoolean(pvApiCtx, Rhs + 1, (resultSet == 0));
+
+ freeVar(&fieldname, &fieldvalue);
+
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+
+ return 0;
+}
+// =============================================================================
+static void freeVar(char** fieldname, char** fieldvalue)
+{
+ if (fieldname && *fieldname)
+ {
+ FREE(*fieldname);
+ *fieldname = NULL;
+ }
+
+ if (fieldvalue && *fieldvalue)
+ {
+ FREE(*fieldvalue);
+ *fieldvalue = NULL;
+ }
+} \ No newline at end of file
diff --git a/modules/spreadsheet/sci_gateway/c/sci_csvRead.c b/modules/spreadsheet/sci_gateway/c/sci_csvRead.c
new file mode 100755
index 000000000..317aef798
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_csvRead.c
@@ -0,0 +1,546 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "gw_spreadsheet.h"
+#include "api_scilab.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#include "MALLOC.h"
+#include "csvRead.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "stringToComplex.h"
+#include "csvDefault.h"
+#include "complex_array.h"
+#include "gw_csv_helpers.h"
+#include "getRange.h"
+
+static void freeVar(char** filename, char** separator, char** decimal, char** conversion, int** iRange, char*** toreplace, int sizeReplace, char** regexp);
+/* ==================================================================== */
+#define CONVTOSTR "string"
+#define CONVTODOUBLE "double"
+/* ==================================================================== */
+/* csvRead(filename, separator, decimal, conversion, substitute, range)*/
+/* ==================================================================== */
+int sci_csvRead(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int iErr = 0;
+ int iErrEmpty = 0;
+
+ char *filename = NULL;
+ char *separator = NULL;
+ char *decimal = NULL;
+ char *conversion = NULL;
+ int *iRange = NULL;
+ int haveRange = 0;
+ int header = 0;
+
+ char **toreplace = NULL;
+ int nbElementsToReplace = 0;
+
+ char *regexp = NULL;
+ int haveRegexp = 0;
+
+ csvResult *result = NULL;
+
+ double *dRealValues = NULL;
+
+ sciErr.iErr = 0;
+
+ CheckRhs(1, 8);
+ CheckLhs(1, 2);
+
+ if (Rhs == 8)
+ {
+ header = (int) csv_getArgumentAsScalarDouble(pvApiCtx, 8, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ return 0;
+ }
+ }
+
+ if (Rhs == 7)
+ {
+ int m7 = 0, n7 = 0;
+
+ iRange = csv_getArgumentAsMatrixofIntFromDouble(pvApiCtx, 7, fname, &m7, &n7, &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ return 0;
+ }
+
+ if ((m7 * n7 != SIZE_RANGE_SUPPORTED) )
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ Scierror(999, _("%s: Wrong size for input argument #%d: Four entries expected.\n"), fname, 7);
+ return 0;
+ }
+
+ if ((m7 != 1) && (n7 != 1))
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ Scierror(999, _("%s: Wrong size for input argument #%d: A column or row vector expected.\n"), fname, 7);
+ return 0;
+ }
+
+ if (isValidRange(iRange, m7 * n7))
+ {
+ haveRange = 1;
+ }
+ else
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ Scierror(999, _("%s: Wrong value for input argument #%d: Inconsistent range.\n"), fname, 7);
+ return 0;
+ }
+ }
+
+
+ if (Rhs >= 6)
+ {
+ regexp = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 6, fname, getCsvDefaultCommentsRegExp(), &iErr);
+ if (regexp)
+ {
+ if (strcmp(regexp, "") == 0)
+ {
+ FREE(regexp);
+ regexp = NULL;
+ }
+ else
+ {
+ haveRegexp = 1;
+ }
+ }
+
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, 0, &regexp);
+ return 0;
+ }
+ }
+ else
+ {
+ regexp = strdup(getCsvDefaultCommentsRegExp());
+ if (regexp)
+ {
+ if (strcmp(regexp, "") == 0)
+ {
+ FREE(regexp);
+ regexp = NULL;
+ }
+ }
+ }
+
+ if (Rhs >= 5)
+ {
+ if (csv_isEmpty(pvApiCtx, 5))
+ {
+ toreplace = NULL;
+ nbElementsToReplace = 0;
+ }
+ else
+ {
+ int m5 = 0, n5 = 0;
+ toreplace = csv_getArgumentAsMatrixOfString(pvApiCtx, 5, fname, &m5, &n5, &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, m5 * n5, &regexp);
+ return 0;
+ }
+
+ if (n5 != 2)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, m5 * n5, &regexp);
+ Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 5);
+ return 0;
+ }
+ nbElementsToReplace = m5;
+ }
+ }
+ else
+ {
+ toreplace = NULL;
+ nbElementsToReplace = 0;
+ }
+
+ if (Rhs >= 4)
+ {
+ int iErr = 0;
+ conversion = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 4, fname, getCsvDefaultConversion(), &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+
+ if (!((strcmp(conversion, CONVTOSTR) == 0) || (strcmp(conversion, CONVTODOUBLE) == 0)))
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' string expected.\n"), fname, 4, "double", "string");
+ return 0;
+ }
+ }
+ else
+ {
+ /* read_csv is using a 'string' conversion while csvRead is doing
+ a 'double' conversion */
+ if (strcmp(fname, "read_csv") == 0)
+ {
+ conversion = (char*)MALLOC((strlen("string") + 1) * sizeof(char));
+ strcpy(conversion, "string");
+ }
+ else
+ {
+ conversion = strdup(getCsvDefaultConversion());
+ }
+ }
+
+ if (Rhs >= 3)
+ {
+ int iErr = 0;
+ decimal = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 3, fname, getCsvDefaultDecimal(), &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ }
+ else
+ {
+ decimal = strdup(getCsvDefaultDecimal());
+ }
+
+ if (Rhs >= 2)
+ {
+ int iErr = 0;
+ separator = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 2, fname, getCsvDefaultSeparator(), &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ }
+ else
+ {
+ separator = strdup(getCsvDefaultSeparator());
+ }
+
+ if (strcmp(separator, "\\t") == 0)
+ {
+ /* In Scilab, if the user is providing \t as separator, transform it to a real
+ tab. Example: read_csv(filename,"\t");
+ */
+ strcpy(separator, "\t");
+ }
+
+
+ filename = csv_getArgumentAsString(pvApiCtx, 1, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+
+ result = csvRead(filename, separator, decimal, (const char**)toreplace, nbElementsToReplace * 2, regexp, header);
+ freeVar(NULL, &separator, &decimal, NULL, NULL, &toreplace, nbElementsToReplace, &regexp);
+
+ if (result)
+ {
+ switch (result->err)
+ {
+ case CSV_READ_REGEXP_ERROR:
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d.\n"), fname, 6);
+ }
+ break;
+
+ case CSV_READ_SEPARATOR_DECIMAL_EQUAL:
+ {
+ Scierror(999, _("%s: separator and decimal must have different values.\n"), fname);
+ }
+ break;
+
+ case CSV_READ_NO_ERROR:
+ {
+ if (strcmp(conversion, CONVTOSTR) == 0)
+ {
+ if (haveRange)
+ {
+ int newM = 0;
+ int newN = 0;
+
+ char **pStrRange = getRangeAsString((const char**)result->pstrValues, result->m, result->n, iRange, &newM, &newN);
+ if (pStrRange)
+ {
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, newM, newN, pStrRange);
+ freeArrayOfString(pStrRange, newM * newN);
+ }
+ else
+ {
+ if ((newM == 0) || (newN == 0))
+ {
+ Scierror(999, _("%s: Range row or/and column left indice(s) out of bounds.\n"), fname);
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ }
+ else
+ {
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, result->m, result->n, result->pstrValues);
+ }
+ }
+ else /* to double */
+ {
+ stringToComplexError ierr = STRINGTOCOMPLEX_ERROR;
+ complexArray *ptrComplexArray = stringsToComplexArray((const char**)result->pstrValues, result->m * result->n, decimal, TRUE, &ierr);
+
+ if (ptrComplexArray == NULL)
+ {
+ freeCsvResult(result);
+ if (ierr == STRINGTOCOMPLEX_ERROR)
+ {
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+
+ switch (ierr)
+ {
+ case STRINGTOCOMPLEX_NOT_A_NUMBER:
+ case STRINGTOCOMPLEX_NO_ERROR:
+ {
+ if (haveRange)
+ {
+ int newM = 0;
+ int newN = 0;
+ complexArray *complexRange = getRangeAsComplexArray(ptrComplexArray, result->m, result->n, iRange, &newM, &newN);
+ if (complexRange)
+ {
+ if (complexRange->isComplex)
+ {
+ sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, newM, newN, ptrComplexArray->realPart, ptrComplexArray->imagPart);
+ }
+ else
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, newM, newN, complexRange->realPart);
+ }
+ freeComplexArray(complexRange);
+ complexRange = NULL;
+ }
+ else
+ {
+ if ((newM == 0) || (newN == 0))
+ {
+ Scierror(999, _("%s: Range row or/and column left indice(s) out of bounds.\n"), fname);
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ }
+ else
+ {
+ if (ptrComplexArray->isComplex)
+ {
+ sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, result->m, result->n, ptrComplexArray->realPart, ptrComplexArray->imagPart);
+ }
+ else
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, result->m, result->n, ptrComplexArray->realPart);
+ }
+ freeComplexArray(ptrComplexArray);
+ ptrComplexArray = NULL;
+ }
+ }
+ break;
+
+ case STRINGTOCOMPLEX_MEMORY_ALLOCATION:
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ default:
+ case STRINGTOCOMPLEX_ERROR:
+ {
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ }
+ }
+
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ else
+ {
+ LhsVar(1) = Rhs + 1;
+
+ if (Lhs == 2)
+ {
+ if (haveRegexp == 0)
+ {
+ char **emptyStringMatrix = NULL;
+ emptyStringMatrix = (char**) malloc(sizeof(char*));
+ emptyStringMatrix[0] = "";
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 2, 1, 1, emptyStringMatrix);
+ free(emptyStringMatrix);
+ }
+ else
+ {
+ if (result->nbComments > 0)
+ {
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 2, result->nbComments, 1, result->pstrComments);
+ }
+ else
+ {
+ iErrEmpty = createEmptyMatrix(pvApiCtx, Rhs+2);
+ sciErr.iErr = iErrEmpty;
+ }
+ }
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ freeCsvResult(result);
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+ return 0;
+ }
+ LhsVar(2) = Rhs + 2;
+ }
+ PutLhsVar();
+ }
+ }
+ break;
+
+ case CSV_READ_FILE_NOT_EXIST:
+ {
+ Scierror(999, _("%s: %s does not exist.\n"), fname, filename);
+ }
+ break;
+
+ case CSV_READ_MOPEN_ERROR:
+ {
+ Scierror(999, _("%s: can not open file %s.\n"), fname, filename);
+ }
+ break;
+
+ case CSV_READ_MEMORY_ALLOCATION:
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ break;
+
+ case CSV_READ_COLUMNS_ERROR:
+ {
+ Scierror(999, _("%s: can not read file %s: Error in the column structure\n"), fname, filename);
+ }
+ break;
+
+ case CSV_READ_READLINES_ERROR:
+ case CSV_READ_ERROR:
+ {
+ Scierror(999, _("%s: can not read file %s.\n"), fname, filename);
+ }
+ break;
+ }
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ freeCsvResult(result);
+
+ freeVar(&filename, &separator, &decimal, &conversion, &iRange, &toreplace, nbElementsToReplace, &regexp);
+
+ return 0;
+}
+/* ==================================================================== */
+static void freeVar(char** filename, char** separator, char** decimal, char** conversion, int** iRange, char*** toreplace, int sizeReplace, char** regexp)
+{
+ if (filename && *filename)
+ {
+ FREE(*filename);
+ *filename = NULL;
+ }
+
+ if (separator && *separator)
+ {
+ FREE(*separator);
+ *separator = NULL;
+ }
+
+ if (decimal && *decimal)
+ {
+ FREE(*decimal);
+ *decimal = NULL;
+ }
+
+ if (conversion && *conversion)
+ {
+ FREE(*conversion);
+ *conversion = NULL;
+ }
+
+ if (iRange && *iRange)
+ {
+ FREE(*iRange);
+ *iRange = NULL;
+ }
+
+ if (toreplace && *toreplace)
+ {
+ freeArrayOfString(*toreplace, sizeReplace);
+ *toreplace = NULL;
+ }
+
+ if (regexp && *regexp)
+ {
+ FREE(*regexp);
+ *regexp = NULL;
+ }
+}
diff --git a/modules/spreadsheet/sci_gateway/c/sci_csvStringToDouble.c b/modules/spreadsheet/sci_gateway/c/sci_csvStringToDouble.c
new file mode 100755
index 000000000..953013e3b
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_csvStringToDouble.c
@@ -0,0 +1,129 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+#include <string.h>
+#include "api_scilab.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "stringToComplex.h"
+#include "csvDefault.h"
+#include "gw_csv_helpers.h"
+#include "complex_array.h"
+
+// =============================================================================
+int sci_csvStringToDouble(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int iErr = 0;
+ int m1 = 0, n1 = 0;
+ char **pStringValues = NULL;
+
+ BOOL bConvertToNan = TRUE;
+
+ complexArray *ptrComplexArray = NULL;
+ stringToComplexError ierr = STRINGTOCOMPLEX_ERROR;
+
+ CheckRhs(1, 2);
+ CheckLhs(1, 1);
+
+ if (Rhs == 1)
+ {
+ bConvertToNan = TRUE;
+ }
+ else /* Rhs == 2 */
+ {
+ bConvertToNan = (BOOL)csv_getArgumentAsScalarBoolean(pvApiCtx, 2, fname, &iErr);
+ if (iErr)
+ {
+ return 0;
+ }
+ }
+
+ pStringValues = csv_getArgumentAsMatrixOfString(pvApiCtx, 1, fname, &m1, &n1, &iErr);
+ if (iErr)
+ {
+ return 0;
+ }
+
+ ptrComplexArray = stringsToComplexArray((const char**)pStringValues, m1 * n1, getCsvDefaultDecimal(), bConvertToNan, &ierr);
+
+ freeArrayOfString(pStringValues, m1 * n1);
+ pStringValues = NULL;
+
+ if (ptrComplexArray == NULL)
+ {
+ switch (ierr)
+ {
+ case STRINGTOCOMPLEX_NOT_A_NUMBER:
+ case STRINGTOCOMPLEX_ERROR:
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ return 0;
+
+ default:
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return 0;
+ }
+ }
+
+ switch (ierr)
+ {
+ case STRINGTOCOMPLEX_NOT_A_NUMBER:
+ case STRINGTOCOMPLEX_NO_ERROR:
+ {
+ if (ptrComplexArray->isComplex)
+ {
+ sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, m1, n1, ptrComplexArray->realPart, ptrComplexArray->imagPart);
+ }
+ else
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, m1, n1, ptrComplexArray->realPart);
+ }
+ freeComplexArray(ptrComplexArray);
+ ptrComplexArray = NULL;
+ }
+ break;
+
+ case STRINGTOCOMPLEX_MEMORY_ALLOCATION:
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ break;
+
+ default:
+ case STRINGTOCOMPLEX_ERROR:
+ {
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ }
+ }
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ }
+ else
+ {
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+ }
+
+ return 0;
+}
+// =============================================================================
+
diff --git a/modules/spreadsheet/sci_gateway/c/sci_csvTextScan.c b/modules/spreadsheet/sci_gateway/c/sci_csvTextScan.c
new file mode 100755
index 000000000..8672e2bc3
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_csvTextScan.c
@@ -0,0 +1,374 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+#include <string.h>
+#include "gw_spreadsheet.h"
+#include "api_scilab.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "stringToComplex.h"
+#include "csvDefault.h"
+#include "csvRead.h"
+#include "getRange.h"
+#include "gw_csv_helpers.h"
+
+static void freeVar(char*** text, int sizeText, int** lengthText, char** separator, char** decimal, char** conversion, int** iRange);
+// =============================================================================
+#define CONVTOSTR "string"
+#define CONVTODOUBLE "double"
+// =============================================================================
+int sci_csvTextScan(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int iErr = 0;
+ int i = 0;
+
+ int *piAddressVarOne = NULL;
+ int m1 = 0, n1 = 0;
+ int iType1 = 0;
+
+ char **text = NULL;
+ int *lengthText = NULL;
+ int nbLines = 0;
+
+ char *separator = NULL;
+ char *decimal = NULL;
+ char *conversion = NULL;
+
+ double * dRealValues = NULL;
+
+ int *iRange = NULL;
+ int haveRange = 0;
+
+ csvResult *result = NULL;
+
+ CheckRhs(1, 5);
+ CheckLhs(1, 1);
+
+ if (Rhs == 5)
+ {
+ int m5 = 0, n5 = 0;
+
+ iRange = csv_getArgumentAsMatrixofIntFromDouble(pvApiCtx, 5, fname, &m5, &n5, &iErr);
+ if (iErr)
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+ }
+
+ if ((m5 * n5 != SIZE_RANGE_SUPPORTED) )
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong size for input argument #%d: Four entries expected.\n"), fname, 5);
+ return 0;
+ }
+
+ if ((m5 != 1) && (n5 != 1))
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong size for input argument #%d: A column or row vector expected.\n"), fname, 5);
+ return 0;
+ }
+
+ if (isValidRange(iRange, m5 * n5))
+ {
+ haveRange = 1;
+ }
+ else
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong value for input argument #%d: Inconsistent range.\n"), fname, 5);
+ return 0;
+ }
+ }
+
+ if (Rhs >= 4)
+ {
+ conversion = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 4, fname, getCsvDefaultConversion(), &iErr);
+ if (iErr)
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+ }
+
+ if (!((strcmp(conversion, CONVTOSTR) == 0) || (strcmp(conversion, CONVTODOUBLE) == 0)))
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' string expected.\n"), fname, 4, "double", "string");
+ return 0;
+ }
+ }
+ else
+ {
+ conversion = strdup(getCsvDefaultConversion());
+ }
+
+ if (Rhs >= 3)
+ {
+ decimal = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 3, fname, getCsvDefaultDecimal(), &iErr);
+ if (iErr)
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+ }
+
+ if (decimal[0] != '.' && decimal[0] != ',')
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' string expected.\n"), fname, 3, ",", ".");
+ return 0;
+ }
+ }
+ else
+ {
+ decimal = strdup(getCsvDefaultDecimal());
+ }
+
+ if (Rhs >= 2)
+ {
+ separator = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 2, fname, getCsvDefaultSeparator(), &iErr);
+ if (iErr)
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+ }
+ }
+ else
+ {
+ separator = strdup(getCsvDefaultSeparator());
+ }
+
+ if (!csv_isRowVector(pvApiCtx, 1) &&
+ !csv_isColumnVector(pvApiCtx, 1) &&
+ !csv_isScalar(pvApiCtx, 1))
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ Scierror(999, _("%s: Wrong size for input argument #%d: String vector expected.\n"), fname, 1);
+ return 0;
+ }
+
+ text = csv_getArgumentAsMatrixOfString(pvApiCtx, 1, fname, &m1, &n1, &iErr);
+ if (iErr)
+ {
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+ }
+
+ nbLines = m1 * n1;
+ result = csvTextScan((const char**)text, nbLines, separator, decimal);
+
+ if (result)
+ {
+ switch (result->err)
+ {
+ case CSV_READ_SEPARATOR_DECIMAL_EQUAL:
+ {
+ Scierror(999, _("%s: separator and decimal must have different values.\n"), fname);
+ }
+ break;
+
+ case CSV_READ_NO_ERROR:
+ {
+ if (strcmp(conversion, CONVTOSTR) == 0)
+ {
+ if (haveRange)
+ {
+ int newM = 0;
+ int newN = 0;
+
+ char **pStrRange = getRangeAsString((const char**)result->pstrValues, result->m, result->n, iRange, &newM, &newN);
+ if (pStrRange)
+ {
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, newM, newN, pStrRange);
+ freeArrayOfString(pStrRange, newM * newN);
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ }
+ else
+ {
+ sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, result->m, result->n, result->pstrValues);
+ }
+ }
+ else /* to double */
+ {
+ stringToComplexError ierr = STRINGTOCOMPLEX_ERROR;
+ complexArray *ptrComplexArray = stringsToComplexArray((const char**)result->pstrValues, result->m * result->n, decimal, TRUE, &ierr);
+ if (ptrComplexArray == NULL)
+ {
+ freeCsvResult(result);
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+
+ if (ierr == STRINGTOCOMPLEX_ERROR)
+ {
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ return 0;
+ }
+
+ switch (ierr)
+ {
+ case STRINGTOCOMPLEX_NOT_A_NUMBER:
+ case STRINGTOCOMPLEX_NO_ERROR:
+ {
+ if (haveRange)
+ {
+ int newM = 0;
+ int newN = 0;
+ complexArray *csvComplexRange = getRangeAsComplexArray(ptrComplexArray, result->m, result->n, iRange, &newM, &newN);
+ if (csvComplexRange)
+ {
+ if (csvComplexRange->isComplex)
+ {
+ sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, newM, newN, ptrComplexArray->realPart, ptrComplexArray->imagPart);
+ }
+ else
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, newM, newN, csvComplexRange->realPart);
+ }
+ freeComplexArray(csvComplexRange);
+ csvComplexRange = NULL;
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ }
+ else
+ {
+ if (ptrComplexArray->isComplex)
+ {
+ sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, result->m, result->n, ptrComplexArray->realPart, ptrComplexArray->imagPart);
+ }
+ else
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, result->m, result->n, ptrComplexArray->realPart);
+ }
+ }
+ freeComplexArray(ptrComplexArray);
+ ptrComplexArray = NULL;
+ }
+ break;
+
+ case STRINGTOCOMPLEX_MEMORY_ALLOCATION:
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ break;
+
+ default:
+ case STRINGTOCOMPLEX_ERROR:
+ {
+ Scierror(999, _("%s: can not convert data.\n"), fname);
+ }
+ break;
+ }
+ }
+
+ freeCsvResult(result);
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(17, _("%s: Memory allocation error.\n"), fname);
+ return 0;
+ }
+ else
+ {
+ LhsVar(1) = Rhs + 1;
+ PutLhsVar();
+ }
+ }
+ break;
+
+ case CSV_READ_MEMORY_ALLOCATION:
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+ break;
+
+ case CSV_READ_COLUMNS_ERROR:
+ {
+ Scierror(999, _("%s: can not read text: Error in the column structure\n"), fname);
+ }
+ break;
+
+ case CSV_READ_READLINES_ERROR:
+ case CSV_READ_ERROR:
+ {
+ Scierror(999, _("%s: can not read text.\n"), fname);
+ }
+ break;
+ }
+ }
+ else
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ }
+
+ freeVar(&text, nbLines, &lengthText, &separator, &decimal, &conversion, &iRange);
+ return 0;
+}
+// =============================================================================
+static void freeVar(char*** text, int sizeText, int** lengthText, char** separator, char** decimal, char** conversion, int** iRange)
+{
+ if (text && *text)
+ {
+ freeArrayOfString(*text, sizeText);
+ *text = NULL;
+ }
+
+ if (lengthText && *lengthText)
+ {
+ FREE(*lengthText);
+ *lengthText = NULL;
+ }
+
+ if (separator && *separator)
+ {
+ FREE(*separator);
+ *separator = NULL;
+ }
+
+ if (decimal && *decimal)
+ {
+ FREE(*decimal);
+ *decimal = NULL;
+ }
+
+ if (conversion && *conversion)
+ {
+ FREE(*conversion);
+ *conversion = NULL;
+ }
+
+ if (iRange && *iRange)
+ {
+ FREE(*iRange);
+ *iRange = NULL;
+ }
+}
diff --git a/modules/spreadsheet/sci_gateway/c/sci_csvWrite.c b/modules/spreadsheet/sci_gateway/c/sci_csvWrite.c
new file mode 100755
index 000000000..fa50c1517
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_csvWrite.c
@@ -0,0 +1,328 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - 2012 - INRIA - Allan CORNET
+ * Copyright (C) 2011 - INRIA - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ * This code is also published under the GPL v3 license.
+ *
+ */
+#include <string.h>
+#include <stdio.h>
+#include "api_scilab.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "csvWrite.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "csvDefault.h"
+#include "checkCsvWriteFormat.h"
+#include "gw_csv_helpers.h"
+
+
+static void freeVar(char** separator, char** decimal, char** filename, char** precisionFormat, char*** pHeadersLines, int sizeHeader);
+// =============================================================================
+// csvWrite(M, filename[, separator, decimal, precision]) */
+// with M string or double (not complex)
+// =============================================================================
+int sci_csvWrite(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int iErr = 0;
+ csvWriteError csvError = CSV_WRITE_ERROR;
+
+ char *separator = NULL;
+ char *decimal = NULL;
+ char *filename = NULL;
+ char *precisionFormat = NULL;
+ char **pHeadersLines = NULL;
+ int nbHeadersLines = 0;
+
+ char **pStringValues = NULL;
+ double *pDoubleValuesReal = NULL;
+ double *pDoubleValuesImag = NULL;
+ int bIsComplex = 0;
+ int mValues = 0;
+ int nValues = 0;
+
+ int *piAddressVarTwo = NULL;
+ int m2 = 0, n2 = 0;
+ int iType2 = 0;
+
+ int *piAddressVarOne = NULL;
+ int m1 = 0, n1 = 0;
+ int iType1 = 0;
+
+ CheckRhs(2, 6);
+ CheckLhs(1, 1);
+
+ if (Rhs > 5)
+ {
+ int isOnlyRowOrCol = 0;
+ int m6 = 0;
+ int n6 = 0;
+ pHeadersLines = csv_getArgumentAsMatrixOfString(pvApiCtx, 6, fname, &m6, &n6, &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+ isOnlyRowOrCol = ((m6 > 1) && (n6 == 1)) || ((m6 == 1) && (n6 > 1)) || ((m6 == 1) && (n6 == 1));
+ if (!isOnlyRowOrCol)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ Scierror(999, _("%s: Wrong size for input argument #%d: A 1-by-n or m-by-1 array of strings expected.\n"), fname, 6);
+ return 0;
+ }
+ nbHeadersLines = m6 * n6;
+ }
+
+ if (Rhs > 4)
+ {
+ if (csv_isDoubleScalar(pvApiCtx, 5))
+ {
+#define FORMAT_FIELDVALUESTR "%%.%dlg"
+ int iFormatValue = (int) csv_getArgumentAsScalarDouble(pvApiCtx, 5, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+
+ if ((iFormatValue < 1) || (iFormatValue > 17))
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: A double (value 1 to 17) expected.\n"), fname, 5);
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+
+ precisionFormat = (char*)MALLOC(sizeof(char) * ((int)strlen(FORMAT_FIELDVALUESTR) + 1));
+ if (precisionFormat == NULL)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+ sprintf(precisionFormat, FORMAT_FIELDVALUESTR, iFormatValue);
+ }
+ else
+ {
+ precisionFormat = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 5, fname, getCsvDefaultPrecision(), &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+
+ if (checkCsvWriteFormat(precisionFormat))
+ {
+ Scierror(999, _("%s: Not supported format %s.\n"), fname, precisionFormat);
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ precisionFormat = strdup(getCsvDefaultPrecision());
+ }
+
+ if (Rhs > 3)
+ {
+ decimal = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 4, fname, getCsvDefaultDecimal(), &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+
+ if (strcmp(decimal, ".") && strcmp(decimal, ","))
+ {
+ //invalid value
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"), "write_csv", 4, ".", ",");
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 1;
+ }
+ }
+ else
+ {
+ decimal = strdup(getCsvDefaultDecimal());
+ }
+
+ if (Rhs > 2)
+ {
+ separator = csv_getArgumentAsStringWithEmptyManagement(pvApiCtx, 3, fname, getCsvDefaultSeparator(), &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+ }
+ else
+ {
+ separator = strdup(getCsvDefaultSeparator());
+ }
+
+ filename = csv_getArgumentAsString(pvApiCtx, 2, fname, &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
+ if (sciErr.iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ printError(&sciErr, 0);
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarOne, &iType1);
+ if (sciErr.iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ printError(&sciErr, 0);
+ return 0;
+ }
+
+ if (iType1 == sci_strings)
+ {
+ pStringValues = csv_getArgumentAsMatrixOfString(pvApiCtx, 1, fname, &m1, &n1, &iErr);
+ if (iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+ }
+ }
+ else if (iType1 == sci_matrix)
+ {
+ if (isVarComplex(pvApiCtx, piAddressVarOne))
+ {
+ bIsComplex = 1;
+ sciErr = getComplexMatrixOfDouble(pvApiCtx, piAddressVarOne, &m1, &n1, &pDoubleValuesReal, &pDoubleValuesImag);
+ }
+ else
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarOne, &m1, &n1, &pDoubleValuesReal);
+ }
+
+ if (sciErr.iErr)
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ printError(&sciErr, 0);
+ return 0;
+ }
+ }
+ else
+ {
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ Scierror(999, _("%s: Wrong type for input argument #%d: A matrix of string or a matrix of real expected.\n"), fname, 1);
+ return 0;
+ }
+
+ if (pStringValues)
+ {
+ csvError = csvWrite_string(filename,
+ (const char**)pStringValues, m1, n1,
+ separator,
+ decimal,
+ (const char**)pHeadersLines, nbHeadersLines);
+ }
+ else
+ {
+ if (bIsComplex)
+ {
+ csvError = csvWrite_complex(filename,
+ pDoubleValuesReal,
+ pDoubleValuesImag,
+ m1, n1,
+ separator,
+ decimal,
+ precisionFormat,
+ (const char**)pHeadersLines, nbHeadersLines);
+ }
+ else
+ {
+ csvError = csvWrite_double(filename,
+ pDoubleValuesReal, m1, n1,
+ separator,
+ decimal,
+ precisionFormat,
+ (const char**)pHeadersLines, nbHeadersLines);
+ }
+ }
+
+ switch (csvError)
+ {
+ case CSV_WRITE_SEPARATOR_DECIMAL_EQUAL:
+ {
+ Scierror(999, _("%s: separator and decimal must have different values.\n"), fname);
+ }
+ break;
+ case CSV_WRITE_NO_ERROR:
+ {
+ LhsVar(1) = 0;
+ PutLhsVar();
+ }
+ break;
+
+ case CSV_WRITE_FOPEN_ERROR:
+ {
+ Scierror(999, _("%s: can not open file %s.\n"), fname, filename);
+ }
+ break;
+ default:
+ case CSV_WRITE_ERROR:
+ {
+ Scierror(999, _("%s: error.\n"), fname);
+ }
+ break;
+ }
+
+ freeVar(&separator, &decimal, &filename, &precisionFormat, &pHeadersLines, nbHeadersLines);
+ return 0;
+}
+// =============================================================================
+static void freeVar(char** separator, char** decimal, char** filename, char** precisionFormat, char*** pHeadersLines, int sizeHeader)
+{
+ if (separator && *separator)
+ {
+ FREE(*separator);
+ *separator = NULL;
+ }
+
+ if (decimal && *decimal)
+ {
+ FREE(*decimal);
+ *decimal = NULL;
+ }
+
+ if (filename && *filename)
+ {
+ FREE(*filename);
+ *filename = NULL;
+ }
+
+ if (precisionFormat && *precisionFormat)
+ {
+ FREE(*precisionFormat);
+ *precisionFormat = NULL;
+ }
+
+ if (pHeadersLines && *pHeadersLines)
+ {
+ freeArrayOfString(*pHeadersLines, sizeHeader);
+ *pHeadersLines = NULL;
+ }
+
+}
+
diff --git a/modules/spreadsheet/sci_gateway/c/sci_xls_open.c b/modules/spreadsheet/sci_gateway/c/sci_xls_open.c
new file mode 100755
index 000000000..8a9fe899a
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_xls_open.c
@@ -0,0 +1,250 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2005-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+ * Copyright (C) 2005-2008 - INRIA - Pierrick MODE
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "stack-c.h"
+#include "gw_spreadsheet.h"
+#include "xls.h"
+#include "ole.h"
+#include "ripole.h"
+#include "expandPathVariable.h"
+#include "MALLOC.h"
+#include "mopen.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "tmpdir.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#include "FileExist.h"
+/*--------------------------------------------------------------------------*/
+static char *xls_basename(char *name);
+
+/*--------------------------------------------------------------------------*/
+int sci_xls_open(char *fname, unsigned long fname_len)
+{
+#undef IN
+#define max_char_xls_open 256
+ int i = 0, m1 = 0, n1 = 0, l1 = 0, l2 = 0, one = 1, fd = 0, f_swap = 0;
+ int ierr = 0, ns = 0, result = 0;
+ double res;
+ char **sst = NULL;
+ char **Sheetnames = NULL;
+ int *Abspos = NULL;
+ int nsheets = 0;
+ char *filename_IN = NULL;
+ char TMP[max_char_xls_open];
+ char* base_name = NULL;
+
+ char sep[2];
+ char *TMPDIR = NULL;
+
+#ifdef _MSC_VER
+ sep[0] = '\\';
+#else
+ sep[0] = '/';
+#endif
+ sep[1] = '\0';
+
+ CheckLhs(4, 4);
+ CheckRhs(1, 1);
+
+ if (VarType(1) != sci_strings)
+ {
+ Scierror(999, "%s: Invalid type of input argument: String expected.", fname);
+ return 0;
+ }
+
+ /* checking variable file */
+ GetRhsVar(1, STRING_DATATYPE, &m1, &n1, &l1);
+
+ filename_IN = expandPathVariable(cstk(l1));
+
+ {
+ /* bug 5615 */
+ /* remove blank characters @ the end */
+ int len = (int)strlen(filename_IN);
+ int i = 0;
+
+ if (len >= 1)
+ {
+ for (i = len - 1; i >= 0; i--)
+ {
+ if (filename_IN[i] == ' ')
+ {
+ filename_IN[i] = '\0';
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ if (!FileExist(filename_IN))
+ {
+ Scierror(999, _("The file %s does not exist.\n"), filename_IN);
+ FREE(filename_IN);
+ return 0;
+ }
+ }
+
+ TMPDIR = getTMPDIR();
+ strncpy(TMP, TMPDIR, sizeof(TMP));
+ FREE(TMPDIR);
+
+ strncat(TMP, sep, sizeof(TMP) - strlen(TMP) - 1);
+ TMP[sizeof(TMP) - 1] = '\0';
+
+ base_name = xls_basename(filename_IN);
+ strncat(TMP, base_name, sizeof(TMP) - strlen(TMP) - 1);
+ TMP[sizeof(TMP) - 1] = '\0';
+
+ result = ripole(filename_IN, TMP, 0, 0);
+ if (result != OLE_OK)
+ {
+ if (result == OLEER_NO_INPUT_FILE)
+ {
+ Scierror(999, _("The file %s does not exist.\n"), filename_IN);
+ }
+ else if (result == OLEER_NOT_OLE_FILE ||
+ result == OLEER_INSANE_OLE_FILE ||
+ result == OLEER_LOADFAT_BAD_BOUNDARY || result == OLEER_MINIFAT_READ_FAIL || result == OLEER_PROPERTIES_READ_FAIL)
+ {
+ Scierror(999, _("%s: File %s is not an ole2 file.\n"), fname, filename_IN);
+ FREE(filename_IN);
+ }
+ else if (result == -1)
+ {
+ Scierror(999, _("%s: Cannot open file %s.\n"), fname, filename_IN);
+ FREE(filename_IN);
+ }
+ return 0;
+ }
+ strcat(TMP, sep);
+ strcat(TMP, "Workbook");
+ C2F(mopen) (&fd, TMP, "rb", &f_swap, &res, &ierr);
+ if (ierr != 0)
+ {
+ Scierror(999, _("%s: There is no xls stream in the ole2 file %s.\n"), fname, filename_IN);
+ FREE(filename_IN);
+ return 0;
+ }
+
+ FREE(filename_IN);
+
+ CreateVar(Rhs + 1, MATRIX_OF_INTEGER_DATATYPE, &one, &one, &l2);
+ *istk(l2) = fd; /* logical unit */
+
+ xls_open(&ierr, &fd, &sst, &ns, &Sheetnames, &Abspos, &nsheets);
+ /*return *err:
+ * 0 = OK
+ * 1 = not an OLE file
+ * 2 = no Workbook included
+ * 3 = memory allocation problem
+ * 4 = incorrect file
+ * 5 = not a BIFF8 xls file
+ */
+ switch (ierr)
+ {
+ case 0:
+ /* OK */
+ break;
+
+ case 1:
+ Scierror(999, _("%s: Not an ole2 file.\n"), fname);
+ return 0;
+
+ case 2:
+ Scierror(999, _("%s: The file has no Workbook directory.\n"), fname);
+ return 0;
+
+ case 3:
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 0;
+
+ case 4:
+ Scierror(990, _("%s: Incorrect or corrupted file.\n"), fname);
+ return 0;
+
+ case 5:
+ Scierror(999, _("%s: Only BIFF8 file format is handled.\n"), fname);
+ return 0;
+
+ default:
+ break;
+
+ }
+
+ if (ns != 0)
+ {
+ /* Create a typed list to return the properties */
+ CreateVarFromPtr(Rhs + 2, MATRIX_OF_STRING_DATATYPE, &one, &ns, sst);
+ freeArrayOfString(sst, ns);
+ }
+ else
+ {
+ CreateVar(Rhs + 2, MATRIX_OF_DOUBLE_DATATYPE, &ns, &ns, &l2);
+ }
+
+ if (nsheets != 0)
+ {
+ /* Create a typed list to return the properties */
+ CreateVarFromPtr(Rhs + 3, MATRIX_OF_STRING_DATATYPE, &one, &nsheets, Sheetnames);
+ freeArrayOfString(Sheetnames, nsheets);
+
+ CreateVar(Rhs + 4, MATRIX_OF_DOUBLE_DATATYPE, &one, &nsheets, &l2);
+ for (i = 0; i < nsheets; i++)
+ {
+ *stk(l2 + i) = Abspos[i];
+ }
+ if (Abspos)
+ {
+ FREE(Abspos);
+ Abspos = NULL;
+ }
+ }
+ else
+ {
+ CreateVar(Rhs + 3, MATRIX_OF_DOUBLE_DATATYPE, &nsheets, &nsheets, &l2);
+ CreateVar(Rhs + 4, MATRIX_OF_DOUBLE_DATATYPE, &nsheets, &nsheets, &l2);
+ }
+
+ LhsVar(1) = Rhs + 1;
+ LhsVar(2) = Rhs + 2;
+ LhsVar(3) = Rhs + 3;
+ LhsVar(4) = Rhs + 4;
+
+ PutLhsVar();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------------*/
+static char *xls_basename(char *name)
+{
+ char *base = NULL;
+
+#ifdef _MSC_VER
+ base = strrchr(name, '\\');
+#else
+ base = strrchr(name, '/');
+#endif
+ return base ? base + 1 : name;
+}
+
+/*--------------------------------------------------------------------------*/
diff --git a/modules/spreadsheet/sci_gateway/c/sci_xls_read.c b/modules/spreadsheet/sci_gateway/c/sci_xls_read.c
new file mode 100755
index 000000000..34f17f058
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/c/sci_xls_read.c
@@ -0,0 +1,99 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2005-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+ * Copyright (C) 2005-2008 - INRIA - Pierrick MODE
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "stack-c.h"
+#include "gw_spreadsheet.h"
+#include "xls.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "MALLOC.h"
+/*--------------------------------------------------------------------------*/
+int sci_xls_read(char *fname, unsigned long fname_len)
+{
+ int m1 = 0, n1 = 0, l1 = 0, zero = 0, ierr = 0;
+ double *data = NULL;
+ int *ind = NULL;
+ int M = 0, N = 0, MN = 0;
+ int pos = 0, fd = 0;
+
+ CheckLhs(2, 2);
+ CheckRhs(2, 2);
+
+ if (VarType(1) != sci_matrix)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: Scalar expected.\n"), fname, 1);
+ return 0;
+ }
+
+ if (VarType(2) != sci_matrix)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: Scalar expected.\n"), fname, 2);
+ return 0;
+ }
+
+
+ /* checking variable fd */
+ GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+ fd = (int) * stk(l1);
+ /* checking variable Pos */
+ GetRhsVar(2, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+ pos = (int) * stk(l1);
+
+ xls_read(&fd, &pos, &data, &ind, &N, &M, &ierr);
+
+ switch (ierr)
+ {
+ case 1 :
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 0;
+ break;
+ case 2 :
+ Scierror(999, _("%s: Failed to read expected data, may be invalid xls file.\n"), fname);
+ return 0;
+ break;
+ case 3 :
+ Scierror(999, _("%s: End of file.\n"), fname);
+ return 0;
+ break;
+ default :
+ /* no error */
+ break;
+ }
+
+ MN = M * N;
+
+ if (MN == 0)
+ {
+ CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &zero, &zero, &l1);
+ CreateVar(Rhs + 2, MATRIX_OF_DOUBLE_DATATYPE, &zero, &zero, &l1);
+ }
+ else
+ {
+ CreateVarFromPtr(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &N, &M, &data);
+ CreateVarFromPtr(Rhs + 2, MATRIX_OF_INTEGER_DATATYPE, &N, &M, &ind);
+ FREE(data);
+ data = NULL;
+ FREE(ind);
+ ind = NULL;
+ }
+ LhsVar(1) = Rhs + 1;
+ LhsVar(2) = Rhs + 2;
+ PutLhsVar();
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/spreadsheet/sci_gateway/spreadsheet_gateway.xml b/modules/spreadsheet/sci_gateway/spreadsheet_gateway.xml
new file mode 100755
index 000000000..7a70f7784
--- /dev/null
+++ b/modules/spreadsheet/sci_gateway/spreadsheet_gateway.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<!--
+ Scilab Interface description. In this file, we define the list of the function which
+ will be available into Scilab and the link to the "native" function.
+
+ gatewayId is the position in the hashtable 'Interfaces' defined in the
+ file SCI/modules/core/src/c/callinterf.h
+
+ primitiveId is the position in the hashtable '<module>Table Tab[]' defined
+ in the file modules/<module>/sci_gateway/c/gw_<module>.c
+
+ primitiveName is the name of the Scilab function
+
+ Don't touch if you do not know what you are doing
+-->
+
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="spreadsheet">
+ <PRIMITIVE gatewayId="56" primitiveId="1" primitiveName="xls_open" />
+ <PRIMITIVE gatewayId="56" primitiveId="2" primitiveName="xls_read" />
+ <PRIMITIVE gatewayId="56" primitiveId="3" primitiveName="csvDefault" />
+ <PRIMITIVE gatewayId="56" primitiveId="4" primitiveName="csvRead" />
+ <PRIMITIVE gatewayId="56" primitiveId="5" primitiveName="csvStringToDouble" />
+ <PRIMITIVE gatewayId="56" primitiveId="6" primitiveName="csvTextScan" />
+ <PRIMITIVE gatewayId="56" primitiveId="7" primitiveName="csvWrite" />
+ <PRIMITIVE gatewayId="56" primitiveId="8" primitiveName="write_csv" />
+ <PRIMITIVE gatewayId="56" primitiveId="9" primitiveName="read_csv" />
+</GATEWAY>