summaryrefslogtreecommitdiff
path: root/modules/string/src
diff options
context:
space:
mode:
Diffstat (limited to 'modules/string/src')
-rwxr-xr-xmodules/string/src/c/.deps/.dirstamp0
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-InitializeString.Plo14
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-StringConvert.Plo9
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-code2str.Plo106
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-complex_array.Plo106
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-convstr.Plo95
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-cvstr.Plo165
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-getfastcode.Plo157
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-isalphanum.Plo122
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-isdigit.Plo124
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-isletter.Plo125
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-isnum.Plo103
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-men_Sutils.Plo131
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-partfunction.Plo135
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-pcre_error.Plo50
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-pcre_private.Plo221
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-scistrtostr.Plo98
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-setScilabCharactersCodes.Plo62
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stringToComplex.Plo177
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stringToDouble.Plo192
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stringsCompare.Plo108
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stringsstrrchr.Plo148
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stringsstrrev.Plo151
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stripblanks.Plo147
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-stristr.Plo62
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-strsplit.Plo124
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-strsubst.Plo150
-rwxr-xr-xmodules/string/src/c/.deps/libscistring_algo_la-tokens.Plo146
-rwxr-xr-xmodules/string/src/c/.dirstamp0
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-InitializeString.obin0 -> 3392 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-StringConvert.obin0 -> 3616 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-code2str.obin0 -> 5776 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-complex_array.obin0 -> 9960 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-convstr.obin0 -> 7512 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-cvstr.obin0 -> 10880 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-getfastcode.obin0 -> 5992 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-isalphanum.obin0 -> 5424 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-isdigit.obin0 -> 5424 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-isletter.obin0 -> 7504 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-isnum.obin0 -> 6280 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-men_Sutils.obin0 -> 10752 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-partfunction.obin0 -> 7280 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-pcre_error.obin0 -> 7032 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-pcre_private.obin0 -> 60776 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-scistrtostr.obin0 -> 5936 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-setScilabCharactersCodes.obin0 -> 4576 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stringToComplex.obin0 -> 42200 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stringToDouble.obin0 -> 16920 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stringsCompare.obin0 -> 6328 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stringsstrrchr.obin0 -> 10592 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stringsstrrev.obin0 -> 9696 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stripblanks.obin0 -> 12104 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-stristr.obin0 -> 5496 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-strsplit.obin0 -> 9944 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-strsubst.obin0 -> 22320 bytes
-rwxr-xr-xmodules/string/src/c/.libs/libscistring_algo_la-tokens.obin0 -> 9920 bytes
-rwxr-xr-xmodules/string/src/c/CreateEmptystr.c49
-rwxr-xr-xmodules/string/src/c/CreateEmptystr.h31
-rwxr-xr-xmodules/string/src/c/DllMainString.c36
-rwxr-xr-xmodules/string/src/c/InitializeString.c23
-rwxr-xr-xmodules/string/src/c/Scilab_windows_Import.def8
-rwxr-xr-xmodules/string/src/c/StringConvert.c61
-rwxr-xr-xmodules/string/src/c/code2str.c43
-rwxr-xr-xmodules/string/src/c/complex_array.c159
-rwxr-xr-xmodules/string/src/c/config.h44
-rwxr-xr-xmodules/string/src/c/convstr.c47
-rwxr-xr-xmodules/string/src/c/convstr.h36
-rwxr-xr-xmodules/string/src/c/core_Import.def27
-rwxr-xr-xmodules/string/src/c/cvstr.c107
-rwxr-xr-xmodules/string/src/c/functions_Import.def9
-rwxr-xr-xmodules/string/src/c/getfastcode.c102
-rwxr-xr-xmodules/string/src/c/isalphanum.c53
-rwxr-xr-xmodules/string/src/c/isalphanum.h30
-rwxr-xr-xmodules/string/src/c/isdigit.c53
-rwxr-xr-xmodules/string/src/c/isdigit.h33
-rwxr-xr-xmodules/string/src/c/isletter.c84
-rwxr-xr-xmodules/string/src/c/isletter.h37
-rwxr-xr-xmodules/string/src/c/isnum.c46
-rwxr-xr-xmodules/string/src/c/isnum.h31
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-InitializeString.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-StringConvert.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-code2str.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-complex_array.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-convstr.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-cvstr.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-getfastcode.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-isalphanum.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-isdigit.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-isletter.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-isnum.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-men_Sutils.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-partfunction.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-pcre_error.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-pcre_private.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-scistrtostr.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-setScilabCharactersCodes.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stringToComplex.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stringToDouble.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stringsCompare.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stringsstrrchr.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stringsstrrev.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stripblanks.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-stristr.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-strsplit.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-strsubst.lo12
-rwxr-xr-xmodules/string/src/c/libscistring_algo_la-tokens.lo12
-rwxr-xr-xmodules/string/src/c/linpack_f_Import.def5
-rwxr-xr-xmodules/string/src/c/localization_Import.def6
-rwxr-xr-xmodules/string/src/c/men_Sutils.c129
-rwxr-xr-xmodules/string/src/c/partfunction.c72
-rwxr-xr-xmodules/string/src/c/partfunction.h28
-rwxr-xr-xmodules/string/src/c/pcre_error.c65
-rwxr-xr-xmodules/string/src/c/pcre_error.h28
-rwxr-xr-xmodules/string/src/c/pcre_internal.h1117
-rwxr-xr-xmodules/string/src/c/pcre_private.c1145
-rwxr-xr-xmodules/string/src/c/pcre_tables.c321
-rwxr-xr-xmodules/string/src/c/scistrtostr.c53
-rwxr-xr-xmodules/string/src/c/setScilabCharactersCodes.c48
-rwxr-xr-xmodules/string/src/c/setScilabCharactersCodes.h58
-rwxr-xr-xmodules/string/src/c/string.rc96
-rwxr-xr-xmodules/string/src/c/string.vcxproj352
-rwxr-xr-xmodules/string/src/c/string.vcxproj.filters345
-rwxr-xr-xmodules/string/src/c/stringToComplex.c538
-rwxr-xr-xmodules/string/src/c/stringToDouble.c186
-rwxr-xr-xmodules/string/src/c/string_f_Import.def9
-rwxr-xr-xmodules/string/src/c/stringsCompare.c65
-rwxr-xr-xmodules/string/src/c/stringsCompare.h32
-rwxr-xr-xmodules/string/src/c/stringsstrrchr.c76
-rwxr-xr-xmodules/string/src/c/stringsstrrchr.h38
-rwxr-xr-xmodules/string/src/c/stringsstrrev.c85
-rwxr-xr-xmodules/string/src/c/stringsstrrev.h22
-rwxr-xr-xmodules/string/src/c/stripblanks.c152
-rwxr-xr-xmodules/string/src/c/stristr.c56
-rwxr-xr-xmodules/string/src/c/strsplit.c106
-rwxr-xr-xmodules/string/src/c/strsplit.h37
-rwxr-xr-xmodules/string/src/c/strsubst.c252
-rwxr-xr-xmodules/string/src/c/tokens.c93
-rwxr-xr-xmodules/string/src/c/tokens.h31
-rwxr-xr-xmodules/string/src/c/ucp.h149
-rwxr-xr-xmodules/string/src/cpp/.deps/.dirstamp0
-rwxr-xr-xmodules/string/src/cpp/.deps/libscistring_algo_la-sort_inter.Plo185
-rwxr-xr-xmodules/string/src/cpp/.dirstamp0
-rwxr-xr-xmodules/string/src/cpp/.libs/libscistring_algo_la-sort_inter.obin0 -> 67272 bytes
-rwxr-xr-xmodules/string/src/cpp/libscistring_algo_la-sort_inter.lo12
-rwxr-xr-xmodules/string/src/cpp/sort_inter.cpp23
-rwxr-xr-xmodules/string/src/cpp/sort_inter.h22
-rwxr-xr-xmodules/string/src/fortran/Core_f_Import.def17
-rwxr-xr-xmodules/string/src/fortran/core_Import.def19
-rwxr-xr-xmodules/string/src/fortran/elementary_functions_Import.def5
-rwxr-xr-xmodules/string/src/fortran/elementary_functions_f_Import.def5
-rwxr-xr-xmodules/string/src/fortran/linpack_f_Import.def5
-rwxr-xr-xmodules/string/src/fortran/output_stream_Import.def5
-rwxr-xr-xmodules/string/src/fortran/polynomials_f_Import.def9
-rwxr-xr-xmodules/string/src/fortran/string_Import.def5
-rwxr-xr-xmodules/string/src/fortran/string_f.rc96
-rwxr-xr-xmodules/string/src/fortran/string_f.vfproj121
-rwxr-xr-xmodules/string/src/fortran/string_f2c.vcxproj300
-rwxr-xr-xmodules/string/src/fortran/string_f2c.vcxproj.filters67
158 files changed, 11392 insertions, 0 deletions
diff --git a/modules/string/src/c/.deps/.dirstamp b/modules/string/src/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/string/src/c/.deps/.dirstamp
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-InitializeString.Plo b/modules/string/src/c/.deps/libscistring_algo_la-InitializeString.Plo
new file mode 100755
index 000000000..f0a6b6bd6
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-InitializeString.Plo
@@ -0,0 +1,14 @@
+src/c/libscistring_algo_la-InitializeString.lo: src/c/InitializeString.c \
+ /usr/include/stdc-predef.h includes/InitializeString.h \
+ ../../modules/core/includes/BOOL.h includes/dynlib_string.h \
+ src/c/setScilabCharactersCodes.h
+
+/usr/include/stdc-predef.h:
+
+includes/InitializeString.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/dynlib_string.h:
+
+src/c/setScilabCharactersCodes.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-StringConvert.Plo b/modules/string/src/c/.deps/libscistring_algo_la-StringConvert.Plo
new file mode 100755
index 000000000..356aa1270
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-StringConvert.Plo
@@ -0,0 +1,9 @@
+src/c/libscistring_algo_la-StringConvert.lo: src/c/StringConvert.c \
+ /usr/include/stdc-predef.h includes/StringConvert.h \
+ includes/dynlib_string.h
+
+/usr/include/stdc-predef.h:
+
+includes/StringConvert.h:
+
+includes/dynlib_string.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-code2str.Plo b/modules/string/src/c/.deps/libscistring_algo_la-code2str.Plo
new file mode 100755
index 000000000..0f2808d37
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-code2str.Plo
@@ -0,0 +1,106 @@
+src/c/libscistring_algo_la-code2str.lo: src/c/code2str.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/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 includes/code2str.h \
+ includes/dynlib_string.h includes/getfastcode.h \
+ ../../modules/core/includes/machine.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/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:
+
+includes/code2str.h:
+
+includes/dynlib_string.h:
+
+includes/getfastcode.h:
+
+../../modules/core/includes/machine.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-complex_array.Plo b/modules/string/src/c/.deps/libscistring_algo_la-complex_array.Plo
new file mode 100755
index 000000000..945ac23b3
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-complex_array.Plo
@@ -0,0 +1,106 @@
+src/c/libscistring_algo_la-complex_array.lo: src/c/complex_array.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/complex_array.h \
+ includes/dynlib_string.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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
+
+/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/complex_array.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-convstr.Plo b/modules/string/src/c/.deps/libscistring_algo_la-convstr.Plo
new file mode 100755
index 000000000..16fad8bb5
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-convstr.Plo
@@ -0,0 +1,95 @@
+src/c/libscistring_algo_la-convstr.lo: src/c/convstr.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 \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/wctype.h \
+ includes/gw_string.h includes/dynlib_string.h src/c/convstr.h \
+ includes/dynlib_string.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:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/wctype.h:
+
+includes/gw_string.h:
+
+includes/dynlib_string.h:
+
+src/c/convstr.h:
+
+includes/dynlib_string.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-cvstr.Plo b/modules/string/src/c/.deps/libscistring_algo_la-cvstr.Plo
new file mode 100755
index 000000000..9ae5fd237
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-cvstr.Plo
@@ -0,0 +1,165 @@
+src/c/libscistring_algo_la-cvstr.lo: src/c/cvstr.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/cvstr.h \
+ ../../modules/core/includes/machine.h includes/dynlib_string.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 /usr/include/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h includes/getfastcode.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/cvstr.h:
+
+../../modules/core/includes/machine.h:
+
+includes/dynlib_string.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:
+
+/usr/include/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
+
+includes/getfastcode.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-getfastcode.Plo b/modules/string/src/c/.deps/libscistring_algo_la-getfastcode.Plo
new file mode 100755
index 000000000..3e59e86c7
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-getfastcode.Plo
@@ -0,0 +1,157 @@
+src/c/libscistring_algo_la-getfastcode.lo: src/c/getfastcode.c \
+ /usr/include/stdc-predef.h includes/getfastcode.h \
+ ../../modules/core/includes/machine.h includes/dynlib_string.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.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/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/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/stdlib.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/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h
+
+/usr/include/stdc-predef.h:
+
+includes/getfastcode.h:
+
+../../modules/core/includes/machine.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.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/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/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/stdlib.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/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-isalphanum.Plo b/modules/string/src/c/.deps/libscistring_algo_la-isalphanum.Plo
new file mode 100755
index 000000000..4d61cd84c
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-isalphanum.Plo
@@ -0,0 +1,122 @@
+src/c/libscistring_algo_la-isalphanum.lo: src/c/isalphanum.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/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 /usr/include/wctype.h \
+ src/c/isalphanum.h ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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
+
+/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/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:
+
+/usr/include/wctype.h:
+
+src/c/isalphanum.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-isdigit.Plo b/modules/string/src/c/.deps/libscistring_algo_la-isdigit.Plo
new file mode 100755
index 000000000..59b16d825
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-isdigit.Plo
@@ -0,0 +1,124 @@
+src/c/libscistring_algo_la-isdigit.lo: src/c/isdigit.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/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 /usr/include/wctype.h \
+ src/c/isletter.h ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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 src/c/isdigit.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/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:
+
+/usr/include/wctype.h:
+
+src/c/isletter.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
+
+src/c/isdigit.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-isletter.Plo b/modules/string/src/c/.deps/libscistring_algo_la-isletter.Plo
new file mode 100755
index 000000000..b446b2e4e
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-isletter.Plo
@@ -0,0 +1,125 @@
+src/c/libscistring_algo_la-isletter.lo: src/c/isletter.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/ctype.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 /usr/include/wctype.h \
+ src/c/isletter.h ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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
+
+/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/ctype.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:
+
+/usr/include/wctype.h:
+
+src/c/isletter.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-isnum.Plo b/modules/string/src/c/.deps/libscistring_algo_la-isnum.Plo
new file mode 100755
index 000000000..41d950f6c
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-isnum.Plo
@@ -0,0 +1,103 @@
+src/c/libscistring_algo_la-isnum.lo: src/c/isnum.c \
+ /usr/include/stdc-predef.h src/c/isnum.h \
+ ../../modules/core/includes/BOOL.h includes/stringToComplex.h \
+ ../../modules/core/includes/doublecomplex.h includes/complex_array.h \
+ includes/dynlib_string.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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/stdc-predef.h:
+
+src/c/isnum.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/stringToComplex.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+includes/complex_array.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-men_Sutils.Plo b/modules/string/src/c/.deps/libscistring_algo_la-men_Sutils.Plo
new file mode 100755
index 000000000..aabb3c764
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-men_Sutils.Plo
@@ -0,0 +1,131 @@
+src/c/libscistring_algo_la-men_Sutils.lo: src/c/men_Sutils.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/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 includes/men_Sutils.h \
+ includes/dynlib_string.h includes/getfastcode.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/core/includes/freeArrayOfString.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/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/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:
+
+includes/men_Sutils.h:
+
+includes/dynlib_string.h:
+
+includes/getfastcode.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/core/includes/freeArrayOfString.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/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-partfunction.Plo b/modules/string/src/c/.deps/libscistring_algo_la-partfunction.Plo
new file mode 100755
index 000000000..a25a951bf
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-partfunction.Plo
@@ -0,0 +1,135 @@
+src/c/libscistring_algo_la-partfunction.lo: src/c/partfunction.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/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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 src/c/partfunction.h \
+ ../../modules/core/includes/freeArrayOfString.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/core/includes/BOOL.h \
+ ../../modules/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h \
+ ../../modules/core/includes/BOOL.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/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
+
+src/c/partfunction.h:
+
+../../modules/core/includes/freeArrayOfString.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/core/includes/BOOL.h:
+
+../../modules/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-pcre_error.Plo b/modules/string/src/c/.deps/libscistring_algo_la-pcre_error.Plo
new file mode 100755
index 000000000..e497e8541
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-pcre_error.Plo
@@ -0,0 +1,50 @@
+src/c/libscistring_algo_la-pcre_error.lo: src/c/pcre_error.c \
+ /usr/include/stdc-predef.h includes/pcre_private.h \
+ includes/dynlib_string.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.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/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/xlocale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+includes/pcre_private.h:
+
+includes/dynlib_string.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.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/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/xlocale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-pcre_private.Plo b/modules/string/src/c/.deps/libscistring_algo_la-pcre_private.Plo
new file mode 100755
index 000000000..152d8516f
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-pcre_private.Plo
@@ -0,0 +1,221 @@
+src/c/libscistring_algo_la-pcre_private.lo: src/c/pcre_private.c \
+ /usr/include/stdc-predef.h /usr/include/ctype.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/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.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/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.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/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.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 /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/errno.h \
+ /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \
+ /usr/include/x86_64-linux-gnu/asm/errno.h \
+ /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
+ /home/shashank/scilab-master_5.5.2/usr/include/pcre.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/core/includes/BOOL.h includes/pcre_private.h \
+ includes/dynlib_string.h includes/strsubst.h \
+ ../../modules/output_stream/includes/sciprint.h \
+ ../../modules/core/includes/warningmode.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/machine.h \
+ /usr/include/x86_64-linux-gnu/sys/time.h \
+ /usr/include/x86_64-linux-gnu/sys/resource.h \
+ /usr/include/x86_64-linux-gnu/bits/resource.h src/c/pcre_internal.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/setjmp.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp2.h src/c/ucp.h \
+ src/c/pcre_tables.c src/c/config.h \
+ /home/shashank/scilab-master_5.5.2/usr/include/pcreposix.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/ctype.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/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.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/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.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/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.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:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/errno.h:
+
+/usr/include/x86_64-linux-gnu/bits/errno.h:
+
+/usr/include/linux/errno.h:
+
+/usr/include/x86_64-linux-gnu/asm/errno.h:
+
+/usr/include/asm-generic/errno.h:
+
+/usr/include/asm-generic/errno-base.h:
+
+/home/shashank/scilab-master_5.5.2/usr/include/pcre.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/pcre_private.h:
+
+includes/dynlib_string.h:
+
+includes/strsubst.h:
+
+../../modules/output_stream/includes/sciprint.h:
+
+../../modules/core/includes/warningmode.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/x86_64-linux-gnu/sys/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/resource.h:
+
+/usr/include/x86_64-linux-gnu/bits/resource.h:
+
+src/c/pcre_internal.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/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp2.h:
+
+src/c/ucp.h:
+
+src/c/pcre_tables.c:
+
+src/c/config.h:
+
+/home/shashank/scilab-master_5.5.2/usr/include/pcreposix.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-scistrtostr.Plo b/modules/string/src/c/.deps/libscistring_algo_la-scistrtostr.Plo
new file mode 100755
index 000000000..1399ddab0
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-scistrtostr.Plo
@@ -0,0 +1,98 @@
+src/c/libscistring_algo_la-scistrtostr.lo: src/c/scistrtostr.c \
+ /usr/include/stdc-predef.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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 includes/scistrtostr.h \
+ includes/dynlib_string.h includes/cvstr.h \
+ ../../modules/core/includes/machine.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
+
+includes/scistrtostr.h:
+
+includes/dynlib_string.h:
+
+includes/cvstr.h:
+
+../../modules/core/includes/machine.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-setScilabCharactersCodes.Plo b/modules/string/src/c/.deps/libscistring_algo_la-setScilabCharactersCodes.Plo
new file mode 100755
index 000000000..d05be3d4b
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-setScilabCharactersCodes.Plo
@@ -0,0 +1,62 @@
+src/c/libscistring_algo_la-setScilabCharactersCodes.lo: \
+ src/c/setScilabCharactersCodes.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 \
+ src/c/setScilabCharactersCodes.h ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.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:
+
+src/c/setScilabCharactersCodes.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stringToComplex.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stringToComplex.Plo
new file mode 100755
index 000000000..88b448ec8
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stringToComplex.Plo
@@ -0,0 +1,177 @@
+src/c/libscistring_algo_la-stringToComplex.lo: src/c/stringToComplex.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 /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/ctype.h \
+ includes/stringToComplex.h ../../modules/core/includes/doublecomplex.h \
+ includes/complex_array.h includes/dynlib_string.h \
+ ../../modules/core/includes/BOOL.h includes/stringToDouble.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/strsubst.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:
+
+/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/ctype.h:
+
+includes/stringToComplex.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+includes/complex_array.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/stringToDouble.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/strsubst.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stringToDouble.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stringToDouble.Plo
new file mode 100755
index 000000000..7fd6c7b29
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stringToDouble.Plo
@@ -0,0 +1,192 @@
+src/c/libscistring_algo_la-stringToDouble.lo: src/c/stringToDouble.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/xlocale.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/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 /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 \
+ includes/stringToDouble.h includes/dynlib_string.h \
+ ../../modules/core/includes/BOOL.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/x86_64-linux-gnu/bits/xopen_lim.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/xlocale.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/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:
+
+/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:
+
+includes/stringToDouble.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/BOOL.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/x86_64-linux-gnu/bits/xopen_lim.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stringsCompare.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stringsCompare.Plo
new file mode 100755
index 000000000..90603a76b
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stringsCompare.Plo
@@ -0,0 +1,108 @@
+src/c/libscistring_algo_la-stringsCompare.lo: src/c/stringsCompare.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 src/c/stringsCompare.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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 includes/stricmp.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:
+
+src/c/stringsCompare.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
+
+includes/stricmp.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrchr.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrchr.Plo
new file mode 100755
index 000000000..7bf75100c
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrchr.Plo
@@ -0,0 +1,148 @@
+src/c/libscistring_algo_la-stringsstrrchr.lo: src/c/stringsstrrchr.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/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 /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/ctype.h \
+ src/c/stringsstrrchr.h ../../modules/core/includes/BOOL.h \
+ ../../modules/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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/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:
+
+/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/ctype.h:
+
+src/c/stringsstrrchr.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrev.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrev.Plo
new file mode 100755
index 000000000..48b278f94
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stringsstrrev.Plo
@@ -0,0 +1,151 @@
+src/c/libscistring_algo_la-stringsstrrev.lo: src/c/stringsstrrev.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 src/c/stringsstrrev.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h \
+ ../../modules/core/includes/BOOL.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:
+
+src/c/stringsstrrev.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stripblanks.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stripblanks.Plo
new file mode 100755
index 000000000..0768f7a8b
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stripblanks.Plo
@@ -0,0 +1,147 @@
+src/c/libscistring_algo_la-stripblanks.lo: src/c/stripblanks.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 \
+ /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 includes/gw_string.h \
+ includes/dynlib_string.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/stripblanks.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/core/includes/BOOL.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:
+
+/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:
+
+includes/gw_string.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/stripblanks.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-stristr.Plo b/modules/string/src/c/.deps/libscistring_algo_la-stristr.Plo
new file mode 100755
index 000000000..67fe3d854
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-stristr.Plo
@@ -0,0 +1,62 @@
+src/c/libscistring_algo_la-stristr.lo: src/c/stristr.c \
+ /usr/include/stdc-predef.h /usr/include/ctype.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/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.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/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/string.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/stristr.h \
+ includes/dynlib_string.h includes/stricmp.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/ctype.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/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.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/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/string.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/stristr.h:
+
+includes/dynlib_string.h:
+
+includes/stricmp.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-strsplit.Plo b/modules/string/src/c/.deps/libscistring_algo_la-strsplit.Plo
new file mode 100755
index 000000000..52b255ebf
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-strsplit.Plo
@@ -0,0 +1,124 @@
+src/c/libscistring_algo_la-strsplit.lo: src/c/strsplit.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 src/c/strsplit.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/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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/freeArrayOfString.h \
+ ../../modules/core/includes/BOOL.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:
+
+src/c/strsplit.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/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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/freeArrayOfString.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-strsubst.Plo b/modules/string/src/c/.deps/libscistring_algo_la-strsubst.Plo
new file mode 100755
index 000000000..a555fc092
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-strsubst.Plo
@@ -0,0 +1,150 @@
+src/c/libscistring_algo_la-strsubst.lo: src/c/strsubst.c \
+ /usr/include/stdc-predef.h /usr/include/stdio.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/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.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/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/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.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 \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h includes/strsubst.h \
+ includes/dynlib_string.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/pcre_private.h \
+ ../../modules/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdio.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/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.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/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/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.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:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+includes/strsubst.h:
+
+includes/dynlib_string.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/pcre_private.h:
+
+../../modules/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.deps/libscistring_algo_la-tokens.Plo b/modules/string/src/c/.deps/libscistring_algo_la-tokens.Plo
new file mode 100755
index 000000000..2e2d93b90
--- /dev/null
+++ b/modules/string/src/c/.deps/libscistring_algo_la-tokens.Plo
@@ -0,0 +1,146 @@
+src/c/libscistring_algo_la-tokens.lo: src/c/tokens.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/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.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 src/c/tokens.h \
+ ../../modules/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h \
+ ../../modules/core/includes/BOOL.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/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.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:
+
+src/c/tokens.h:
+
+../../modules/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/string/src/c/.dirstamp b/modules/string/src/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/string/src/c/.dirstamp
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-InitializeString.o b/modules/string/src/c/.libs/libscistring_algo_la-InitializeString.o
new file mode 100755
index 000000000..688df9e64
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-InitializeString.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-StringConvert.o b/modules/string/src/c/.libs/libscistring_algo_la-StringConvert.o
new file mode 100755
index 000000000..b3c19d4d9
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-StringConvert.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-code2str.o b/modules/string/src/c/.libs/libscistring_algo_la-code2str.o
new file mode 100755
index 000000000..f66e24946
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-code2str.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-complex_array.o b/modules/string/src/c/.libs/libscistring_algo_la-complex_array.o
new file mode 100755
index 000000000..2c8be8d00
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-complex_array.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-convstr.o b/modules/string/src/c/.libs/libscistring_algo_la-convstr.o
new file mode 100755
index 000000000..a0a78b691
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-convstr.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-cvstr.o b/modules/string/src/c/.libs/libscistring_algo_la-cvstr.o
new file mode 100755
index 000000000..3d790a528
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-cvstr.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-getfastcode.o b/modules/string/src/c/.libs/libscistring_algo_la-getfastcode.o
new file mode 100755
index 000000000..86fb05a68
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-getfastcode.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-isalphanum.o b/modules/string/src/c/.libs/libscistring_algo_la-isalphanum.o
new file mode 100755
index 000000000..c673e546f
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-isalphanum.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-isdigit.o b/modules/string/src/c/.libs/libscistring_algo_la-isdigit.o
new file mode 100755
index 000000000..6d60dd164
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-isdigit.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-isletter.o b/modules/string/src/c/.libs/libscistring_algo_la-isletter.o
new file mode 100755
index 000000000..d27219995
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-isletter.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-isnum.o b/modules/string/src/c/.libs/libscistring_algo_la-isnum.o
new file mode 100755
index 000000000..19d14caba
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-isnum.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-men_Sutils.o b/modules/string/src/c/.libs/libscistring_algo_la-men_Sutils.o
new file mode 100755
index 000000000..9719ae187
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-men_Sutils.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-partfunction.o b/modules/string/src/c/.libs/libscistring_algo_la-partfunction.o
new file mode 100755
index 000000000..9b6fcaf5b
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-partfunction.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-pcre_error.o b/modules/string/src/c/.libs/libscistring_algo_la-pcre_error.o
new file mode 100755
index 000000000..95238e424
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-pcre_error.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-pcre_private.o b/modules/string/src/c/.libs/libscistring_algo_la-pcre_private.o
new file mode 100755
index 000000000..6433b4002
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-pcre_private.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-scistrtostr.o b/modules/string/src/c/.libs/libscistring_algo_la-scistrtostr.o
new file mode 100755
index 000000000..292971092
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-scistrtostr.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-setScilabCharactersCodes.o b/modules/string/src/c/.libs/libscistring_algo_la-setScilabCharactersCodes.o
new file mode 100755
index 000000000..88efd2f9a
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-setScilabCharactersCodes.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stringToComplex.o b/modules/string/src/c/.libs/libscistring_algo_la-stringToComplex.o
new file mode 100755
index 000000000..2f3f24bae
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stringToComplex.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stringToDouble.o b/modules/string/src/c/.libs/libscistring_algo_la-stringToDouble.o
new file mode 100755
index 000000000..764f80e7a
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stringToDouble.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stringsCompare.o b/modules/string/src/c/.libs/libscistring_algo_la-stringsCompare.o
new file mode 100755
index 000000000..29f841e64
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stringsCompare.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrchr.o b/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrchr.o
new file mode 100755
index 000000000..6c9f0507c
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrchr.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrev.o b/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrev.o
new file mode 100755
index 000000000..bc4a0203c
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stringsstrrev.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stripblanks.o b/modules/string/src/c/.libs/libscistring_algo_la-stripblanks.o
new file mode 100755
index 000000000..57d9524fc
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stripblanks.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-stristr.o b/modules/string/src/c/.libs/libscistring_algo_la-stristr.o
new file mode 100755
index 000000000..e6fb3eb49
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-stristr.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-strsplit.o b/modules/string/src/c/.libs/libscistring_algo_la-strsplit.o
new file mode 100755
index 000000000..904966f5e
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-strsplit.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-strsubst.o b/modules/string/src/c/.libs/libscistring_algo_la-strsubst.o
new file mode 100755
index 000000000..aff741b48
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-strsubst.o
Binary files differ
diff --git a/modules/string/src/c/.libs/libscistring_algo_la-tokens.o b/modules/string/src/c/.libs/libscistring_algo_la-tokens.o
new file mode 100755
index 000000000..42a2b9478
--- /dev/null
+++ b/modules/string/src/c/.libs/libscistring_algo_la-tokens.o
Binary files differ
diff --git a/modules/string/src/c/CreateEmptystr.c b/modules/string/src/c/CreateEmptystr.c
new file mode 100755
index 000000000..f90814e06
--- /dev/null
+++ b/modules/string/src/c/CreateEmptystr.c
@@ -0,0 +1,49 @@
+/*--------------------------------------------------------------------------*/
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Cong WU
+ *
+ * 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 <stdio.h>
+#include "gw_string.h"
+#include "stack-c.h"
+#include "MALLOC.h"
+#include "Scierror.h"
+#include "CreateEmptystr.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+/*--------------------------------------------------------------------------*/
+char ** CreateEmptystr(int m1, int n1)
+{
+ int m1n1 = m1 * n1;
+ char **OutputStrings = (char**)MALLOC(sizeof(char*) * (m1n1 + 1));
+
+ if (OutputStrings)
+ {
+ int i = 0;
+ for (i = 0; i < m1n1; i++) /*m1 is the number of row ; n1 is the number of col*/
+ {
+ OutputStrings[i] = (char*)MALLOC(sizeof(char) * (strlen(EMPTY_STRING) + 1));
+ if (OutputStrings[i])
+ {
+ strcpy(OutputStrings[i], EMPTY_STRING);
+ }
+ else
+ {
+ freeArrayOfString(OutputStrings, m1n1);
+ return NULL;
+ }
+ }
+ }
+ return OutputStrings;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/CreateEmptystr.h b/modules/string/src/c/CreateEmptystr.h
new file mode 100755
index 000000000..9c5292d02
--- /dev/null
+++ b/modules/string/src/c/CreateEmptystr.h
@@ -0,0 +1,31 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __CREATEEMPTYSTR_H__
+#define __CREATEEMPTYSTR_H__
+
+#define EMPTY_STRING ""
+
+/**
+* CreateEmptystr
+* Create Empty strings matrix
+* @param[in] dimension row
+* @param[in] dimension col
+* @return an empty string
+*/
+char **CreateEmptystr(int m1, int n1);
+
+#endif /* __CREATEEMPTYSTR_H__ */
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/string/src/c/DllMainString.c b/modules/string/src/c/DllMainString.c
new file mode 100755
index 000000000..46090ab69
--- /dev/null
+++ b/modules/string/src/c/DllMainString.c
@@ -0,0 +1,36 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 <windows.h>
+/*--------------------------------------------------------------------------*/
+#pragma comment(lib,"../../../../bin/pcre.lib")
+#pragma comment(lib,"../../../../bin/pcreposix.lib")
+#pragma comment(lib,"../../../../bin/libintl.lib")
+/*--------------------------------------------------------------------------*/
+int WINAPI DllMain (HINSTANCE hInstance , DWORD reason, PVOID pvReserved)
+{
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/InitializeString.c b/modules/string/src/c/InitializeString.c
new file mode 100755
index 000000000..1297a8830
--- /dev/null
+++ b/modules/string/src/c/InitializeString.c
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 "InitializeString.h"
+#include "setScilabCharactersCodes.h"
+/*--------------------------------------------------------------------------*/
+BOOL InitializeString(void)
+{
+ setScilabCharactersCodes();
+ return TRUE;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/Scilab_windows_Import.def b/modules/string/src/c/Scilab_windows_Import.def
new file mode 100755
index 000000000..1d2c781cf
--- /dev/null
+++ b/modules/string/src/c/Scilab_windows_Import.def
@@ -0,0 +1,8 @@
+LIBRARY scilab_windows.dll
+
+
+EXPORTS
+; ---------------------------------------
+; scilab_windows
+; ---------------------------------------
+ strdup_windows
diff --git a/modules/string/src/c/StringConvert.c b/modules/string/src/c/StringConvert.c
new file mode 100755
index 000000000..d9ac379ce
--- /dev/null
+++ b/modules/string/src/c/StringConvert.c
@@ -0,0 +1,61 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2009
+*
+* 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 "StringConvert.h"
+/*--------------------------------------------------------------------------*/
+int StringConvert(char *str)
+/* changes `\``n` --> `\n` idem for \t and \r */
+{
+ char *str1;
+ int count = 0;
+ str1 = str;
+
+ while ( *str != 0)
+ {
+ if ( *str == '\\' )
+ {
+ switch ( *(str + 1))
+ {
+ case 'n' :
+ *str1 = '\n' ;
+ str1++;
+ str += 2;
+ count++;
+ break;
+ case 't' :
+ *str1 = '\t' ;
+ str1++;
+ str += 2;
+ break;
+ case 'r' :
+ *str1 = '\r' ;
+ str1++;
+ str += 2;
+ break;
+ default :
+ *str1 = *str;
+ str1++;
+ str++;
+ break;
+ }
+ }
+ else
+ {
+ *str1 = *str;
+ str1++;
+ str++;
+ }
+ }
+ *str1 = '\0';
+ return count;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/code2str.c b/modules/string/src/c/code2str.c
new file mode 100755
index 000000000..a08c9bf9e
--- /dev/null
+++ b/modules/string/src/c/code2str.c
@@ -0,0 +1,43 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Cong WU
+ *
+ * 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
+ *
+ */
+
+/* desc : str=code2str(c)
+ Returns character string associated with Scilab int codes.
+ str is such that c(i) is the Scilab int code of part(str,i))*/
+/*------------------------------------------------------------------------*/
+#include <stdlib.h>
+#include <string.h>
+#include "code2str.h"
+#include "getfastcode.h"
+/*--------------------------------------------------------------------------*/
+void code2str(char **Output_Matrix, int *Input_Matrix, int Dim_Input_Matrix)
+{
+ int x = 0;
+ /* To look up in the table */
+ for ( x = 0; x < Dim_Input_Matrix; x++)
+ {
+ Output_Matrix[0][x] = convertScilabCodeToAsciiCode(Input_Matrix[x]);
+ }
+}
+/*--------------------------------------------------------------------------*/
+void str2code(int *Output_Matrix, const char * const * Input_String)
+{
+ int i = 0;
+ int nbOutput_Matrix = (int)strlen(Input_String[0]);
+
+ for (i = 0; i < nbOutput_Matrix ; i++)
+ {
+ Output_Matrix[i] = convertAsciiCodeToScilabCode(Input_String[0][i]);
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/complex_array.c b/modules/string/src/c/complex_array.c
new file mode 100755
index 000000000..3e9872f16
--- /dev/null
+++ b/modules/string/src/c/complex_array.c
@@ -0,0 +1,159 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
+ *
+ * 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 "complex_array.h"
+#include "MALLOC.h"
+// =============================================================================
+complexArray *createComplexArrayEmpty(int nbSize)
+{
+ complexArray *pComplexArray = NULL;
+ pComplexArray = (complexArray *) MALLOC(sizeof(complexArray));
+ if (pComplexArray)
+ {
+ pComplexArray->realPart = (double *)MALLOC(sizeof(double) * nbSize);
+ if (pComplexArray->realPart == NULL)
+ {
+ FREE(pComplexArray);
+ return NULL;
+ }
+
+ pComplexArray->imagPart = (double *)MALLOC(sizeof(double) * nbSize);
+ if (pComplexArray->imagPart == NULL)
+ {
+ FREE(pComplexArray->realPart);
+ pComplexArray->realPart = NULL;
+ FREE(pComplexArray);
+ return NULL;
+ }
+
+ memset(pComplexArray->realPart, 0, sizeof(double) * nbSize);
+ memset(pComplexArray->imagPart, 0, sizeof(double) * nbSize);
+ pComplexArray->isComplex = 1;
+ pComplexArray->nbElements = nbSize;
+ }
+ return pComplexArray;
+}
+// =============================================================================
+complexArray *createComplexArray(const double *realpart, const double *imagpart, int nbSize)
+{
+ complexArray *pComplexArray = NULL;
+
+ if (realpart == NULL)
+ {
+ return pComplexArray;
+ }
+
+ if (nbSize <= 0)
+ {
+ return pComplexArray;
+ }
+
+ pComplexArray = (complexArray *) MALLOC(sizeof(complexArray));
+ if (pComplexArray)
+ {
+ if (imagpart == NULL)
+ {
+ pComplexArray->isComplex = 0;
+ }
+ else
+ {
+ int i = 0;
+ pComplexArray->isComplex = 0;
+ for (i = 0; i < nbSize; i++)
+ {
+ if (imagpart[i] != 0)
+ {
+ pComplexArray->isComplex = 1;
+ break;
+ }
+ }
+ }
+
+ pComplexArray->realPart = (double *)MALLOC(sizeof(double) * nbSize);
+ if (pComplexArray->realPart)
+ {
+ memcpy(pComplexArray->realPart, realpart, nbSize);
+ pComplexArray->nbElements = nbSize;
+ }
+ if (pComplexArray->isComplex)
+ {
+ pComplexArray->imagPart = (double *)MALLOC(sizeof(double) * nbSize);
+ if (pComplexArray->imagPart)
+ {
+ memcpy(pComplexArray->imagPart, imagpart, nbSize);
+ }
+ }
+ else
+ {
+ pComplexArray->imagPart = NULL;
+ }
+ }
+ return pComplexArray;
+}
+// =============================================================================
+void freeComplexArray(complexArray *pComplexArray)
+{
+ if (pComplexArray)
+ {
+ if (pComplexArray->realPart)
+ {
+ FREE(pComplexArray->realPart);
+ pComplexArray->realPart = NULL;
+ }
+
+ if (pComplexArray->imagPart)
+ {
+ FREE(pComplexArray->imagPart);
+ pComplexArray->imagPart = NULL;
+ }
+ pComplexArray->isComplex = 0;
+ pComplexArray->nbElements = 0;
+
+ FREE(pComplexArray);
+ pComplexArray = NULL;
+ }
+}
+// =============================================================================
+int cleanImagPartComplexArray(complexArray *pComplexArray)
+{
+ if (pComplexArray)
+ {
+ if (pComplexArray->imagPart)
+ {
+ int i = 0;
+ int isComplex = 0;
+ for (i = 0; i < pComplexArray->nbElements; i++)
+ {
+ if (pComplexArray->imagPart[i] != 0)
+ {
+ isComplex = 1;
+ break;
+ }
+ }
+
+ if (isComplex)
+ {
+ pComplexArray->isComplex = 1;
+ }
+ else
+ {
+ pComplexArray->isComplex = 0;
+ }
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+// =============================================================================
diff --git a/modules/string/src/c/config.h b/modules/string/src/c/config.h
new file mode 100755
index 000000000..3a12b8064
--- /dev/null
+++ b/modules/string/src/c/config.h
@@ -0,0 +1,44 @@
+/* config.h for CMake builds */
+
+/* #undef HAVE_DIRENT_H */
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+/* #undef HAVE_UNISTD_H */
+#define HAVE_WINDOWS_H 1
+
+/* #undef HAVE_TYPE_TRAITS_H */
+/* #undef HAVE_BITS_TYPE_TRAITS_H */
+
+/* #undef HAVE_BCOPY */
+#define HAVE_MEMMOVE 1
+#define HAVE_STRERROR 1
+/* #undef HAVE_STRTOLL */
+/* #undef HAVE_STRTOQ */
+#define HAVE__STRTOI64 1
+
+/* #undef PCRE_STATIC */
+
+#define SUPPORT_UTF8 1
+/* #undef SUPPORT_UCP */
+/* #undef EBCDIC */
+/* #undef BSR_ANYCRLF */
+/* #undef NO_RECURSE */
+
+#define HAVE_LONG_LONG 1
+#define HAVE_UNSIGNED_LONG_LONG 1
+
+/* #undef SUPPORT_LIBBZ2 */
+/* #undef SUPPORT_LIBZ */
+/* #undef SUPPORT_LIBREADLINE */
+
+#define NEWLINE 10
+#define POSIX_MALLOC_THRESHOLD 10
+#define LINK_SIZE 2
+#define MATCH_LIMIT 10000000
+#define MATCH_LIMIT_RECURSION MATCH_LIMIT
+
+
+#define MAX_NAME_SIZE 32
+#define MAX_NAME_COUNT 10000
+
+/* end config.h for CMake builds */
diff --git a/modules/string/src/c/convstr.c b/modules/string/src/c/convstr.c
new file mode 100755
index 000000000..5f1abf27d
--- /dev/null
+++ b/modules/string/src/c/convstr.c
@@ -0,0 +1,47 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Cong WU
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 <stdio.h>
+#include <wchar.h>
+#include <wctype.h>
+#include "gw_string.h"
+#include "convstr.h"
+/*--------------------------------------------------------------------------*/
+void convstr(wchar_t **Input_Matrix, wchar_t **Output_Matrix, char typ, int mn)
+{
+ int x = 0;
+ for (x = 0 ; x < mn; x++)
+ {
+ int y = 0;
+ size_t len_Input_Matrix = wcslen(Input_Matrix[x]);
+ for (y = 0; y < len_Input_Matrix; y++)
+ {
+ /*To traverse every string in the string matrix */
+ if ( (typ == UPPER) || (typ == UPPER_B) )
+ {
+ /*converts the matrix of strings str-matrix into upper case */
+ Output_Matrix[x][y] = (wchar_t) towupper(Input_Matrix[x][y]);
+ }
+ else if ( (typ == LOW) || (typ == LOW_B) )
+ {
+ /*converts the matrix of strings str-matrix into lower case */
+ Output_Matrix[x][y] = (wchar_t) towlower(Input_Matrix[x][y]);
+ }
+ }
+ Output_Matrix[x][y] = 0;
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/convstr.h b/modules/string/src/c/convstr.h
new file mode 100755
index 000000000..5fec50410
--- /dev/null
+++ b/modules/string/src/c/convstr.h
@@ -0,0 +1,36 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __CONVSTR_H__
+#define __CONVSTR_H__
+
+#include "dynlib_string.h"
+
+#define LOW 'l'
+#define LOW_B 'L'
+#define UPPER 'u'
+#define UPPER_B 'U'
+
+/**
+* convstr case conversion
+* param[in] Input_Matrix Input string matrix
+* param[out] Output_Matrix
+* param[in] typ 'l' or 'u' means low or upper
+* param[in] Number_Input the number of input string matrix
+*/
+STRING_IMPEXP void convstr(wchar_t **Input_Matrix, wchar_t **Output_Matrix, char typ, int Number_Input);
+
+#endif /* __CONVSTR_H__ */
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/string/src/c/core_Import.def b/modules/string/src/c/core_Import.def
new file mode 100755
index 000000000..230fce1db
--- /dev/null
+++ b/modules/string/src/c/core_Import.def
@@ -0,0 +1,27 @@
+LIBRARY core.dll
+
+
+EXPORTS
+;core
+cha1_
+callFunctionFromGateway
+freeArrayOfString
+freeArrayOfWideString
+gettype_
+com_
+vstk_
+checklhs_
+checkrhs_
+iop_
+stack_
+putlhsvar_
+intersci_
+getWarningMode
+createvar_
+getrhsvar_
+vartype_
+createvarfromptr_
+overload_
+MyHeapAlloc
+MyHeapFree
+MyHeapRealloc
diff --git a/modules/string/src/c/cvstr.c b/modules/string/src/c/cvstr.c
new file mode 100755
index 000000000..a9c25a2da
--- /dev/null
+++ b/modules/string/src/c/cvstr.c
@@ -0,0 +1,107 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET , Cong WU
+ *
+ * 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 "cvstr.h"
+#include "core_math.h"
+#include "getfastcode.h"
+/*--------------------------------------------------------------------------*/
+/* Table of constant values */
+static int cx1 = 1;
+static int c_n1 = -1;
+/*--------------------------------------------------------------------------*/
+int C2F(cvstr)(int * n, int * line, char * str, int * job, unsigned long str_len)
+{
+ if (*job == 0)
+ {
+ C2F(asciitocode)(n, line, str, &cx1, str_len);
+ }
+ else
+ {
+ C2F(codetoascii)(n, line, str, str_len);
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int C2F(cvstr1)(int *n, int * line, char * str, int * job, unsigned long str_len)
+{
+ if (*job == 0)
+ {
+ C2F(asciitocode)(n, line, str, &c_n1, str_len);
+ }
+ else
+ {
+ C2F(codetoascii)(n, line, str, str_len);
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int C2F(codetoascii)(int *n, int * line, char * str, unsigned long str_len)
+{
+ int j = 0;
+ int nn = 0;
+
+ /* check *n value */
+ if (*n >= 0)
+ {
+ nn = *n;
+ }
+
+ /* conversion code -> ascii */
+ while (nn--)
+ {
+ str[j] = convertScilabCodeToAsciiCode(line[j]);
+ j++;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int C2F(asciitocode)(int * n, int * line, char * str, int * flagx, unsigned long str_len)
+{
+ int nn = 0;
+
+ if (*flagx == 1)
+ {
+ int j = 0;
+ nn = *n;
+ while (nn--)
+ {
+ unsigned char current_char = str[j];
+ line[j] = convertAsciiCodeToScilabCode(current_char);
+ j++;
+ }
+ }
+ else
+ {
+ int l = 0;
+
+ /* check *n value */
+ if ( (int)strlen(str) > *n )
+ {
+ l = (int)strlen(str);
+ }
+ else
+ {
+ l = *n;
+ }
+
+ for (nn = l - 1 ; nn >= 0; --nn)
+ {
+ unsigned char current_char = str[nn];
+ line[nn] = convertAsciiCodeToScilabCode(current_char);
+ }
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/functions_Import.def b/modules/string/src/c/functions_Import.def
new file mode 100755
index 000000000..b39dc2543
--- /dev/null
+++ b/modules/string/src/c/functions_Import.def
@@ -0,0 +1,9 @@
+LIBRARY functions.dll
+
+
+EXPORTS
+; ---------------------------------------
+; functions
+; ---------------------------------------
+isScilabFunction
+
diff --git a/modules/string/src/c/getfastcode.c b/modules/string/src/c/getfastcode.c
new file mode 100755
index 000000000..2b4ea0d8b
--- /dev/null
+++ b/modules/string/src/c/getfastcode.c
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET , Cong WU
+ * Copyright (C) Bruno PINÇON
+ *
+ * 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 "getfastcode.h"
+#include "stack-def.h"
+#include "core_math.h"
+/*--------------------------------------------------------------------------*/
+/**
+* Scilab not uses ASCII code in internal kernel
+* TO DO : Remove this with a new kernel
+* To understand Scilab coding style :
+* scilab code --> ascii code
+* 0 --> 0
+* 9 --> 9
+* 10 --> a
+* 35 --> z
+* -10 --> A
+* -35 --> Z
+*/
+#define NUMBER_INTERNAL_CHARACTERS 128
+static int INTERNAL_CHARACTERS_TABLE_CODES_FOR_SCILAB[NUMBER_INTERNAL_CHARACTERS] =
+{
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, -40,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 40, 38, -53, 37, 39, 56, 58, 53,
+ 41, 42, 47, 45, 52, 46, 51, 48, 0, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 44, 43,
+ 59, 50, 60, -38, -61, -10, -11, -12, -13, -14,
+ -15, -16, -17, -18, -19, -20, -21, -22, -23, -24,
+ -25, -26, -27, -28, -29, -30, -31, -32, -33, -34,
+ -35, 54, 49, 55, 62, 36, -59, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, -54, 57, -55, 61, 227
+};
+/*--------------------------------------------------------------------------*/
+int C2F(getfastcode)(unsigned char *c, unsigned long c_len)
+{
+ return convertAsciiCodeToScilabCode(c[0]);
+}
+/*--------------------------------------------------------------------------*/
+int convertAsciiCodeToScilabCode(unsigned char scilab_char)
+{
+ int k = (int)scilab_char ;
+ if (k < NUMBER_INTERNAL_CHARACTERS)
+ {
+ return INTERNAL_CHARACTERS_TABLE_CODES_FOR_SCILAB[k];
+ }
+ else
+ {
+ return k + 100;
+ }
+}
+/*--------------------------------------------------------------------------*/
+unsigned char convertScilabCodeToAsciiCode(int scilab_code)
+{
+#define eol 99
+#define EXCLAMATION_CHAR '!'
+
+ if (scilab_code == eol)
+ {
+ return (unsigned char)EXCLAMATION_CHAR;
+ }
+ else
+ {
+ if (Abs(scilab_code) > csiz)
+ {
+ if (scilab_code > eol)
+ {
+ return (unsigned char)(scilab_code - (eol + 1));
+ }
+ else
+ {
+ return EXCLAMATION_CHAR;
+ }
+ }
+ else
+ {
+ if (scilab_code < 0)
+ {
+ return (unsigned char)C2F(cha1).alfb[Abs(scilab_code)];
+ }
+ else
+ {
+ return(unsigned char) C2F(cha1).alfa[scilab_code];
+ }
+ }
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isalphanum.c b/modules/string/src/c/isalphanum.c
new file mode 100755
index 000000000..e6ac78fcc
--- /dev/null
+++ b/modules/string/src/c/isalphanum.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - Allan CORNET - 2009
+ *
+ * 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 <wchar.h>
+#include <wctype.h>
+#include "isalphanum.h"
+#include "MALLOC.h"
+/*--------------------------------------------------------------------------*/
+BOOL *isalphanumW(wchar_t *input_string, int *returnedSize)
+{
+ BOOL *returnedValues = NULL;
+ *returnedSize = 0;
+
+ if (input_string)
+ {
+ int i = 0;
+ int length_input_string = (int)wcslen(input_string);
+ *returnedSize = length_input_string;
+
+ if (length_input_string > 0)
+ {
+ returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * length_input_string);
+ if (returnedValues)
+ {
+ for (i = 0; i < length_input_string; i++)
+ {
+ if ( iswalnum(input_string[i]) )
+ {
+ returnedValues[i] = TRUE;
+ }
+ else
+ {
+ returnedValues[i] = FALSE;
+ }
+ }
+ }
+ }
+ }
+ return returnedValues;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isalphanum.h b/modules/string/src/c/isalphanum.h
new file mode 100755
index 000000000..dc48f2e0c
--- /dev/null
+++ b/modules/string/src/c/isalphanum.h
@@ -0,0 +1,30 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - Allan CORNET - 2009
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __ISALPHANUM_H__
+#define __ISALPHANUM_H__
+
+#include <wchar.h>
+#include "BOOL.h"
+
+/**
+* array elements that are alphabetic letters or digits
+* @param[in] a string
+* @return BOOL array
+*/
+BOOL *isalphanumW(wchar_t *input_string, int *returnedSize);
+
+#endif /* __ISALPHANUM_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isdigit.c b/modules/string/src/c/isdigit.c
new file mode 100755
index 000000000..cb8be7387
--- /dev/null
+++ b/modules/string/src/c/isdigit.c
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 <wchar.h>
+#include <wctype.h>
+#include "isletter.h"
+#include "MALLOC.h"
+#include "isdigit.h"
+/*--------------------------------------------------------------------------*/
+BOOL *IsDigitW(wchar_t *input_string, int *returnedSizeArray)
+{
+ BOOL *returnedValues = NULL;
+ *returnedSizeArray = 0;
+
+ if (input_string)
+ {
+ int i = 0;
+ int length_input_string = (int)wcslen(input_string);
+ *returnedSizeArray = length_input_string;
+
+ if (length_input_string > 0)
+ {
+ returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * length_input_string);
+ if (returnedValues)
+ {
+ for (i = 0; i < length_input_string; i++)
+ {
+ if ( iswdigit(input_string[i]) )
+ {
+ returnedValues[i] = TRUE;
+ }
+ else
+ {
+ returnedValues[i] = FALSE;
+ }
+ }
+ }
+ }
+ }
+ return returnedValues;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isdigit.h b/modules/string/src/c/isdigit.h
new file mode 100755
index 000000000..dc5d9d5c0
--- /dev/null
+++ b/modules/string/src/c/isdigit.h
@@ -0,0 +1,33 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - Allan CORNET - 2009
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __ISDIGIT_H__
+#define __ISDIGIT_H__
+
+#include <wchar.h>
+
+#include "BOOL.h"
+
+/**
+* array elements that are digit between 0 and 9
+* @param[in] a wide string
+* @param[out] size of returned array
+* @return BOOL array
+*/
+
+BOOL *IsDigitW(wchar_t *input_string, int *sizeReturnedArray);
+
+#endif /* __ISDIGIT_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isletter.c b/modules/string/src/c/isletter.c
new file mode 100755
index 000000000..413aeb80a
--- /dev/null
+++ b/modules/string/src/c/isletter.c
@@ -0,0 +1,84 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 <ctype.h>
+#include <wchar.h>
+#include <wctype.h> /* iswalpha */
+#include "isletter.h"
+#include "MALLOC.h"
+
+/*--------------------------------------------------------------------------*/
+BOOL *isletter(char *input_string, int *sizeArray)
+{
+ BOOL *returnedValues = NULL;
+ if (input_string)
+ {
+ int i = 0;
+ int length_input_string = (int)strlen(input_string);
+ *sizeArray = length_input_string;
+
+ if (length_input_string > 0)
+ {
+ returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * length_input_string);
+ if (returnedValues)
+ {
+ for (i = 0; i < length_input_string; i++)
+ {
+ if ( isalpha(input_string[i]) )
+ {
+ returnedValues[i] = TRUE;
+ }
+ else
+ {
+ returnedValues[i] = FALSE;
+ }
+ }
+ }
+ }
+ }
+ return returnedValues;
+}
+/*--------------------------------------------------------------------------*/
+BOOL *isletterW(wchar_t *wcInput_string, int *sizeArray)
+{
+ BOOL *returnedValues = NULL;
+ if (wcInput_string)
+ {
+ int i = 0;
+ int length_input_string = (int)wcslen(wcInput_string);
+
+ *sizeArray = length_input_string;
+
+ if (length_input_string > 0)
+ {
+ returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * length_input_string);
+ if (returnedValues)
+ {
+ for (i = 0; i < length_input_string; i++)
+ {
+ if ( iswalpha(wcInput_string[i]) )
+ {
+ returnedValues[i] = TRUE;
+ }
+ else
+ {
+ returnedValues[i] = FALSE;
+ }
+ }
+ }
+ }
+ }
+ return returnedValues;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isletter.h b/modules/string/src/c/isletter.h
new file mode 100755
index 000000000..e5828fd57
--- /dev/null
+++ b/modules/string/src/c/isletter.h
@@ -0,0 +1,37 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - 2009 - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __ISLETTER_H__
+#define __ISLETTER_H__
+
+#include <wchar.h>
+#include "BOOL.h"
+
+/**
+* array elements that are alphabetic letters
+* @param[in] a string
+* @return BOOL array
+*/
+BOOL *isletter(char *input_string, int *sizeArray);
+
+/**
+* array elements that are alphabetic letters
+* @param[in] a string
+* @return BOOL array
+*/
+BOOL *isletterW(wchar_t *wcInput_string, int *sizeArray);
+
+#endif /* __ISLETTER_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/isnum.c b/modules/string/src/c/isnum.c
new file mode 100755
index 000000000..1513010b2
--- /dev/null
+++ b/modules/string/src/c/isnum.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
+ *
+ * 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 "isnum.h"
+#include "stringToComplex.h"
+#include "MALLOC.h"
+// =============================================================================
+BOOL isNum(const char *pStr)
+{
+ if (pStr)
+ {
+ stringToComplexError ierr = STRINGTOCOMPLEX_NO_ERROR;
+ stringToComplex(pStr, ".", FALSE, &ierr);
+ return (BOOL)(ierr == STRINGTOCOMPLEX_NO_ERROR);
+ }
+ return FALSE;
+}
+// =============================================================================
+BOOL *isNumMatrix(const char **pStrs, int nbRows, int nbCols)
+{
+ BOOL *pResults = NULL;
+ if (pStrs)
+ {
+ pResults = (BOOL*)MALLOC(sizeof(BOOL) * (nbCols * nbRows));
+ if (pResults)
+ {
+ int i = 0;
+ for (i = 0; i < nbRows * nbCols; i++)
+ {
+ pResults[i] = isNum(pStrs[i]);
+ }
+ }
+ }
+ return pResults;
+}
+// =============================================================================
+
+
diff --git a/modules/string/src/c/isnum.h b/modules/string/src/c/isnum.h
new file mode 100755
index 000000000..e72f46031
--- /dev/null
+++ b/modules/string/src/c/isnum.h
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
+ *
+ * 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
+ *
+ */
+#ifndef __CSV_ISNUM_H__
+#define __CSV_ISNUM_H__
+
+#include "BOOL.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ BOOL isNum(const char *pStr);
+
+ BOOL *isNumMatrix(const char **pStrs, int nbRows, int nbCols);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __CSV_ISNUM_H__ */
+// =============================================================================
diff --git a/modules/string/src/c/libscistring_algo_la-InitializeString.lo b/modules/string/src/c/libscistring_algo_la-InitializeString.lo
new file mode 100755
index 000000000..fa0be6522
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-InitializeString.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-InitializeString.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/libscistring_algo_la-InitializeString.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-StringConvert.lo b/modules/string/src/c/libscistring_algo_la-StringConvert.lo
new file mode 100755
index 000000000..2591060df
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-StringConvert.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-StringConvert.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/libscistring_algo_la-StringConvert.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-code2str.lo b/modules/string/src/c/libscistring_algo_la-code2str.lo
new file mode 100755
index 000000000..b1cdba60b
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-code2str.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-code2str.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/libscistring_algo_la-code2str.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-complex_array.lo b/modules/string/src/c/libscistring_algo_la-complex_array.lo
new file mode 100755
index 000000000..7c5de2b95
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-complex_array.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-complex_array.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/libscistring_algo_la-complex_array.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-convstr.lo b/modules/string/src/c/libscistring_algo_la-convstr.lo
new file mode 100755
index 000000000..fd8d649c2
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-convstr.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-convstr.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/libscistring_algo_la-convstr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-cvstr.lo b/modules/string/src/c/libscistring_algo_la-cvstr.lo
new file mode 100755
index 000000000..d81e9e488
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-cvstr.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-cvstr.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/libscistring_algo_la-cvstr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-getfastcode.lo b/modules/string/src/c/libscistring_algo_la-getfastcode.lo
new file mode 100755
index 000000000..86eb39be6
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-getfastcode.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-getfastcode.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/libscistring_algo_la-getfastcode.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-isalphanum.lo b/modules/string/src/c/libscistring_algo_la-isalphanum.lo
new file mode 100755
index 000000000..a92fc0672
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-isalphanum.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-isalphanum.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/libscistring_algo_la-isalphanum.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-isdigit.lo b/modules/string/src/c/libscistring_algo_la-isdigit.lo
new file mode 100755
index 000000000..73a2852f9
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-isdigit.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-isdigit.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/libscistring_algo_la-isdigit.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-isletter.lo b/modules/string/src/c/libscistring_algo_la-isletter.lo
new file mode 100755
index 000000000..9acf675b5
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-isletter.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-isletter.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/libscistring_algo_la-isletter.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-isnum.lo b/modules/string/src/c/libscistring_algo_la-isnum.lo
new file mode 100755
index 000000000..9b26358e9
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-isnum.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-isnum.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/libscistring_algo_la-isnum.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-men_Sutils.lo b/modules/string/src/c/libscistring_algo_la-men_Sutils.lo
new file mode 100755
index 000000000..d8787df60
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-men_Sutils.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-men_Sutils.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/libscistring_algo_la-men_Sutils.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-partfunction.lo b/modules/string/src/c/libscistring_algo_la-partfunction.lo
new file mode 100755
index 000000000..67a59f918
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-partfunction.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-partfunction.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/libscistring_algo_la-partfunction.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-pcre_error.lo b/modules/string/src/c/libscistring_algo_la-pcre_error.lo
new file mode 100755
index 000000000..32814de72
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-pcre_error.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-pcre_error.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/libscistring_algo_la-pcre_error.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-pcre_private.lo b/modules/string/src/c/libscistring_algo_la-pcre_private.lo
new file mode 100755
index 000000000..d5b9db21a
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-pcre_private.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-pcre_private.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/libscistring_algo_la-pcre_private.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-scistrtostr.lo b/modules/string/src/c/libscistring_algo_la-scistrtostr.lo
new file mode 100755
index 000000000..0f710bb3b
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-scistrtostr.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-scistrtostr.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/libscistring_algo_la-scistrtostr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-setScilabCharactersCodes.lo b/modules/string/src/c/libscistring_algo_la-setScilabCharactersCodes.lo
new file mode 100755
index 000000000..4865f4fb0
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-setScilabCharactersCodes.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-setScilabCharactersCodes.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/libscistring_algo_la-setScilabCharactersCodes.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stringToComplex.lo b/modules/string/src/c/libscistring_algo_la-stringToComplex.lo
new file mode 100755
index 000000000..68f056d97
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stringToComplex.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stringToComplex.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/libscistring_algo_la-stringToComplex.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stringToDouble.lo b/modules/string/src/c/libscistring_algo_la-stringToDouble.lo
new file mode 100755
index 000000000..ca1179aaf
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stringToDouble.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stringToDouble.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/libscistring_algo_la-stringToDouble.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stringsCompare.lo b/modules/string/src/c/libscistring_algo_la-stringsCompare.lo
new file mode 100755
index 000000000..28a7e3a9d
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stringsCompare.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stringsCompare.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/libscistring_algo_la-stringsCompare.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stringsstrrchr.lo b/modules/string/src/c/libscistring_algo_la-stringsstrrchr.lo
new file mode 100755
index 000000000..87602f265
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stringsstrrchr.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stringsstrrchr.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/libscistring_algo_la-stringsstrrchr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stringsstrrev.lo b/modules/string/src/c/libscistring_algo_la-stringsstrrev.lo
new file mode 100755
index 000000000..e16a27b95
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stringsstrrev.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stringsstrrev.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/libscistring_algo_la-stringsstrrev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stripblanks.lo b/modules/string/src/c/libscistring_algo_la-stripblanks.lo
new file mode 100755
index 000000000..85bb30620
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stripblanks.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stripblanks.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/libscistring_algo_la-stripblanks.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-stristr.lo b/modules/string/src/c/libscistring_algo_la-stristr.lo
new file mode 100755
index 000000000..7f666910e
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-stristr.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-stristr.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/libscistring_algo_la-stristr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-strsplit.lo b/modules/string/src/c/libscistring_algo_la-strsplit.lo
new file mode 100755
index 000000000..14d848e22
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-strsplit.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-strsplit.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/libscistring_algo_la-strsplit.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-strsubst.lo b/modules/string/src/c/libscistring_algo_la-strsubst.lo
new file mode 100755
index 000000000..82214f4bd
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-strsubst.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-strsubst.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/libscistring_algo_la-strsubst.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/libscistring_algo_la-tokens.lo b/modules/string/src/c/libscistring_algo_la-tokens.lo
new file mode 100755
index 000000000..97f5cd71e
--- /dev/null
+++ b/modules/string/src/c/libscistring_algo_la-tokens.lo
@@ -0,0 +1,12 @@
+# src/c/libscistring_algo_la-tokens.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/libscistring_algo_la-tokens.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/c/linpack_f_Import.def b/modules/string/src/c/linpack_f_Import.def
new file mode 100755
index 000000000..d056196c3
--- /dev/null
+++ b/modules/string/src/c/linpack_f_Import.def
@@ -0,0 +1,5 @@
+LIBRARY linpack_f.dll
+
+
+EXPORTS
+icopy_
diff --git a/modules/string/src/c/localization_Import.def b/modules/string/src/c/localization_Import.def
new file mode 100755
index 000000000..15d9312af
--- /dev/null
+++ b/modules/string/src/c/localization_Import.def
@@ -0,0 +1,6 @@
+LIBRARY scilocalization.dll
+
+
+EXPORTS
+wide_string_to_UTF8
+to_wide_string
diff --git a/modules/string/src/c/men_Sutils.c b/modules/string/src/c/men_Sutils.c
new file mode 100755
index 000000000..79185f801
--- /dev/null
+++ b/modules/string/src/c/men_Sutils.c
@@ -0,0 +1,129 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA
+ *
+ * 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 <string.h>
+#include "men_Sutils.h"
+#include "getfastcode.h"
+#include "MALLOC.h" /* MALLOC */
+#include "freeArrayOfString.h"
+/*--------------------------------------------------------------------------*/
+void ScilabStr2C(int *n, int *Scistring, char **strh, int *ierr)
+{
+ int j = 0;
+
+ *strh = (char *)MALLOC((*n + 1) * sizeof(char));
+ if ((*strh) == NULL)
+ {
+ *ierr = 1;
+ return;
+ }
+
+ for (j = 0; j < *n; ++j)
+ {
+ (*strh)[j] = convertScilabCodeToAsciiCode(Scistring[j]);
+ }
+ (*strh)[*n] = '\0';
+}
+
+/*--------------------------------------------------------------------------*/
+void ScilabMStr2CM(int *Scistring, int *nstring, int *ptrstrings, char ***strh, int *ierr)
+{
+ char **strings = NULL, *p = NULL;
+ int li = 0, ni = 0, *SciS = NULL, i = 0;
+
+ strings = (char **)MALLOC(((*nstring) + 1) * sizeof(char *));
+
+ if (strings == NULL)
+ {
+ *ierr = 1;
+ return;
+ }
+
+ li = 1;
+ SciS = Scistring;
+ for (i = 1; i < *nstring + 1; i++)
+ {
+ ni = ptrstrings[i] - li;
+ li = ptrstrings[i];
+ /* p is allocated here */
+ ScilabStr2C(&ni, SciS, &p, ierr);
+ if (*ierr == 1)
+ {
+ if (p)
+ {
+ FREE(p);
+ }
+
+ freeArrayOfString(strings, i - 1);
+ return;
+ }
+ strings[i - 1] = p;
+ SciS += ni;
+ }
+ strings[*nstring] = NULL;
+ *strh = strings;
+}
+
+/*--------------------------------------------------------------------------*/
+void ScilabMStr2C(int *desc, int *nd, int *ptrdesc, char **strh, int *ierr)
+{
+ int ln = 0, i = 0;
+ int *SciS = NULL;
+ char *description = NULL;
+
+#ifdef _MSC_VER
+ ln = ptrdesc[*nd] + 2 * (*nd) + 1;
+#else
+ ln = ptrdesc[*nd] + *nd + 1;
+#endif
+
+ description = (char *)MALLOC(ln * sizeof(char));
+
+ if (description == NULL)
+ {
+ *ierr = 1;
+ return;
+ }
+
+ SciS = desc;
+
+ for (i = 1; i < *nd + 1; i++)
+ {
+ int j = 0;
+ int ni = 0;
+ int li = 1;
+ int di = 0;
+ char *p = NULL;
+
+ p = &(description[di]);
+ ni = ptrdesc[i] - li;
+
+ /* conversion code -> ascii */
+ for (j = 0; j < ni; ++j)
+ {
+ p[j] = convertScilabCodeToAsciiCode(SciS[j]);
+ }
+ SciS += ni;
+#ifdef _MSC_VER
+ p[ni] = '\r';
+ ni++;
+#endif
+ p[ni] = '\n';
+ }
+ description[ln - 2] = '\0';
+ *strh = description;
+}
+
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/partfunction.c b/modules/string/src/c/partfunction.c
new file mode 100755
index 000000000..a585ebad9
--- /dev/null
+++ b/modules/string/src/c/partfunction.c
@@ -0,0 +1,72 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan CORNET
+ *
+ * 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 "MALLOC.h"
+#include "partfunction.h"
+#include "freeArrayOfString.h"
+#include "charEncoding.h"
+
+/*--------------------------------------------------------------------------*/
+#define BLANK_CHAR ' '
+/*--------------------------------------------------------------------------*/
+char **partfunction(char** stringInput, int m, int n, int *vectInput, int row)
+{
+ char **parts = NULL;
+ int mn = m * n;
+
+ int i = 0;
+
+ parts = (char**)MALLOC(sizeof(char*) * (mn));
+
+ for (i = 0; i < mn; i++)
+ {
+ int j = 0;
+ int lengthstringInput = 0;
+ wchar_t *wcInput = to_wide_string(stringInput[i]);
+ wchar_t *wcOutput = NULL;
+
+ wcOutput = (wchar_t*)MALLOC(sizeof(wchar_t) * ((row) + 1));
+
+ if (wcInput)
+ {
+ lengthstringInput = (int)wcslen(wcInput);
+ for (j = 0; j < row; j++)
+ {
+ if ( vectInput[j] > lengthstringInput )
+ {
+ wcOutput[j] = L' ';
+ }
+ else
+ {
+ wcOutput[j] = wcInput[vectInput[j] - 1];
+ }
+ }
+ FREE(wcInput);
+ }
+ else // fill output with blank
+ {
+ for (j = 0; j < row; j++)
+ {
+ wcOutput[j] = L' ';
+ }
+ }
+
+ wcOutput[j] = '\0';
+ parts[i] = wide_string_to_UTF8(wcOutput);
+ FREE(wcOutput);
+ }
+ return parts;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/partfunction.h b/modules/string/src/c/partfunction.h
new file mode 100755
index 000000000..7b5185080
--- /dev/null
+++ b/modules/string/src/c/partfunction.h
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+#ifndef __PARTFUNCTION_H__
+#define __PARTFUNCTION_H__
+
+
+/**
+* part : extraction of strings
+* @param[in] stringInput : matrix of strings
+* @param[in] m : col of stringInput
+* @param[in] n : row of stringInput
+* @param[in] vectInput : row vector
+* @param[in] row : row of vectInput
+* @return matrix of strings (same size as stringInput)
+*/
+char **partfunction(char** stringInput, int m, int n, int *vectInput, int row);
+
+#endif /* __PARTFUNCTION_H__ */
+/*---------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/pcre_error.c b/modules/string/src/c/pcre_error.c
new file mode 100755
index 000000000..18daa5217
--- /dev/null
+++ b/modules/string/src/c/pcre_error.c
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Sylvestre LEDRU
+ *
+ * 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
+ *
+ */
+
+
+/**
+ * File: pcre_error.c
+ * desc : Display a human readable error message (PCRE error).
+ */
+#include "pcre_private.h"
+#include "localization.h"
+#include "Scierror.h"
+void pcre_error(char *fname, int errorCode)
+{
+ switch (errorCode)
+ {
+ case NO_MATCH:
+ /*No match */
+ break;
+ case NOT_ENOUGH_MEMORY_FOR_VECTOR:
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ break;
+ case DELIMITER_NOT_ALPHANUMERIC:
+ Scierror(999, _("%s: Delimiter must not be alphameric.\n"), fname);
+ break;
+ case CAPTURING_SUBPATTERNS_ERROR:
+ Scierror(999, _("%s: Capturing subpatterns error.\n"), fname);
+ break;
+ case PARTIAL_MATCHING_NOT_SUPPORTED:
+ Scierror(999, _("%s: Partial matching not supported.\n"), fname);
+ break;
+ case CONTAINS_EXPLICIT_CR_OR_LF_MATCH:
+ Scierror(999, _("%s: Contains explicit CR or LF match.\n"), fname);
+ break;
+ case DUPLICATE_NAME_STATUS_CHANGES:
+ Scierror(999, _("%s: Duplicate name status changes.\n"), fname);
+ break;
+ case TOO_BIG_FOR_OFFSET_SIZE:
+ Scierror(999, _("%s: Returned count is too big for offset size.\n"), fname);
+ break;
+ case LIMIT_NOT_RELEVANT_FOR_DFA_MATCHING:
+ Scierror(999, _("%s: Match limit not relevant for DFA matching: ignored.\n"), fname);
+ break;
+ case CAN_NOT_COMPILE_PATTERN:
+ Scierror(999, _("%s: Can not compile pattern.\n"), fname);
+ break;
+ case MATCH_LIMIT:
+ Scierror(999, _("%s: Matched text exceeds buffer limit.\n"), fname);
+ break;
+ case UTF8_NOT_SUPPORTED:
+ Scierror(999, _("%s: Current PCRE library does not support UTF-8.\n"), fname);
+ break;
+ default:
+ Scierror(999, _("%s: Unknown error.\n"), fname);
+ break;
+ }
+}
diff --git a/modules/string/src/c/pcre_error.h b/modules/string/src/c/pcre_error.h
new file mode 100755
index 000000000..919fb9861
--- /dev/null
+++ b/modules/string/src/c/pcre_error.h
@@ -0,0 +1,28 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Sylvestre LEDRU
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __PCRE_ERROR_H__
+#define __PCRE_ERROR_H__
+
+
+/**
+ *
+ * Display a human readable error message (PCRE error).
+ * @param fname the name of the Scilab function
+ * @param errorCode the error code returned by the pcre function
+ */
+void pcre_error(char *fname, int errorCode);
+
+#endif
+
diff --git a/modules/string/src/c/pcre_internal.h b/modules/string/src/c/pcre_internal.h
new file mode 100755
index 000000000..7aa8ea564
--- /dev/null
+++ b/modules/string/src/c/pcre_internal.h
@@ -0,0 +1,1117 @@
+/*************************************************
+* Perl-Compatible Regular Expressions *
+*************************************************/
+
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+ Copyright (c) 1997-2008 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the University of Cambridge nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+/* This header contains definitions that are shared between the different
+modules, but which are not relevant to the exported API. This includes some
+functions whose names all begin with "_pcre_". */
+
+#ifndef PCRE_INTERNAL_H
+#define PCRE_INTERNAL_H
+
+/* Define DEBUG to get debugging output on stdout. */
+
+#if 0
+#define DEBUG
+#endif
+
+/* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef
+inline, and there are *still* stupid compilers about that don't like indented
+pre-processor statements, or at least there were when I first wrote this. After
+all, it had only been about 10 years then...
+
+It turns out that the Mac Debugging.h header also defines the macro DPRINTF, so
+be absolutely sure we get our version. */
+
+#undef DPRINTF
+#ifdef DEBUG
+#define DPRINTF(p) printf p
+#else
+#define DPRINTF(p) /* Nothing */
+#endif
+
+
+/* Standard C headers plus the external interface definition. The only time
+setjmp and stdarg are used is when NO_RECURSE is set. */
+
+#include <ctype.h>
+#include <limits.h>
+#include <setjmp.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* When compiling a DLL for Windows, the exported symbols have to be declared
+using some MS magic. I found some useful information on this web page:
+http://msdn2.microsoft.com/en-us/library/y4h7bcy6(VS.80).aspx. According to the
+information there, using __declspec(dllexport) without "extern" we have a
+definition; with "extern" we have a declaration. The settings here override the
+setting in pcre.h (which is included below); it defines only PCRE_EXP_DECL,
+which is all that is needed for applications (they just import the symbols). We
+use:
+
+ PCRE_EXP_DECL for declarations
+ PCRE_EXP_DEFN for definitions of exported functions
+ PCRE_EXP_DATA_DEFN for definitions of exported variables
+
+The reason for the two DEFN macros is that in non-Windows environments, one
+does not want to have "extern" before variable definitions because it leads to
+compiler warnings. So we distinguish between functions and variables. In
+Windows, the two should always be the same.
+
+The reason for wrapping this in #ifndef PCRE_EXP_DECL is so that pcretest,
+which is an application, but needs to import this file in order to "peek" at
+internals, can #include pcre.h first to get an application's-eye view.
+
+In principle, people compiling for non-Windows, non-Unix-like (i.e. uncommon,
+special-purpose environments) might want to stick other stuff in front of
+exported symbols. That's why, in the non-Windows case, we set PCRE_EXP_DEFN and
+PCRE_EXP_DATA_DEFN only if they are not already set. */
+
+#ifndef PCRE_EXP_DECL
+# ifdef _WIN32
+# ifndef PCRE_STATIC
+# define PCRE_EXP_DECL extern __declspec(dllexport)
+# define PCRE_EXP_DEFN __declspec(dllexport)
+# define PCRE_EXP_DATA_DEFN __declspec(dllexport)
+# else
+# define PCRE_EXP_DECL extern
+# define PCRE_EXP_DEFN
+# define PCRE_EXP_DATA_DEFN
+# endif
+# else
+# ifdef __cplusplus
+# define PCRE_EXP_DECL extern "C"
+# else
+# define PCRE_EXP_DECL extern
+# endif
+# ifndef PCRE_EXP_DEFN
+# define PCRE_EXP_DEFN PCRE_EXP_DECL
+# endif
+# ifndef PCRE_EXP_DATA_DEFN
+# define PCRE_EXP_DATA_DEFN
+# endif
+# endif
+#endif
+
+/* We need to have types that specify unsigned 16-bit and 32-bit integers. We
+cannot determine these outside the compilation (e.g. by running a program as
+part of "configure") because PCRE is often cross-compiled for use on other
+systems. Instead we make use of the maximum sizes that are available at
+preprocessor time in standard C environments. */
+
+#if USHRT_MAX == 65535
+typedef unsigned short pcre_uint16;
+#elif UINT_MAX == 65535
+typedef unsigned int pcre_uint16;
+#else
+#error Cannot determine a type for 16-bit unsigned integers
+#endif
+
+#if UINT_MAX == 4294967295
+typedef unsigned int pcre_uint32;
+#elif ULONG_MAX == 4294967295
+typedef unsigned long int pcre_uint32;
+#else
+#error Cannot determine a type for 32-bit unsigned integers
+#endif
+
+/* All character handling must be done as unsigned characters. Otherwise there
+are problems with top-bit-set characters and functions such as isspace().
+However, we leave the interface to the outside world as char *, because that
+should make things easier for callers. We define a short type for unsigned char
+to save lots of typing. I tried "uchar", but it causes problems on Digital
+Unix, where it is defined in sys/types, so use "uschar" instead. */
+
+typedef unsigned char uschar;
+
+/* This is an unsigned int value that no character can ever have. UTF-8
+characters only go up to 0x7fffffff (though Unicode doesn't go beyond
+0x0010ffff). */
+
+#define NOTACHAR 0xffffffff
+
+/* PCRE is able to support several different kinds of newline (CR, LF, CRLF,
+"any" and "anycrlf" at present). The following macros are used to package up
+testing for newlines. NLBLOCK, PSSTART, and PSEND are defined in the various
+modules to indicate in which datablock the parameters exist, and what the
+start/end of string field names are. */
+
+#define NLTYPE_FIXED 0 /* Newline is a fixed length string */
+#define NLTYPE_ANY 1 /* Newline is any Unicode line ending */
+#define NLTYPE_ANYCRLF 2 /* Newline is CR, LF, or CRLF */
+
+/* This macro checks for a newline at the given position */
+
+#define IS_NEWLINE(p) \
+ ((NLBLOCK->nltype != NLTYPE_FIXED)? \
+ ((p) < NLBLOCK->PSEND && \
+ _pcre_is_newline((p), NLBLOCK->nltype, NLBLOCK->PSEND, &(NLBLOCK->nllen),\
+ utf8)) \
+ : \
+ ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
+ (p)[0] == NLBLOCK->nl[0] && \
+ (NLBLOCK->nllen == 1 || (p)[1] == NLBLOCK->nl[1]) \
+ ) \
+ )
+
+/* This macro checks for a newline immediately preceding the given position */
+
+#define WAS_NEWLINE(p) \
+ ((NLBLOCK->nltype != NLTYPE_FIXED)? \
+ ((p) > NLBLOCK->PSSTART && \
+ _pcre_was_newline((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
+ &(NLBLOCK->nllen), utf8)) \
+ : \
+ ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
+ (p)[-NLBLOCK->nllen] == NLBLOCK->nl[0] && \
+ (NLBLOCK->nllen == 1 || (p)[-NLBLOCK->nllen+1] == NLBLOCK->nl[1]) \
+ ) \
+ )
+
+/* When PCRE is compiled as a C++ library, the subject pointer can be replaced
+with a custom type. This makes it possible, for example, to allow pcre_exec()
+to process subject strings that are discontinuous by using a smart pointer
+class. It must always be possible to inspect all of the subject string in
+pcre_exec() because of the way it backtracks. Two macros are required in the
+normal case, for sign-unspecified and unsigned char pointers. The former is
+used for the external interface and appears in pcre.h, which is why its name
+must begin with PCRE_. */
+
+#ifdef CUSTOM_SUBJECT_PTR
+#define PCRE_SPTR CUSTOM_SUBJECT_PTR
+#define USPTR CUSTOM_SUBJECT_PTR
+#else
+#define PCRE_SPTR const char *
+#define USPTR const unsigned char *
+#endif
+
+
+
+/* Include the public PCRE header and the definitions of UCP character property
+values. */
+
+#include "pcre.h"
+#include "ucp.h"
+
+/* When compiling for use with the Virtual Pascal compiler, these functions
+need to have their names changed. PCRE must be compiled with the -DVPCOMPAT
+option on the command line. */
+
+#ifdef VPCOMPAT
+#define strlen(s) _strlen(s)
+#define strncmp(s1,s2,m) _strncmp(s1,s2,m)
+#define memcmp(s,c,n) _memcmp(s,c,n)
+#define memcpy(d,s,n) _memcpy(d,s,n)
+#define memmove(d,s,n) _memmove(d,s,n)
+#define memset(s,c,n) _memset(s,c,n)
+#endif /* not VPCOMPAT */
+
+
+/* PCRE keeps offsets in its compiled code as 2-byte quantities (always stored
+in big-endian order) by default. These are used, for example, to link from the
+start of a subpattern to its alternatives and its end. The use of 2 bytes per
+offset limits the size of the compiled regex to around 64K, which is big enough
+for almost everybody. However, I received a request for an even bigger limit.
+For this reason, and also to make the code easier to maintain, the storing and
+loading of offsets from the byte string is now handled by the macros that are
+defined here.
+
+The macros are controlled by the value of LINK_SIZE. This defaults to 2 in
+the config.h file, but can be overridden by using -D on the command line. This
+is automated on Unix systems via the "configure" command. */
+
+#if LINK_SIZE == 2
+
+#define PUT(a,n,d) \
+ (a[n] = (d) >> 8), \
+ (a[(n)+1] = (d) & 255)
+
+#define GET(a,n) \
+ (((a)[n] << 8) | (a)[(n)+1])
+
+#define MAX_PATTERN_SIZE (1 << 16)
+
+
+#elif LINK_SIZE == 3
+
+#define PUT(a,n,d) \
+ (a[n] = (d) >> 16), \
+ (a[(n)+1] = (d) >> 8), \
+ (a[(n)+2] = (d) & 255)
+
+#define GET(a,n) \
+ (((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])
+
+#define MAX_PATTERN_SIZE (1 << 24)
+
+
+#elif LINK_SIZE == 4
+
+#define PUT(a,n,d) \
+ (a[n] = (d) >> 24), \
+ (a[(n)+1] = (d) >> 16), \
+ (a[(n)+2] = (d) >> 8), \
+ (a[(n)+3] = (d) & 255)
+
+#define GET(a,n) \
+ (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])
+
+#define MAX_PATTERN_SIZE (1 << 30) /* Keep it positive */
+
+
+#else
+#error LINK_SIZE must be either 2, 3, or 4
+#endif
+
+
+/* Convenience macro defined in terms of the others */
+
+#define PUTINC(a,n,d) PUT(a,n,d), a += LINK_SIZE
+
+
+/* PCRE uses some other 2-byte quantities that do not change when the size of
+offsets changes. There are used for repeat counts and for other things such as
+capturing parenthesis numbers in back references. */
+
+#define PUT2(a,n,d) \
+ a[n] = (d) >> 8; \
+ a[(n)+1] = (d) & 255
+
+#define GET2(a,n) \
+ (((a)[n] << 8) | (a)[(n)+1])
+
+#define PUT2INC(a,n,d) PUT2(a,n,d), a += 2
+
+
+/* When UTF-8 encoding is being used, a character is no longer just a single
+byte. The macros for character handling generate simple sequences when used in
+byte-mode, and more complicated ones for UTF-8 characters. BACKCHAR should
+never be called in byte mode. To make sure it can never even appear when UTF-8
+support is omitted, we don't even define it. */
+
+#ifndef SUPPORT_UTF8
+#define NEXTCHAR(p) p++;
+#define GETCHAR(c, eptr) c = *eptr;
+#define GETCHARTEST(c, eptr) c = *eptr;
+#define GETCHARINC(c, eptr) c = *eptr++;
+#define GETCHARINCTEST(c, eptr) c = *eptr++;
+#define GETCHARLEN(c, eptr, len) c = *eptr;
+/* #define BACKCHAR(eptr) */
+
+#else /* SUPPORT_UTF8 */
+
+/* Advance a character pointer one byte in non-UTF-8 mode and by one character
+in UTF-8 mode. */
+
+#define NEXTCHAR(p) \
+ p++; \
+ if (utf8) { while((*p & 0xc0) == 0x80) p++; }
+
+/* Get the next UTF-8 character, not advancing the pointer. This is called when
+we know we are in UTF-8 mode. */
+
+#define GETCHAR(c, eptr) \
+ c = *eptr; \
+ if (c >= 0xc0) \
+ { \
+ int gcii; \
+ int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \
+ int gcss = 6*gcaa; \
+ c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+ for (gcii = 1; gcii <= gcaa; gcii++) \
+ { \
+ gcss -= 6; \
+ c |= (eptr[gcii] & 0x3f) << gcss; \
+ } \
+ }
+
+/* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the
+pointer. */
+
+#define GETCHARTEST(c, eptr) \
+ c = *eptr; \
+ if (utf8 && c >= 0xc0) \
+ { \
+ int gcii; \
+ int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \
+ int gcss = 6*gcaa; \
+ c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+ for (gcii = 1; gcii <= gcaa; gcii++) \
+ { \
+ gcss -= 6; \
+ c |= (eptr[gcii] & 0x3f) << gcss; \
+ } \
+ }
+
+/* Get the next UTF-8 character, advancing the pointer. This is called when we
+know we are in UTF-8 mode. */
+
+#define GETCHARINC(c, eptr) \
+ c = *eptr++; \
+ if (c >= 0xc0) \
+ { \
+ int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \
+ int gcss = 6*gcaa; \
+ c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+ while (gcaa-- > 0) \
+ { \
+ gcss -= 6; \
+ c |= (*eptr++ & 0x3f) << gcss; \
+ } \
+ }
+
+/* Get the next character, testing for UTF-8 mode, and advancing the pointer */
+
+#define GETCHARINCTEST(c, eptr) \
+ c = *eptr++; \
+ if (utf8 && c >= 0xc0) \
+ { \
+ int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \
+ int gcss = 6*gcaa; \
+ c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+ while (gcaa-- > 0) \
+ { \
+ gcss -= 6; \
+ c |= (*eptr++ & 0x3f) << gcss; \
+ } \
+ }
+
+/* Get the next UTF-8 character, not advancing the pointer, incrementing length
+if there are extra bytes. This is called when we know we are in UTF-8 mode. */
+
+#define GETCHARLEN(c, eptr, len) \
+ c = *eptr; \
+ if (c >= 0xc0) \
+ { \
+ int gcii; \
+ int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \
+ int gcss = 6*gcaa; \
+ c = (c & _pcre_utf8_table3[gcaa]) << gcss; \
+ for (gcii = 1; gcii <= gcaa; gcii++) \
+ { \
+ gcss -= 6; \
+ c |= (eptr[gcii] & 0x3f) << gcss; \
+ } \
+ len += gcaa; \
+ }
+
+/* If the pointer is not at the start of a character, move it back until
+it is. This is called only in UTF-8 mode - we don't put a test within the macro
+because almost all calls are already within a block of UTF-8 only code. */
+
+#define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--
+
+#endif
+
+
+/* In case there is no definition of offsetof() provided - though any proper
+Standard C system should have one. */
+
+#ifndef offsetof
+#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
+#endif
+
+
+/* These are the public options that can change during matching. */
+
+#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
+
+/* Private flags containing information about the compiled regex. They used to
+live at the top end of the options word, but that got almost full, so now they
+are in a 16-bit flags word. */
+
+#define PCRE_NOPARTIAL 0x0001 /* can't use partial with this regex */
+#define PCRE_FIRSTSET 0x0002 /* first_byte is set */
+#define PCRE_REQCHSET 0x0004 /* req_byte is set */
+#define PCRE_STARTLINE 0x0008 /* start after \n for multiline */
+#define PCRE_JCHANGED 0x0010 /* j option used in regex */
+#define PCRE_HASCRORLF 0x0020 /* explicit \r or \n in pattern */
+
+/* Options for the "extra" block produced by pcre_study(). */
+
+#define PCRE_STUDY_MAPPED 0x01 /* a map of starting chars exists */
+
+/* Masks for identifying the public options that are permitted at compile
+time, run time, or study time, respectively. */
+
+#define PCRE_NEWLINE_BITS (PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|PCRE_NEWLINE_ANY| \
+ PCRE_NEWLINE_ANYCRLF)
+
+#define PUBLIC_OPTIONS \
+ (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
+ PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \
+ PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \
+ PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \
+ PCRE_JAVASCRIPT_COMPAT)
+
+#define PUBLIC_EXEC_OPTIONS \
+ (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \
+ PCRE_PARTIAL|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)
+
+#define PUBLIC_DFA_EXEC_OPTIONS \
+ (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \
+ PCRE_PARTIAL|PCRE_DFA_SHORTEST|PCRE_DFA_RESTART|PCRE_NEWLINE_BITS| \
+ PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)
+
+#define PUBLIC_STUDY_OPTIONS 0 /* None defined */
+
+/* Magic number to provide a small check against being handed junk. Also used
+to detect whether a pattern was compiled on a host of different endianness. */
+
+#define MAGIC_NUMBER 0x50435245UL /* 'PCRE' */
+
+/* Negative values for the firstchar and reqchar variables */
+
+#define REQ_UNSET (-2)
+#define REQ_NONE (-1)
+
+/* The maximum remaining length of subject we are prepared to search for a
+req_byte match. */
+
+#define REQ_BYTE_MAX 1000
+
+/* Flags added to firstbyte or reqbyte; a "non-literal" item is either a
+variable-length repeat, or anything other than literal characters. */
+
+#define REQ_CASELESS 0x0100 /* indicates caselessness */
+#define REQ_VARY 0x0200 /* reqbyte followed non-literal item */
+
+/* Miscellaneous definitions */
+
+/* Already defined in scilab modules/core/includes/BOOL.h */
+/* typedef int BOOL; */
+
+#define FALSE 0
+#define TRUE 1
+
+/* Escape items that are just an encoding of a particular data value. */
+
+#ifndef ESC_e
+#define ESC_e 27
+#endif
+
+#ifndef ESC_f
+#define ESC_f '\f'
+#endif
+
+#ifndef ESC_n
+#define ESC_n '\n'
+#endif
+
+#ifndef ESC_r
+#define ESC_r '\r'
+#endif
+
+/* We can't officially use ESC_t because it is a POSIX reserved identifier
+(presumably because of all the others like size_t). */
+
+#ifndef ESC_tee
+#define ESC_tee '\t'
+#endif
+
+/* Codes for different types of Unicode property */
+
+#define PT_ANY 0 /* Any property - matches all chars */
+#define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */
+#define PT_GC 2 /* General characteristic (e.g. L) */
+#define PT_PC 3 /* Particular characteristic (e.g. Lu) */
+#define PT_SC 4 /* Script (e.g. Han) */
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT 0x01 /* Flag: this is a negative class */
+#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */
+
+#define XCL_END 0 /* Marks end of individual items */
+#define XCL_SINGLE 1 /* Single item (one multibyte char) follows */
+#define XCL_RANGE 2 /* A range (two multibyte chars) follows */
+#define XCL_PROP 3 /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */
+
+/* These are escaped items that aren't just an encoding of a particular data
+value such as \n. They must have non-zero values, as check_escape() returns
+their negation. Also, they must appear in the same order as in the opcode
+definitions below, up to ESC_z. There's a dummy for OP_ANY because it
+corresponds to "." rather than an escape sequence, and another for OP_ALLANY
+(which is used for [^] in JavaScript compatibility mode).
+
+The final escape must be ESC_REF as subsequent values are used for
+backreferences (\1, \2, \3, etc). There are two tests in the code for an escape
+greater than ESC_b and less than ESC_Z to detect the types that may be
+repeated. These are the types that consume characters. If any new escapes are
+put in between that don't consume a character, that code will have to change.
+*/
+
+enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,
+ ESC_W, ESC_w, ESC_dum1, ESC_dum2, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H,
+ ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_g, ESC_k,
+ ESC_REF
+ };
+
+
+/* Opcode table: Starting from 1 (i.e. after OP_END), the values up to
+OP_EOD must correspond in order to the list of escapes immediately above.
+
+*** NOTE NOTE NOTE *** Whenever this list is updated, the two macro definitions
+that follow must also be updated to match. There is also a table called
+"coptable" in pcre_dfa_exec.c that must be updated. */
+
+enum
+{
+ OP_END, /* 0 End of pattern */
+
+ /* Values corresponding to backslashed metacharacters */
+
+ OP_SOD, /* 1 Start of data: \A */
+ OP_SOM, /* 2 Start of match (subject + offset): \G */
+ OP_SET_SOM, /* 3 Set start of match (\K) */
+ OP_NOT_WORD_BOUNDARY, /* 4 \B */
+ OP_WORD_BOUNDARY, /* 5 \b */
+ OP_NOT_DIGIT, /* 6 \D */
+ OP_DIGIT, /* 7 \d */
+ OP_NOT_WHITESPACE, /* 8 \S */
+ OP_WHITESPACE, /* 9 \s */
+ OP_NOT_WORDCHAR, /* 10 \W */
+ OP_WORDCHAR, /* 11 \w */
+ OP_ANY, /* 12 Match any character (subject to DOTALL) */
+ OP_ALLANY, /* 13 Match any character (not subject to DOTALL) */
+ OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */
+ OP_NOTPROP, /* 15 \P (not Unicode property) */
+ OP_PROP, /* 16 \p (Unicode property) */
+ OP_ANYNL, /* 17 \R (any newline sequence) */
+ OP_NOT_HSPACE, /* 18 \H (not horizontal whitespace) */
+ OP_HSPACE, /* 19 \h (horizontal whitespace) */
+ OP_NOT_VSPACE, /* 20 \V (not vertical whitespace) */
+ OP_VSPACE, /* 21 \v (vertical whitespace) */
+ OP_EXTUNI, /* 22 \X (extended Unicode sequence */
+ OP_EODN, /* 23 End of data or \n at end of data: \Z. */
+ OP_EOD, /* 24 End of data: \z */
+
+ OP_OPT, /* 25 Set runtime options */
+ OP_CIRC, /* 26 Start of line - varies with multiline switch */
+ OP_DOLL, /* 27 End of line - varies with multiline switch */
+ OP_CHAR, /* 28 Match one character, casefully */
+ OP_CHARNC, /* 29 Match one character, caselessly */
+ OP_NOT, /* 30 Match one character, not the following one */
+
+ OP_STAR, /* 31 The maximizing and minimizing versions of */
+ OP_MINSTAR, /* 32 these six opcodes must come in pairs, with */
+ OP_PLUS, /* 33 the minimizing one second. */
+ OP_MINPLUS, /* 34 This first set applies to single characters.*/
+ OP_QUERY, /* 35 */
+ OP_MINQUERY, /* 36 */
+
+ OP_UPTO, /* 37 From 0 to n matches */
+ OP_MINUPTO, /* 38 */
+ OP_EXACT, /* 39 Exactly n matches */
+
+ OP_POSSTAR, /* 40 Possessified star */
+ OP_POSPLUS, /* 41 Possessified plus */
+ OP_POSQUERY, /* 42 Posesssified query */
+ OP_POSUPTO, /* 43 Possessified upto */
+
+ OP_NOTSTAR, /* 44 The maximizing and minimizing versions of */
+ OP_NOTMINSTAR, /* 45 these six opcodes must come in pairs, with */
+ OP_NOTPLUS, /* 46 the minimizing one second. They must be in */
+ OP_NOTMINPLUS, /* 47 exactly the same order as those above. */
+ OP_NOTQUERY, /* 48 This set applies to "not" single characters. */
+ OP_NOTMINQUERY, /* 49 */
+
+ OP_NOTUPTO, /* 50 From 0 to n matches */
+ OP_NOTMINUPTO, /* 51 */
+ OP_NOTEXACT, /* 52 Exactly n matches */
+
+ OP_NOTPOSSTAR, /* 53 Possessified versions */
+ OP_NOTPOSPLUS, /* 54 */
+ OP_NOTPOSQUERY, /* 55 */
+ OP_NOTPOSUPTO, /* 56 */
+
+ OP_TYPESTAR, /* 57 The maximizing and minimizing versions of */
+ OP_TYPEMINSTAR, /* 58 these six opcodes must come in pairs, with */
+ OP_TYPEPLUS, /* 59 the minimizing one second. These codes must */
+ OP_TYPEMINPLUS, /* 60 be in exactly the same order as those above. */
+ OP_TYPEQUERY, /* 61 This set applies to character types such as \d */
+ OP_TYPEMINQUERY, /* 62 */
+
+ OP_TYPEUPTO, /* 63 From 0 to n matches */
+ OP_TYPEMINUPTO, /* 64 */
+ OP_TYPEEXACT, /* 65 Exactly n matches */
+
+ OP_TYPEPOSSTAR, /* 66 Possessified versions */
+ OP_TYPEPOSPLUS, /* 67 */
+ OP_TYPEPOSQUERY, /* 68 */
+ OP_TYPEPOSUPTO, /* 69 */
+
+ OP_CRSTAR, /* 70 The maximizing and minimizing versions of */
+ OP_CRMINSTAR, /* 71 all these opcodes must come in pairs, with */
+ OP_CRPLUS, /* 72 the minimizing one second. These codes must */
+ OP_CRMINPLUS, /* 73 be in exactly the same order as those above. */
+ OP_CRQUERY, /* 74 These are for character classes and back refs */
+ OP_CRMINQUERY, /* 75 */
+ OP_CRRANGE, /* 76 These are different to the three sets above. */
+ OP_CRMINRANGE, /* 77 */
+
+ OP_CLASS, /* 78 Match a character class, chars < 256 only */
+ OP_NCLASS, /* 79 Same, but the bitmap was created from a negative
+ class - the difference is relevant only when a UTF-8
+ character > 255 is encountered. */
+
+ OP_XCLASS, /* 80 Extended class for handling UTF-8 chars within the
+ class. This does both positive and negative. */
+
+ OP_REF, /* 81 Match a back reference */
+ OP_RECURSE, /* 82 Match a numbered subpattern (possibly recursive) */
+ OP_CALLOUT, /* 83 Call out to external function if provided */
+
+ OP_ALT, /* 84 Start of alternation */
+ OP_KET, /* 85 End of group that doesn't have an unbounded repeat */
+ OP_KETRMAX, /* 86 These two must remain together and in this */
+ OP_KETRMIN, /* 87 order. They are for groups the repeat for ever. */
+
+ /* The assertions must come before BRA, CBRA, ONCE, and COND.*/
+
+ OP_ASSERT, /* 88 Positive lookahead */
+ OP_ASSERT_NOT, /* 89 Negative lookahead */
+ OP_ASSERTBACK, /* 90 Positive lookbehind */
+ OP_ASSERTBACK_NOT, /* 91 Negative lookbehind */
+ OP_REVERSE, /* 92 Move pointer back - used in lookbehind assertions */
+
+ /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first,
+ as there's a test for >= ONCE for a subpattern that isn't an assertion. */
+
+ OP_ONCE, /* 93 Atomic group */
+ OP_BRA, /* 94 Start of non-capturing bracket */
+ OP_CBRA, /* 95 Start of capturing bracket */
+ OP_COND, /* 96 Conditional group */
+
+ /* These three must follow the previous three, in the same order. There's a
+ check for >= SBRA to distinguish the two sets. */
+
+ OP_SBRA, /* 97 Start of non-capturing bracket, check empty */
+ OP_SCBRA, /* 98 Start of capturing bracket, check empty */
+ OP_SCOND, /* 99 Conditional group, check empty */
+
+ OP_CREF, /* 100 Used to hold a capture number as condition */
+ OP_RREF, /* 101 Used to hold a recursion number as condition */
+ OP_DEF, /* 102 The DEFINE condition */
+
+ OP_BRAZERO, /* 103 These two must remain together and in this */
+ OP_BRAMINZERO, /* 104 order. */
+
+ /* These are backtracking control verbs */
+
+ OP_PRUNE, /* 105 */
+ OP_SKIP, /* 106 */
+ OP_THEN, /* 107 */
+ OP_COMMIT, /* 108 */
+
+ /* These are forced failure and success verbs */
+
+ OP_FAIL, /* 109 */
+ OP_ACCEPT, /* 110 */
+
+ /* This is used to skip a subpattern with a {0} quantifier */
+
+ OP_SKIPZERO /* 111 */
+};
+
+
+/* This macro defines textual names for all the opcodes. These are used only
+for debugging. The macro is referenced only in pcre_printint.c. */
+
+#define OP_NAME_LIST \
+ "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d", \
+ "\\S", "\\s", "\\W", "\\w", "Any", "AllAny", "Anybyte", \
+ "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v", \
+ "extuni", "\\Z", "\\z", \
+ "Opt", "^", "$", "char", "charnc", "not", \
+ "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \
+ "*+","++", "?+", "{", \
+ "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \
+ "*+","++", "?+", "{", \
+ "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \
+ "*+","++", "?+", "{", \
+ "*", "*?", "+", "+?", "?", "??", "{", "{", \
+ "class", "nclass", "xclass", "Ref", "Recurse", "Callout", \
+ "Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not", \
+ "AssertB", "AssertB not", "Reverse", \
+ "Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \
+ "Cond ref", "Cond rec", "Cond def", "Brazero", "Braminzero", \
+ "*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \
+ "Skip zero"
+
+
+/* This macro defines the length of fixed length operations in the compiled
+regex. The lengths are used when searching for specific things, and also in the
+debugging printing of a compiled regex. We use a macro so that it can be
+defined close to the definitions of the opcodes themselves.
+
+As things have been extended, some of these are no longer fixed lenths, but are
+minima instead. For example, the length of a single-character repeat may vary
+in UTF-8 mode. The code that uses this table must know about such things. */
+
+#define OP_LENGTHS \
+ 1, /* End */ \
+ 1, 1, 1, 1, 1, /* \A, \G, \K, \B, \b */ \
+ 1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ \
+ 1, 1, 1, /* Any, AllAny, Anybyte */ \
+ 3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \
+ 1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ \
+ 1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \
+ 2, /* Char - the minimum length */ \
+ 2, /* Charnc - the minimum length */ \
+ 2, /* not */ \
+ /* Positive single-char repeats ** These are */ \
+ 2, 2, 2, 2, 2, 2, /* *, *?, +, +?, ?, ?? ** minima in */ \
+ 4, 4, 4, /* upto, minupto, exact ** UTF-8 mode */ \
+ 2, 2, 2, 4, /* *+, ++, ?+, upto+ */ \
+ /* Negative single-char repeats - only for chars < 256 */ \
+ 2, 2, 2, 2, 2, 2, /* NOT *, *?, +, +?, ?, ?? */ \
+ 4, 4, 4, /* NOT upto, minupto, exact */ \
+ 2, 2, 2, 4, /* Possessive *, +, ?, upto */ \
+ /* Positive type repeats */ \
+ 2, 2, 2, 2, 2, 2, /* Type *, *?, +, +?, ?, ?? */ \
+ 4, 4, 4, /* Type upto, minupto, exact */ \
+ 2, 2, 2, 4, /* Possessive *+, ++, ?+, upto+ */ \
+ /* Character class & ref repeats */ \
+ 1, 1, 1, 1, 1, 1, /* *, *?, +, +?, ?, ?? */ \
+ 5, 5, /* CRRANGE, CRMINRANGE */ \
+ 33, /* CLASS */ \
+ 33, /* NCLASS */ \
+ 0, /* XCLASS - variable length */ \
+ 3, /* REF */ \
+ 1+LINK_SIZE, /* RECURSE */ \
+ 2+2*LINK_SIZE, /* CALLOUT */ \
+ 1+LINK_SIZE, /* Alt */ \
+ 1+LINK_SIZE, /* Ket */ \
+ 1+LINK_SIZE, /* KetRmax */ \
+ 1+LINK_SIZE, /* KetRmin */ \
+ 1+LINK_SIZE, /* Assert */ \
+ 1+LINK_SIZE, /* Assert not */ \
+ 1+LINK_SIZE, /* Assert behind */ \
+ 1+LINK_SIZE, /* Assert behind not */ \
+ 1+LINK_SIZE, /* Reverse */ \
+ 1+LINK_SIZE, /* ONCE */ \
+ 1+LINK_SIZE, /* BRA */ \
+ 3+LINK_SIZE, /* CBRA */ \
+ 1+LINK_SIZE, /* COND */ \
+ 1+LINK_SIZE, /* SBRA */ \
+ 3+LINK_SIZE, /* SCBRA */ \
+ 1+LINK_SIZE, /* SCOND */ \
+ 3, /* CREF */ \
+ 3, /* RREF */ \
+ 1, /* DEF */ \
+ 1, 1, /* BRAZERO, BRAMINZERO */ \
+ 1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \
+ 1, 1, 1 /* FAIL, ACCEPT, SKIPZERO */
+
+
+/* A magic value for OP_RREF to indicate the "any recursion" condition. */
+
+#define RREF_ANY 0xffff
+
+/* Error code numbers. They are given names so that they can more easily be
+tracked. */
+
+enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9,
+ ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19,
+ ERR20, ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR28, ERR29,
+ ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,
+ ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,
+ ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
+ ERR60, ERR61, ERR62, ERR63, ERR64
+ };
+
+/* The real format of the start of the pcre block; the index of names and the
+code vector run on as long as necessary after the end. We store an explicit
+offset to the name table so that if a regex is compiled on one host, saved, and
+then run on another where the size of pointers is different, all might still
+be well. For the case of compiled-on-4 and run-on-8, we include an extra
+pointer that is always NULL. For future-proofing, a few dummy fields were
+originally included - even though you can never get this planning right - but
+there is only one left now.
+
+NOTE NOTE NOTE:
+Because people can now save and re-use compiled patterns, any additions to this
+structure should be made at the end, and something earlier (e.g. a new
+flag in the options or one of the dummy fields) should indicate that the new
+fields are present. Currently PCRE always sets the dummy fields to zero.
+NOTE NOTE NOTE:
+*/
+
+typedef struct real_pcre
+{
+ pcre_uint32 magic_number;
+ pcre_uint32 size; /* Total that was malloced */
+ pcre_uint32 options; /* Public options */
+ pcre_uint16 flags; /* Private flags */
+ pcre_uint16 dummy1; /* For future use */
+ pcre_uint16 top_bracket;
+ pcre_uint16 top_backref;
+ pcre_uint16 first_byte;
+ pcre_uint16 req_byte;
+ pcre_uint16 name_table_offset; /* Offset to name table that follows */
+ pcre_uint16 name_entry_size; /* Size of any name items */
+ pcre_uint16 name_count; /* Number of name items */
+ pcre_uint16 ref_count; /* Reference count */
+
+ const unsigned char *tables; /* Pointer to tables or NULL for std */
+ const unsigned char *nullpad; /* NULL padding */
+} real_pcre;
+
+/* The format of the block used to store data from pcre_study(). The same
+remark (see NOTE above) about extending this structure applies. */
+
+typedef struct pcre_study_data
+{
+ pcre_uint32 size; /* Total that was malloced */
+ pcre_uint32 options;
+ uschar start_bits[32];
+} pcre_study_data;
+
+/* Structure for passing "static" information around between the functions
+doing the compiling, so that they are thread-safe. */
+
+typedef struct compile_data
+{
+ const uschar *lcc; /* Points to lower casing table */
+ const uschar *fcc; /* Points to case-flipping table */
+ const uschar *cbits; /* Points to character type table */
+ const uschar *ctypes; /* Points to table of type maps */
+ const uschar *start_workspace;/* The start of working space */
+ const uschar *start_code; /* The start of the compiled code */
+ const uschar *start_pattern; /* The start of the pattern */
+ const uschar *end_pattern; /* The end of the pattern */
+ uschar *hwm; /* High watermark of workspace */
+ uschar *name_table; /* The name/number table */
+ int names_found; /* Number of entries so far */
+ int name_entry_size; /* Size of each entry */
+ int bracount; /* Count of capturing parens as we compile */
+ int final_bracount; /* Saved value after first pass */
+ int top_backref; /* Maximum back reference */
+ unsigned int backref_map; /* Bitmap of low back refs */
+ int external_options; /* External (initial) options */
+ int external_flags; /* External flag bits to be set */
+ int req_varyopt; /* "After variable item" flag for reqbyte */
+ BOOL had_accept; /* (*ACCEPT) encountered */
+ int nltype; /* Newline type */
+ int nllen; /* Newline string length */
+ uschar nl[4]; /* Newline string when fixed length */
+} compile_data;
+
+/* Structure for maintaining a chain of pointers to the currently incomplete
+branches, for testing for left recursion. */
+
+typedef struct branch_chain
+{
+ struct branch_chain *outer;
+ uschar *current;
+} branch_chain;
+
+/* Structure for items in a linked list that represents an explicit recursive
+call within the pattern. */
+
+typedef struct recursion_info
+{
+ struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
+ int group_num; /* Number of group that was called */
+ const uschar *after_call; /* "Return value": points after the call in the expr */
+ USPTR save_start; /* Old value of mstart */
+ int *offset_save; /* Pointer to start of saved offsets */
+ int saved_max; /* Number of saved offsets */
+} recursion_info;
+
+/* Structure for building a chain of data for holding the values of the subject
+pointer at the start of each subpattern, so as to detect when an empty string
+has been matched by a subpattern - to break infinite loops. */
+
+typedef struct eptrblock
+{
+ struct eptrblock *epb_prev;
+ USPTR epb_saved_eptr;
+} eptrblock;
+
+
+/* Structure for passing "static" information around between the functions
+doing traditional NFA matching, so that they are thread-safe. */
+
+typedef struct match_data
+{
+ unsigned long int match_call_count; /* As it says */
+ unsigned long int match_limit; /* As it says */
+ unsigned long int match_limit_recursion; /* As it says */
+ int *offset_vector; /* Offset vector */
+ int offset_end; /* One past the end */
+ int offset_max; /* The maximum usable for return data */
+ int nltype; /* Newline type */
+ int nllen; /* Newline string length */
+ uschar nl[4]; /* Newline string when fixed */
+ const uschar *lcc; /* Points to lower casing table */
+ const uschar *ctypes; /* Points to table of type maps */
+ BOOL offset_overflow; /* Set if too many extractions */
+ BOOL notbol; /* NOTBOL flag */
+ BOOL noteol; /* NOTEOL flag */
+ BOOL utf8; /* UTF8 flag */
+ BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */
+ BOOL endonly; /* Dollar not before final \n */
+ BOOL notempty; /* Empty string match not wanted */
+ BOOL partial; /* PARTIAL flag */
+ BOOL hitend; /* Hit the end of the subject at some point */
+ BOOL bsr_anycrlf; /* \R is just any CRLF, not full Unicode */
+ const uschar *start_code; /* For use when recursing */
+ USPTR start_subject; /* Start of the subject string */
+ USPTR end_subject; /* End of the subject string */
+ USPTR start_match_ptr; /* Start of matched string */
+ USPTR end_match_ptr; /* Subject position at end match */
+ int end_offset_top; /* Highwater mark at end of match */
+ int capture_last; /* Most recent capture number */
+ int start_offset; /* The start offset value */
+ eptrblock *eptrchain; /* Chain of eptrblocks for tail recursions */
+ int eptrn; /* Next free eptrblock */
+ recursion_info *recursive; /* Linked list of recursion data */
+ void *callout_data; /* To pass back to callouts */
+} match_data;
+
+/* A similar structure is used for the same purpose by the DFA matching
+functions. */
+
+typedef struct dfa_match_data
+{
+ const uschar *start_code; /* Start of the compiled pattern */
+ const uschar *start_subject; /* Start of the subject string */
+ const uschar *end_subject; /* End of subject string */
+ const uschar *tables; /* Character tables */
+ int moptions; /* Match options */
+ int poptions; /* Pattern options */
+ int nltype; /* Newline type */
+ int nllen; /* Newline string length */
+ uschar nl[4]; /* Newline string when fixed */
+ void *callout_data; /* To pass back to callouts */
+} dfa_match_data;
+
+/* Bit definitions for entries in the pcre_ctypes table. */
+
+#define ctype_space 0x01
+#define ctype_letter 0x02
+#define ctype_digit 0x04
+#define ctype_xdigit 0x08
+#define ctype_word 0x10 /* alphanumeric or '_' */
+#define ctype_meta 0x80 /* regexp meta char or zero (end pattern) */
+
+/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
+of bits for a class map. Some classes are built by combining these tables. */
+
+#define cbit_space 0 /* [:space:] or \s */
+#define cbit_xdigit 32 /* [:xdigit:] */
+#define cbit_digit 64 /* [:digit:] or \d */
+#define cbit_upper 96 /* [:upper:] */
+#define cbit_lower 128 /* [:lower:] */
+#define cbit_word 160 /* [:word:] or \w */
+#define cbit_graph 192 /* [:graph:] */
+#define cbit_print 224 /* [:print:] */
+#define cbit_punct 256 /* [:punct:] */
+#define cbit_cntrl 288 /* [:cntrl:] */
+#define cbit_length 320 /* Length of the cbits table */
+
+/* Offsets of the various tables from the base tables pointer, and
+total length. */
+
+#define lcc_offset 0
+#define fcc_offset 256
+#define cbits_offset 512
+#define ctypes_offset (cbits_offset + cbit_length)
+#define tables_length (ctypes_offset + 256)
+
+/* Layout of the UCP type table that translates property names into types and
+codes. Each entry used to point directly to a name, but to reduce the number of
+relocations in shared libraries, it now has an offset into a single string
+instead. */
+
+typedef struct
+{
+ pcre_uint16 name_offset;
+ pcre_uint16 type;
+ pcre_uint16 value;
+} ucp_type_table;
+
+
+/* Internal shared data tables. These are tables that are used by more than one
+of the exported public functions. They have to be "external" in the C sense,
+but are not part of the PCRE public API. The data for these tables is in the
+pcre_tables.c module. */
+
+extern const int _pcre_utf8_table1[];
+extern const int _pcre_utf8_table2[];
+extern const int _pcre_utf8_table3[];
+extern const uschar _pcre_utf8_table4[];
+
+extern const int _pcre_utf8_table1_size;
+
+extern const char _pcre_utt_names[];
+extern const ucp_type_table _pcre_utt[];
+extern const int _pcre_utt_size;
+
+extern const uschar _pcre_default_tables[];
+
+extern const uschar _pcre_OP_lengths[];
+
+
+/* Internal shared functions. These are functions that are used by more than
+one of the exported public functions. They have to be "external" in the C
+sense, but are not part of the PCRE public API. */
+
+extern BOOL _pcre_is_newline(const uschar *, int, const uschar *,
+ int *, BOOL);
+extern int _pcre_ord2utf8(int, uschar *);
+extern real_pcre *_pcre_try_flipped(const real_pcre *, real_pcre *,
+ const pcre_study_data *, pcre_study_data *);
+extern int _pcre_ucp_findprop(const unsigned int, int *, int *);
+extern unsigned int _pcre_ucp_othercase(const unsigned int);
+extern int _pcre_valid_utf8(const uschar *, int);
+extern BOOL _pcre_was_newline(const uschar *, int, const uschar *,
+ int *, BOOL);
+extern BOOL _pcre_xclass(int, const uschar *);
+
+#endif
+
+/* End of pcre_internal.h */
diff --git a/modules/string/src/c/pcre_private.c b/modules/string/src/c/pcre_private.c
new file mode 100755
index 000000000..cbc4e4f0b
--- /dev/null
+++ b/modules/string/src/c/pcre_private.c
@@ -0,0 +1,1145 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) INRIA
+* Copyright (C) DIGITEO - 2009
+*
+* 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 <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <time.h>
+#include <locale.h>
+#include <errno.h>
+#include <pcre.h>
+#include "MALLOC.h"
+#include "BOOL.h"
+#include "pcre_private.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "strsubst.h"
+#include "sciprint.h"
+#include "warningmode.h"
+/*-------------------------------------------------------------------------------*/
+/* A number of things vary for Windows builds. Originally, pcretest opened its
+input and output without "b"; then I was told that "b" was needed in some
+environments, so it was added for release 5.0 to both the input and output. (It
+makes no difference on Unix-like systems.) Later I was told that it is wrong
+for the input on Windows. I've now abstracted the modes into two macros that
+are set here, to make it easier to fiddle with them, and removed "b" from the
+input mode under Windows. */
+/*-------------------------------------------------------------------------------*/
+#if _MSC_VER
+#include <io.h> /* For _setmode() */
+#include <fcntl.h> /* For _O_BINARY */
+#define INPUT_MODE "r"
+#define OUTPUT_MODE "wb"
+#else
+#include <sys/time.h> /* These two includes are needed */
+#include <sys/resource.h> /* for setrlimit(). */
+#define INPUT_MODE "rb"
+#define OUTPUT_MODE "wb"
+#endif
+
+#define LINK_SIZE 2
+
+/* We have to include pcre_internal.h because we need the internal info for
+displaying the results of pcre_study() and we also need to know about the
+internal macros, structures, and other internal data values; pcretest has
+"inside information" compared to a program that strictly follows the PCRE API.
+
+Although pcre_internal.h does itself include pcre.h, we explicitly include it
+here before pcre_internal.h so that the PCRE_EXP_xxx macros get set
+appropriately for an application, not for building PCRE. */
+
+#include <pcre.h>
+#include "pcre_internal.h"
+
+/* We need access to the data tables that PCRE uses. So as not to have to keep
+two copies, we include the source file here, changing the names of the external
+symbols to prevent clashes. */
+
+#define _pcre_utf8_table1 utf8_table1
+#define _pcre_utf8_table1_size utf8_table1_size
+#define _pcre_utf8_table2 utf8_table2
+#define _pcre_utf8_table3 utf8_table3
+#define _pcre_utf8_table4 utf8_table4
+#define _pcre_utt utt
+#define _pcre_utt_size utt_size
+#define _pcre_utt_names utt_names
+#define _pcre_OP_lengths OP_lengths
+
+#include "pcre_tables.c"
+
+/* It is possible to compile this test program without including support for
+testing the POSIX interface, though this is not available via the standard
+Makefile. */
+
+#if !defined NOPOSIX
+#include "pcreposix.h"
+#endif
+
+/* It is also possible, for the benefit of the version currently imported into
+Exim, to build pcretest without support for UTF8 (define NOUTF8), without the
+interface to the DFA matcher (NODFA), and without the doublecheck of the old
+"info" function (define NOINFOCHECK). In fact, we automatically cut out the
+UTF8 support if PCRE is built without it. */
+
+#ifndef SUPPORT_UTF8
+#ifndef NOUTF8
+#define NOUTF8
+#endif
+#endif
+/*-------------------------------------------------------------------------------*/
+/* Static variables */
+
+static int callout_count = 0;
+static int callout_fail_count = 0;
+static int callout_fail_id = 0;
+
+/* The buffers grow automatically if very long input lines are encountered. */
+
+char *buffer = NULL;
+
+
+static int check_match_limit(pcre *re, pcre_extra *extra, char *bptr, int len,
+ int start_offset, int options, int *use_offsets, int use_size_offsets,
+ int flag, unsigned long int *limit, int errnumber);
+
+
+/*************************************************
+* Check match or recursion limit *
+*************************************************/
+
+static int check_match_limit(pcre *re, pcre_extra *extra, char *bptr, int len,
+ int start_offset, int options, int *use_offsets, int use_size_offsets,
+ int flag, unsigned long int *limit, int errnumber)
+{
+ int count;
+ int min = 0;
+ int mid = 64;
+ int max = -1;
+
+ extra->flags |= flag;
+
+ for (;;)
+ {
+ *limit = mid;
+
+ count = pcre_exec(re, extra, (char *)bptr, len, start_offset, options,
+ use_offsets, use_size_offsets);
+
+ if (count == errnumber)
+ {
+ min = mid;
+ mid = (mid == max - 1) ? max : (max > 0) ? (min + max) / 2 : mid * 2;
+ }
+
+ else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
+ count == PCRE_ERROR_PARTIAL)
+ {
+ if (mid == min + 1)
+ {
+ break;
+ }
+ max = mid;
+ mid = (min + mid) / 2;
+ }
+ else
+ {
+ break; /* Some other error */
+ }
+ }
+
+ extra->flags &= ~flag;
+ return count;
+}
+
+
+/*************************************************
+* Algorithm *
+*************************************************/
+
+/* Read lines from named file or stdin and write to named file or stdout; lines
+consist of a regular expression, in delimiters and optionally followed by
+options, followed by a set of test data, terminated by an empty line. */
+
+pcre_error_code pcre_private(char *INPUT_LINE, char *INPUT_PAT, int *Output_Start, int *Output_End, char*** _pstCapturedString, int* _piCapturedStringCount)
+{
+ /* ALL strings are managed as UTF-8 by default */
+ int options = PCRE_UTF8;
+ int size_offsets = 45;
+ int size_offsets_max;
+ int *offsets = NULL;
+ int all_use_dfa = 0;
+ BOOL LOOP_PCRE_TST = FALSE;
+
+ /* These vectors store, end-to-end, a list of captured substring names. Assume
+ that 1024 is plenty long enough for the few names we'll be testing. */
+
+ char copynames[1024];
+ char getnames[1024];
+
+ char *copynamesptr = NULL;
+ char *getnamesptr = NULL;
+
+ int rc = 0;
+ (void)pcre_config(PCRE_CONFIG_UTF8, &rc);
+ if (rc != 1)
+ {
+ return UTF8_NOT_SUPPORTED;
+ }
+
+ /* bug 3891 */
+ /* backslash characters are not interpreted for input */
+ buffer = strsub(INPUT_LINE, "\\", "\\\\");
+
+ size_offsets_max = size_offsets;
+ offsets = (int *)MALLOC(size_offsets_max * sizeof(int));
+ if (offsets == NULL)
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ return NOT_ENOUGH_MEMORY_FOR_VECTOR;
+ }
+ /* Main loop */
+ LOOP_PCRE_TST = FALSE;
+ while (!LOOP_PCRE_TST)
+ {
+ pcre *re = NULL;
+ pcre_extra *extra = NULL;
+ const char *error = NULL;
+ char *back_p = NULL;
+ char *p = NULL;
+ char *pp = NULL;
+ char *ppp = NULL;
+ const unsigned char *tables = NULL;
+ int do_G = 0;
+ int do_g = 0;
+ int erroroffset = 0, len = 0, delimiter;
+
+ LOOP_PCRE_TST = TRUE;
+ p = strdup(INPUT_PAT);
+ back_p = p;
+ while (isspace(*p))
+ {
+ p++;
+ }
+ if (*p == 0)
+ {
+ continue;
+ }
+ /* In-line pattern (the usual case). Get the delimiter and seek the end of
+ the pattern; if is isn't complete, read more. */
+
+ delimiter = *p++;
+
+ if (isalnum(delimiter) || delimiter == '\\')
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return DELIMITER_NOT_ALPHANUMERIC;
+ }
+
+ pp = p;
+
+ while (*pp != 0)
+ {
+ if (*pp == '\\' && pp[1] != 0)
+ {
+ pp++;
+ }
+ else if (*pp == delimiter)
+ {
+ break;
+ }
+ pp++;
+ }
+
+ /* If the delimiter can't be found, it's a syntax error */
+ if (*pp == 0)
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ }
+ return CAN_NOT_COMPILE_PATTERN;
+ }
+
+ /* If the first character after the delimiter is backslash, make
+ the pattern end with backslash. This is purely to provide a way
+ of testing for the error message when a pattern ends with backslash. */
+
+ if (pp[1] == '\\')
+ {
+ *pp++ = '\\';
+ }
+
+ /* Terminate the pattern at the delimiter, and save a copy of the pattern
+ for callouts. */
+
+ *pp++ = 0;
+
+ /* Look for options after final delimiter */
+
+ //options = 8192;
+
+ while (*pp != 0)
+ {
+ switch (*pp++)
+ {
+ case 'f':
+ options |= PCRE_FIRSTLINE;
+ break;
+ case 'g':
+ do_g = 1;
+ break;
+ case 'i':
+ options |= PCRE_CASELESS;
+ break;
+ case 'm':
+ options |= PCRE_MULTILINE;
+ break;
+ case 's':
+ options |= PCRE_DOTALL;
+ break;
+ case 'x':
+ options |= PCRE_EXTENDED;
+ break;
+ case '+':
+ break;
+ case 'A':
+ options |= PCRE_ANCHORED;
+ break;
+ case 'B':
+ break;
+ case 'C':
+ options |= PCRE_AUTO_CALLOUT;
+ break;
+ case 'D':
+ break;
+ case 'E':
+ options |= PCRE_DOLLAR_ENDONLY;
+ break;
+ case 'F':
+ break;
+ case 'G':
+ do_G = 1;
+ break;
+ case 'I':
+ break;
+ case 'J':
+ options |= PCRE_DUPNAMES;
+ break;
+ case 'M':
+ break;
+ case 'N':
+ options |= PCRE_NO_AUTO_CAPTURE;
+ break;
+ case 'S':
+ break;
+ case 'U':
+ options |= PCRE_UNGREEDY;
+ break;
+ case 'X':
+ options |= PCRE_EXTRA;
+ break;
+ case 'Z':
+ break;
+ case '8':
+ {
+ int rc = 0;
+ (void)pcre_config(PCRE_CONFIG_UTF8, &rc);
+ if (rc != 1)
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ }
+ return UTF8_NOT_SUPPORTED;
+ }
+ options |= PCRE_UTF8;
+ }
+ break;
+ case '?':
+ options |= PCRE_NO_UTF8_CHECK;
+ break;
+ case 'L':
+ ppp = pp;
+ /* The '\r' test here is so that it works on Windows. */
+ /* The '0' test is just in case this is an unterminated line. */
+ while (*ppp != 0 && *ppp != '\n' && *ppp != '\r' && *ppp != ' ')
+ {
+ ppp++;
+ }
+ *ppp = 0;
+ if (setlocale(LC_CTYPE, (const char *)pp) == NULL)
+ {
+ goto SKIP_DATA;
+ }
+
+ tables = pcre_maketables();
+ pp = ppp;
+ break;
+ case '>':
+ while (*pp != 0)
+ {
+ pp++;
+ }
+ while (isspace(pp[-1]))
+ {
+ pp--;
+ }
+ *pp = 0;
+ break;
+ case '<':
+ {
+ while (*pp++ != '>')
+ {
+ ;
+ }
+ }
+ break;
+ case '\r': /* So that it works in Windows */
+ case '\n':
+ case ' ':
+ break;
+
+ default:
+ goto SKIP_DATA;
+ }
+ }
+
+ /* Handle compiling via the POSIX interface, which doesn't support the
+ timing, showing, or debugging options, nor the ability to pass over
+ local character tables. */
+
+
+ {
+ re = pcre_compile((char *)p, options, &error, &erroroffset, tables);
+ /* Compilation failed; go back for another re, skipping to blank line
+ if non-interactive. */
+ if (re == NULL)
+ {
+SKIP_DATA:
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (tables)
+ {
+ (*pcre_free)((void*)tables);
+ tables = NULL;
+ }
+ if (extra)
+ {
+ FREE(extra);
+ extra = NULL;
+ }
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return CAN_NOT_COMPILE_PATTERN;
+ }
+
+ } /* End of non-POSIX compile */
+
+ /* Read data lines and test them */
+ {
+ char *q = NULL;
+ char *bptr = NULL;
+ int *use_offsets = offsets;
+ int use_size_offsets = size_offsets;
+ int callout_data = 0;
+ int callout_data_set = 0;
+ int count = 0;
+ int c = 0;
+ int copystrings = 0;
+ int find_match_limit = 0;
+ int getstrings = 0;
+ int gmatched = 0;
+ int start_offset = 0;
+ int g_notempty = 0;
+ int use_dfa = 0;
+
+ options = 0;
+ *copynames = 0;
+ *getnames = 0;
+
+ copynamesptr = copynames;
+ getnamesptr = getnames;
+
+ callout_count = 0;
+ callout_fail_count = 999999;
+ callout_fail_id = -1;
+
+ if (extra != NULL)
+ {
+ extra->flags &= ~(PCRE_EXTRA_MATCH_LIMIT | PCRE_EXTRA_MATCH_LIMIT_RECURSION);
+ }
+ p = buffer;
+ bptr = q = buffer;
+ while ((c = *p++) != 0)
+ {
+ int i = 0;
+ int n = 0;
+
+ if (c == '\\') switch ((c = *p++))
+ {
+ case 'a':
+ c = 7;
+ break;
+ case 'b':
+ c = '\b';
+ break;
+ case 'e':
+ c = 27;
+ break;
+ case 'f':
+ c = '\f';
+ break;
+ case 'n':
+ c = '\n';
+ break;
+ case 'r':
+ c = '\r';
+ break;
+ case 't':
+ c = '\t';
+ break;
+ case 'v':
+ c = '\v';
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ c -= '0';
+ while (i++ < 2 && isdigit(*p) && *p != '8' && *p != '9')
+ {
+ c = c * 8 + *p++ - '0';
+ }
+ break;
+ case 'x':
+ /* Ordinary \x */
+ c = 0;
+ while (i++ < 2 && isxdigit(*p))
+ {
+ c = c * 16 + tolower(*p) - ((isdigit(*p)) ? '0' : 'W');
+ p++;
+ }
+ break;
+ case 0: /* \ followed by EOF allows for an empty line */
+ p--;
+ continue;
+ case '>':
+ while (isdigit(*p))
+ {
+ start_offset = start_offset * 10 + *p++ - '0';
+ }
+ continue;
+ case 'A': /* Option setting */
+ options |= PCRE_ANCHORED;
+ continue;
+ case 'B':
+ options |= PCRE_NOTBOL;
+ continue;
+ case 'C':
+ if (isdigit(*p)) /* Set copy string */
+ {
+ while (isdigit(*p))
+ {
+ n = n * 10 + *p++ - '0';
+ }
+ copystrings |= 1 << n;
+ }
+ else if (isalnum(*p))
+ {
+ char *npp = copynamesptr;
+ while (isalnum(*p))
+ {
+ *npp++ = *p++;
+ }
+ *npp++ = 0;
+ *npp = 0;
+ pcre_get_stringnumber(re, (char *)copynamesptr);
+ copynamesptr = npp;
+ }
+ else if (*p == '+')
+ {
+ p++;
+ }
+ else if (*p == '-')
+ {
+ p++;
+ }
+ else if (*p == '!')
+ {
+ callout_fail_id = 0;
+ p++;
+ while (isdigit(*p))
+ {
+ callout_fail_id = callout_fail_id * 10 + *p++ - '0';
+ }
+ callout_fail_count = 0;
+ if (*p == '!')
+ {
+ p++;
+ while (isdigit(*p))
+ {
+ callout_fail_count = callout_fail_count * 10 + *p++ - '0';
+ }
+ }
+ }
+ else if (*p == '*')
+ {
+ int sign = 1;
+ callout_data = 0;
+ if (*(++p) == '-')
+ {
+ sign = -1;
+ p++;
+ }
+ while (isdigit(*p))
+ {
+ callout_data = callout_data * 10 + *p++ - '0';
+ }
+ callout_data *= sign;
+ callout_data_set = 1;
+ }
+ continue;
+ case 'G':
+ if (isdigit(*p))
+ {
+ while (isdigit(*p))
+ {
+ n = n * 10 + *p++ - '0';
+ }
+ getstrings |= 1 << n;
+ }
+ else if (isalnum(*p))
+ {
+ char *npp = getnamesptr;
+ while (isalnum(*p))
+ {
+ *npp++ = *p++;
+ }
+ *npp++ = 0;
+ *npp = 0;
+ pcre_get_stringnumber(re, (char *)getnamesptr);
+ getnamesptr = npp;
+ }
+ continue;
+ case 'L':
+ continue;
+ case 'M':
+ find_match_limit = 1;
+ continue;
+ case 'N':
+ options |= PCRE_NOTEMPTY;
+ continue;
+ case 'O':
+ while (isdigit(*p))
+ {
+ n = n * 10 + *p++ - '0';
+ }
+ if (n > size_offsets_max)
+ {
+ size_offsets_max = n;
+ if (offsets)
+ {
+ FREE(offsets);
+ }
+ use_offsets = offsets = (int *)MALLOC(size_offsets_max * sizeof(int));
+ }
+ use_size_offsets = n;
+ if (n == 0)
+ {
+ use_offsets = NULL; /* Ensures it can't write to it */
+ }
+ continue;
+ case 'P':
+ options |= PCRE_PARTIAL;
+ continue;
+ case 'Q':
+ while (isdigit(*p))
+ {
+ n = n * 10 + *p++ - '0';
+ }
+ if (extra == NULL)
+ {
+ extra = (pcre_extra *)MALLOC(sizeof(pcre_extra));
+ extra->flags = 0;
+ }
+ extra->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
+ extra->match_limit_recursion = n;
+ continue;
+ case 'q':
+ while (isdigit(*p))
+ {
+ n = n * 10 + *p++ - '0';
+ }
+ if (extra == NULL)
+ {
+ extra = (pcre_extra *)MALLOC(sizeof(pcre_extra));
+ extra->flags = 0;
+ }
+ extra->flags |= PCRE_EXTRA_MATCH_LIMIT;
+ extra->match_limit = n;
+ continue;
+#if !defined NODFA
+ case 'R':
+ options |= PCRE_DFA_RESTART;
+ continue;
+#endif
+ case 'S':
+
+ continue;
+ case 'Z':
+ options |= PCRE_NOTEOL;
+ continue;
+ case '?':
+ options |= PCRE_NO_UTF8_CHECK;
+ continue;
+ case '<':
+ {
+ while (*p++ != '>')
+ {
+ ;
+ }
+ }
+ continue;
+ }
+ *q++ = (char)c;
+ }
+ *q = 0;
+ len = (int)(q - buffer);
+ if ((all_use_dfa || use_dfa) && find_match_limit)
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (p)
+ {
+ FREE(p);
+ p = NULL;
+ }
+ if (re)
+ {
+ (*pcre_free)(re);
+ re = NULL;
+ }
+ if (tables)
+ {
+ (*pcre_free)((void*)tables);
+ tables = NULL;
+ }
+ if (extra)
+ {
+ FREE(extra);
+ extra = NULL;
+ }
+ return LIMIT_NOT_RELEVANT_FOR_DFA_MATCHING;
+ }
+ /* Handle matching via the POSIX interface, which does not
+ support timing or playing with the match limit or callout data. */
+ for (;; gmatched++) /* Loop for /g or /G */
+ {
+
+ /* If find_match_limit is set, we want to do repeated matches with
+ varying limits in order to find the minimum value for the match limit and
+ for the recursion limit. */
+
+ if (find_match_limit)
+ {
+ if (extra == NULL)
+ {
+ extra = (pcre_extra *)MALLOC(sizeof(pcre_extra));
+ extra->flags = 0;
+ }
+
+ (void)check_match_limit(re, extra, bptr, len, start_offset,
+ options | g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT, &(extra->match_limit),
+ PCRE_ERROR_MATCHLIMIT);
+
+ count = check_match_limit(re, extra, bptr, len, start_offset,
+ options | g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION, &(extra->match_limit_recursion),
+ PCRE_ERROR_RECURSIONLIMIT);
+ }
+ /* If callout_data is set, use the interface with additional data */
+ else if (callout_data_set)
+ {
+ if (extra == NULL)
+ {
+ extra = (pcre_extra *)MALLOC(sizeof(pcre_extra));
+ extra->flags = 0;
+ }
+ extra->flags |= PCRE_EXTRA_CALLOUT_DATA;
+ extra->callout_data = &callout_data;
+ count = pcre_exec(re, extra, (char *)bptr, len, start_offset,
+ options | g_notempty, use_offsets, use_size_offsets);
+
+ extra->flags &= ~PCRE_EXTRA_CALLOUT_DATA;
+ }
+ /* The normal case is just to do the match once, with the default
+ value of match_limit. */
+ else
+ {
+ count = pcre_exec(re, extra, (char *)bptr, len,
+ start_offset, options | g_notempty, use_offsets, use_size_offsets);
+ if (count == 0)
+ {
+ count = use_size_offsets / 3;
+ }
+
+ //to retrieve backref count and values
+ if (count > 0 && _pstCapturedString != NULL && _piCapturedStringCount != NULL)
+ {
+ int i = 0;
+ int iErr = 0;
+
+ iErr = pcre_fullinfo(re, extra, PCRE_INFO_CAPTURECOUNT, _piCapturedStringCount);
+ //sciprint("PCRE_INFO_CAPTURECOUNT %d\n", *_piCapturedStringCount);
+
+ if (*_piCapturedStringCount > 0)
+ {
+ *_pstCapturedString = (char**)MALLOC(sizeof(char*) * *_piCapturedStringCount);
+ for (i = 0 ; i < *_piCapturedStringCount ; i++)
+ {
+ char* pstSubstring = NULL;
+ pcre_get_substring(bptr, use_offsets, count, i + 1, &pstSubstring);
+ if (pstSubstring != NULL)
+ {
+ (*_pstCapturedString)[i] = strdup(pstSubstring);
+ }
+ pcre_free_substring(pstSubstring);
+ }
+ }
+ }
+ }
+ /* Matched */
+ if (count >= 0)
+ {
+ int i, maxcount;
+ maxcount = use_size_offsets / 3;
+ /* This is a check against a lunatic return value. */
+ if (count > maxcount)
+ {
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (re)
+ {
+ (*pcre_free)(re);
+ re = NULL;
+ }
+ if (tables)
+ {
+ (*pcre_free)((void*)tables);
+ tables = NULL;
+ }
+ if (extra)
+ {
+ FREE(extra);
+ extra = NULL;
+ }
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return TOO_BIG_FOR_OFFSET_SIZE;
+ }
+
+ for (i = 0; i < count * 2; i += 2)
+ {
+ if (use_offsets[i] >= 0)
+ {
+ *Output_Start = use_offsets[i];
+ *Output_End = use_offsets[i + 1];
+ if (buffer)
+ {
+ FREE(buffer);
+ }
+
+ /* use_offsets = offsets no need to free use_offsets if we free offsets */
+ if (offsets)
+ {
+ FREE(offsets);
+ }
+
+ /* "re" allocated by pcre_compile (better to use free function associated)*/
+ if (re)
+ {
+ (*pcre_free)(re);
+ }
+
+ if (extra)
+ {
+ FREE(extra);
+ }
+ if (tables)
+ {
+ /* "tables" allocated by pcre_maketables (better to use free function associated to pcre)*/
+ (*pcre_free)((void *)tables);
+ tables = NULL;
+ setlocale(LC_CTYPE, "C");
+ }
+
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return PCRE_FINISHED_OK;
+ }
+ }
+
+ for (copynamesptr = copynames; *copynamesptr != 0; copynamesptr += (int)strlen((char*)copynamesptr) + 1)
+ {
+ char copybuffer[256];
+ pcre_copy_named_substring(re, (char *)bptr, use_offsets, count, (char *)copynamesptr, copybuffer, sizeof(copybuffer));
+ }
+
+ for (i = 0; i < 32; i++)
+ {
+ if ((getstrings & (1 << i)) != 0)
+ {
+ const char *substring;
+ pcre_get_substring((char *)bptr, use_offsets, count, i, &substring);
+ }
+ }
+
+ for (getnamesptr = getnames; *getnamesptr != 0; getnamesptr += (int)strlen((char*)getnamesptr) + 1)
+ {
+ const char *substring;
+ pcre_get_named_substring(re, (char *)bptr, use_offsets, count, (char *)getnamesptr, &substring);
+ }
+
+ }
+ /* Failed to match. If this is a /g or /G loop and we previously set
+ g_notempty after a null match, this is not necessarily the end. We want
+ to advance the start offset, and continue. We won't be at the end of the
+ string - that was checked before setting g_notempty.
+ Complication arises in the case when the newline option is "any" or
+ "anycrlf". If the previous match was at the end of a line terminated by
+ CRLF, an advance of one character just passes the \r, whereas we should
+ prefer the longer newline sequence, as does the code in pcre_exec().
+ Fudge the offset value to achieve this.
+
+ Otherwise, in the case of UTF-8 matching, the advance must be one
+ character, not one byte. */
+ else
+ {
+ if (count == PCRE_ERROR_NOMATCH)
+ {
+ if (gmatched == 0)
+ {
+ if (tables)
+ {
+ (*pcre_free)((void *)tables);
+ tables = NULL;
+ }
+ if (re)
+ {
+ (*pcre_free)((void *)re);
+ re = NULL;
+ }
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ }
+ if (p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return NO_MATCH;
+ }
+ }
+
+ if (count == PCRE_ERROR_MATCHLIMIT )
+ {
+ if (tables)
+ {
+ (*pcre_free)((void *)tables);
+ tables = NULL;
+ }
+ if (re)
+ {
+ (*pcre_free)((void *)re);
+ re = NULL;
+ }
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+ if (back_p)
+ {
+ FREE(back_p);
+ back_p = NULL;
+ }
+ return MATCH_LIMIT;
+ }
+ break; /* Out of loop */
+ }
+
+ /* If not /g or /G we are done */
+ if (!do_g && !do_G)
+ {
+ break;
+ }
+
+ /* If we have matched an empty string, first check to see if we are at
+ the end of the subject. If so, the /g loop is over. Otherwise, mimic
+ what Perl's /g options does. This turns out to be rather cunning. First
+ we set PCRE_NOTEMPTY and PCRE_ANCHORED and try the match again at the
+ same point. If this fails (picked up above) we advance to the next
+ character. */
+
+ g_notempty = 0;
+
+ if (use_offsets[0] == use_offsets[1])
+ {
+ if (use_offsets[0] == len)
+ {
+ break;
+ }
+ g_notempty = PCRE_NOTEMPTY | PCRE_ANCHORED;
+ }
+
+ /* For /g, update the start offset, leaving the rest alone */
+
+ if (do_g)
+ {
+ start_offset = use_offsets[1];
+ }
+ /* For /G, update the pointer and length */
+ else
+ {
+ bptr += use_offsets[1];
+ len -= use_offsets[1];
+ }
+ } /* End of loop for /g and /G */
+
+ if (re)
+ {
+ (*pcre_free)(re);
+ re = NULL;
+ }
+ if (extra)
+ {
+ FREE(extra);
+ extra = NULL;
+ }
+ if (tables)
+ {
+ (*pcre_free)((void *)tables);
+ tables = NULL;
+ }
+
+ FREE(back_p);
+ back_p = NULL;
+ continue;
+ } /* End of loop for data lines */
+ }
+
+ if (buffer)
+ {
+ FREE(buffer);
+ buffer = NULL;
+ }
+ if (offsets)
+ {
+ FREE(offsets);
+ offsets = NULL;
+ }
+
+ return PCRE_EXIT;
+}
+
+/*-------------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/pcre_tables.c b/modules/string/src/c/pcre_tables.c
new file mode 100755
index 000000000..4063523fa
--- /dev/null
+++ b/modules/string/src/c/pcre_tables.c
@@ -0,0 +1,321 @@
+/*************************************************
+* Perl-Compatible Regular Expressions *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+ Copyright (c) 1997-2007 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the University of Cambridge nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains some fixed tables that are used by more than one of the
+PCRE code modules. The tables are also #included by the pcretest program, which
+uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
+clashes with the library. */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcre_internal.h"
+
+
+/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
+the definition is next to the definition of the opcodes in pcre_internal.h. */
+
+//const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
+
+
+
+/*************************************************
+* Tables for UTF-8 support *
+*************************************************/
+
+/* These are the breakpoints for different numbers of bytes in a UTF-8
+character. */
+
+#ifdef SUPPORT_UTF8
+
+const int _pcre_utf8_table1[] =
+{ 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff};
+
+const int _pcre_utf8_table1_size = sizeof(_pcre_utf8_table1) / sizeof(int);
+
+/* These are the indicator bits and the mask for the data bits to set in the
+first byte of a character, indexed by the number of additional bytes. */
+
+const int _pcre_utf8_table2[] = { 0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc};
+const int _pcre_utf8_table3[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01};
+
+/* Table of the number of extra bytes, indexed by the first byte masked with
+0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d. */
+
+const uschar _pcre_utf8_table4[] =
+{
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
+};
+
+/* The pcre_utt[] table below translates Unicode property names into type and
+code values. It is searched by binary chop, so must be in collating sequence of
+name. Originally, the table contained pointers to the name strings in the first
+field of each entry. However, that leads to a large number of relocations when
+a shared library is dynamically loaded. A significant reduction is made by
+putting all the names into a single, large string and then using offsets in the
+table itself. Maintenance is more error-prone, but frequent changes to this
+data is unlikely. */
+
+const char _pcre_utt_names[] =
+ "Any\0"
+ "Arabic\0"
+ "Armenian\0"
+ "Balinese\0"
+ "Bengali\0"
+ "Bopomofo\0"
+ "Braille\0"
+ "Buginese\0"
+ "Buhid\0"
+ "C\0"
+ "Canadian_Aboriginal\0"
+ "Cc\0"
+ "Cf\0"
+ "Cherokee\0"
+ "Cn\0"
+ "Co\0"
+ "Common\0"
+ "Coptic\0"
+ "Cs\0"
+ "Cuneiform\0"
+ "Cypriot\0"
+ "Cyrillic\0"
+ "Deseret\0"
+ "Devanagari\0"
+ "Ethiopic\0"
+ "Georgian\0"
+ "Glagolitic\0"
+ "Gothic\0"
+ "Greek\0"
+ "Gujarati\0"
+ "Gurmukhi\0"
+ "Han\0"
+ "Hangul\0"
+ "Hanunoo\0"
+ "Hebrew\0"
+ "Hiragana\0"
+ "Inherited\0"
+ "Kannada\0"
+ "Katakana\0"
+ "Kharoshthi\0"
+ "Khmer\0"
+ "L\0"
+ "L&\0"
+ "Lao\0"
+ "Latin\0"
+ "Limbu\0"
+ "Linear_B\0"
+ "Ll\0"
+ "Lm\0"
+ "Lo\0"
+ "Lt\0"
+ "Lu\0"
+ "M\0"
+ "Malayalam\0"
+ "Mc\0"
+ "Me\0"
+ "Mn\0"
+ "Mongolian\0"
+ "Myanmar\0"
+ "N\0"
+ "Nd\0"
+ "New_Tai_Lue\0"
+ "Nko\0"
+ "Nl\0"
+ "No\0"
+ "Ogham\0"
+ "Old_Italic\0"
+ "Old_Persian\0"
+ "Oriya\0"
+ "Osmanya\0"
+ "P\0"
+ "Pc\0"
+ "Pd\0"
+ "Pe\0"
+ "Pf\0"
+ "Phags_Pa\0"
+ "Phoenician\0"
+ "Pi\0"
+ "Po\0"
+ "Ps\0"
+ "Runic\0"
+ "S\0"
+ "Sc\0"
+ "Shavian\0"
+ "Sinhala\0"
+ "Sk\0"
+ "Sm\0"
+ "So\0"
+ "Syloti_Nagri\0"
+ "Syriac\0"
+ "Tagalog\0"
+ "Tagbanwa\0"
+ "Tai_Le\0"
+ "Tamil\0"
+ "Telugu\0"
+ "Thaana\0"
+ "Thai\0"
+ "Tibetan\0"
+ "Tifinagh\0"
+ "Ugaritic\0"
+ "Yi\0"
+ "Z\0"
+ "Zl\0"
+ "Zp\0"
+ "Zs\0";
+
+const ucp_type_table _pcre_utt[] =
+{
+ { 0, PT_ANY, 0 },
+ { 4, PT_SC, ucp_Arabic },
+ { 11, PT_SC, ucp_Armenian },
+ { 20, PT_SC, ucp_Balinese },
+ { 29, PT_SC, ucp_Bengali },
+ { 37, PT_SC, ucp_Bopomofo },
+ { 46, PT_SC, ucp_Braille },
+ { 54, PT_SC, ucp_Buginese },
+ { 63, PT_SC, ucp_Buhid },
+ { 69, PT_GC, ucp_C },
+ { 71, PT_SC, ucp_Canadian_Aboriginal },
+ { 91, PT_PC, ucp_Cc },
+ { 94, PT_PC, ucp_Cf },
+ { 97, PT_SC, ucp_Cherokee },
+ { 106, PT_PC, ucp_Cn },
+ { 109, PT_PC, ucp_Co },
+ { 112, PT_SC, ucp_Common },
+ { 119, PT_SC, ucp_Coptic },
+ { 126, PT_PC, ucp_Cs },
+ { 129, PT_SC, ucp_Cuneiform },
+ { 139, PT_SC, ucp_Cypriot },
+ { 147, PT_SC, ucp_Cyrillic },
+ { 156, PT_SC, ucp_Deseret },
+ { 164, PT_SC, ucp_Devanagari },
+ { 175, PT_SC, ucp_Ethiopic },
+ { 184, PT_SC, ucp_Georgian },
+ { 193, PT_SC, ucp_Glagolitic },
+ { 204, PT_SC, ucp_Gothic },
+ { 211, PT_SC, ucp_Greek },
+ { 217, PT_SC, ucp_Gujarati },
+ { 226, PT_SC, ucp_Gurmukhi },
+ { 235, PT_SC, ucp_Han },
+ { 239, PT_SC, ucp_Hangul },
+ { 246, PT_SC, ucp_Hanunoo },
+ { 254, PT_SC, ucp_Hebrew },
+ { 261, PT_SC, ucp_Hiragana },
+ { 270, PT_SC, ucp_Inherited },
+ { 280, PT_SC, ucp_Kannada },
+ { 288, PT_SC, ucp_Katakana },
+ { 297, PT_SC, ucp_Kharoshthi },
+ { 308, PT_SC, ucp_Khmer },
+ { 314, PT_GC, ucp_L },
+ { 316, PT_LAMP, 0 },
+ { 319, PT_SC, ucp_Lao },
+ { 323, PT_SC, ucp_Latin },
+ { 329, PT_SC, ucp_Limbu },
+ { 335, PT_SC, ucp_Linear_B },
+ { 344, PT_PC, ucp_Ll },
+ { 347, PT_PC, ucp_Lm },
+ { 350, PT_PC, ucp_Lo },
+ { 353, PT_PC, ucp_Lt },
+ { 356, PT_PC, ucp_Lu },
+ { 359, PT_GC, ucp_M },
+ { 361, PT_SC, ucp_Malayalam },
+ { 371, PT_PC, ucp_Mc },
+ { 374, PT_PC, ucp_Me },
+ { 377, PT_PC, ucp_Mn },
+ { 380, PT_SC, ucp_Mongolian },
+ { 390, PT_SC, ucp_Myanmar },
+ { 398, PT_GC, ucp_N },
+ { 400, PT_PC, ucp_Nd },
+ { 403, PT_SC, ucp_New_Tai_Lue },
+ { 415, PT_SC, ucp_Nko },
+ { 419, PT_PC, ucp_Nl },
+ { 422, PT_PC, ucp_No },
+ { 425, PT_SC, ucp_Ogham },
+ { 431, PT_SC, ucp_Old_Italic },
+ { 442, PT_SC, ucp_Old_Persian },
+ { 454, PT_SC, ucp_Oriya },
+ { 460, PT_SC, ucp_Osmanya },
+ { 468, PT_GC, ucp_P },
+ { 470, PT_PC, ucp_Pc },
+ { 473, PT_PC, ucp_Pd },
+ { 476, PT_PC, ucp_Pe },
+ { 479, PT_PC, ucp_Pf },
+ { 482, PT_SC, ucp_Phags_Pa },
+ { 491, PT_SC, ucp_Phoenician },
+ { 502, PT_PC, ucp_Pi },
+ { 505, PT_PC, ucp_Po },
+ { 508, PT_PC, ucp_Ps },
+ { 511, PT_SC, ucp_Runic },
+ { 517, PT_GC, ucp_S },
+ { 519, PT_PC, ucp_Sc },
+ { 522, PT_SC, ucp_Shavian },
+ { 530, PT_SC, ucp_Sinhala },
+ { 538, PT_PC, ucp_Sk },
+ { 541, PT_PC, ucp_Sm },
+ { 544, PT_PC, ucp_So },
+ { 547, PT_SC, ucp_Syloti_Nagri },
+ { 560, PT_SC, ucp_Syriac },
+ { 567, PT_SC, ucp_Tagalog },
+ { 575, PT_SC, ucp_Tagbanwa },
+ { 584, PT_SC, ucp_Tai_Le },
+ { 591, PT_SC, ucp_Tamil },
+ { 597, PT_SC, ucp_Telugu },
+ { 604, PT_SC, ucp_Thaana },
+ { 611, PT_SC, ucp_Thai },
+ { 616, PT_SC, ucp_Tibetan },
+ { 624, PT_SC, ucp_Tifinagh },
+ { 633, PT_SC, ucp_Ugaritic },
+ { 642, PT_SC, ucp_Yi },
+ { 645, PT_GC, ucp_Z },
+ { 647, PT_PC, ucp_Zl },
+ { 650, PT_PC, ucp_Zp },
+ { 653, PT_PC, ucp_Zs }
+};
+
+const int _pcre_utt_size = sizeof(_pcre_utt) / sizeof(ucp_type_table);
+
+#endif /* SUPPORT_UTF8 */
+
+/* End of pcre_tables.c */
diff --git a/modules/string/src/c/scistrtostr.c b/modules/string/src/c/scistrtostr.c
new file mode 100755
index 000000000..b2555e842
--- /dev/null
+++ b/modules/string/src/c/scistrtostr.c
@@ -0,0 +1,53 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2009
+*
+* 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 "MALLOC.h"
+#include "scistrtostr.h"
+#include "cvstr.h"
+/*--------------------------------------------------------------------------*/
+#define MEM_LACK -3
+/*--------------------------------------------------------------------------*/
+int SciStrtoStr (int *Scistring, int *nstring, int *ptrstrings, char **strh)
+{
+ char *s = NULL, *p = NULL;
+ int li = 0, ni = 0, *SciS = NULL, i = 0, job = 1;
+
+ li = ptrstrings[0];
+ ni = ptrstrings[*nstring] - li + *nstring + 1;
+
+ p = (char *) MALLOC(ni * sizeof(char) );
+
+ if (p == NULL)
+ {
+ return MEM_LACK;
+ }
+
+ SciS = Scistring;
+ s = p;
+ for ( i = 1 ; i < *nstring + 1 ; i++)
+ {
+ ni = ptrstrings[i] - li;
+ li = ptrstrings[i];
+ F2C(cvstr)(&ni, SciS, s, &job, (long int)ni);
+ SciS += ni;
+ s += ni;
+ if (i < *nstring)
+ {
+ *s = '\n';
+ s++;
+ }
+ }
+ *s = '\0';
+ *strh = p;
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/setScilabCharactersCodes.c b/modules/string/src/c/setScilabCharactersCodes.c
new file mode 100755
index 000000000..ec70011b0
--- /dev/null
+++ b/modules/string/src/c/setScilabCharactersCodes.c
@@ -0,0 +1,48 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - 2010 - Allan CORNET
+ *
+ * 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 "setScilabCharactersCodes.h"
+#include "stack-def.h"
+/*--------------------------------------------------------------------------*/
+void setScilabCharactersCodes(void)
+{
+ const char alpha[csiz] =
+ {
+ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+ "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
+ "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
+ "u" "v" "w" "x" "y" "z" "_" "#" "!" "$"
+ " " "(" ")" ";" ":" "+" "-" "*" "/" "\\"
+ "=" "." "," "'" "[" "]" "%" "|" "&" "<"
+ ">" "~" "^"
+ };
+
+ const char alphb[csiz] =
+ {
+ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+ "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
+ "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T"
+ "U" "V" "W" "X" "Y" "Z" "0" "0" "?" "0"
+ "\t" "0" "0" "0" "0" "0" "0" "0" "0" "$"
+ "0" "0" "0" "\"" "{" "}" "0" "0" "0" "`"
+ "0" "@" "0"
+ };
+
+ memcpy(C2F(cha1).alfa, alpha, sizeof(alpha));
+ memcpy(C2F(cha1).alfb, alphb, sizeof(alphb));
+ C2F(cha1).buf[0] = 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/setScilabCharactersCodes.h b/modules/string/src/c/setScilabCharactersCodes.h
new file mode 100755
index 000000000..78fe4e79d
--- /dev/null
+++ b/modules/string/src/c/setScilabCharactersCodes.h
@@ -0,0 +1,58 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __SETSCILABCHARACTERSCODES_H__
+#define __SETSCILABCHARACTERSCODES_H__
+
+
+/** ASCII printable characters
+* http://en.wikipedia.org/wiki/ASCII
+*/
+
+/**
+* Scilab codes for known characters
+* In Scilab, chars are first converted as integers (positives and some
+* negatives) and we have :
+*
+* code | 0 1 .... 9 | 10 11 ... 35 | 36 37 38 39 | 40
+* -----+-------------+----------------+----------------+------
+* char | 0 1 .... 9 | a b ... z | _ # ! $ | blank
+* ============================================================
+* char | | A B ... Z | ? | tab
+* -------------------+----------------+----------------+------
+* code | |-10 -11 ... -35 | -38 ! -40
+*
+* In fact (for the mapping code -> char), code = -1
+* to -9 correspond also to chars 1 to 9 and code = -36,-37,-39
+* to the char 0
+*
+* So if c is a scilab coded char then :
+*
+* abs(c) <= 9 => c is a digit
+* abs(c) < 40 => c is an alphanum Scilab char (which
+* comprise _ but also # ! $ ?). Moreover
+* Scilab names may begin with %
+* abs(c) == 40 => c is a blank "like" (blank or tab) char
+* The upper-case characters and some equivalents are coded by the lower-case code with a sign
+* change.
+* ref : Guide for Developers (Scilab Internals)
+*/
+
+/**
+* Set Scilab Characters Codes in C2F(cha1)
+*/
+void setScilabCharactersCodes(void);
+
+#endif /* __SETSCILABCHARACTERSCODES_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/string.rc b/modules/string/src/c/string.rc
new file mode 100755
index 000000000..046836256
--- /dev/null
+++ b/modules/string/src/c/string.rc
@@ -0,0 +1,96 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "string module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "string module"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "string.dll"
+ VALUE "ProductName", "string module"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/string/src/c/string.vcxproj b/modules/string/src/c/string.vcxproj
new file mode 100755
index 000000000..12428c029
--- /dev/null
+++ b/modules/string/src/c/string.vcxproj
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8D45767A-9B03-4905-97F6-D2F3F79141EA}</ProjectGuid>
+ <RootNamespace>string</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../../includes;../cpp;../../../../libs/pcre;../../../core/includes;../../../api_scilab/includes;../../../windows_tools/includes;../../../localization/includes;../../../output_stream/includes;../../../functions/includes;../../../../libs/intl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)scilab_windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilab_windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)localization_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilocalization.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)functions.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>scilab_windows.lib;core.lib;string_f.lib;scilocalization.lib;linpack_f.lib;functions.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../../includes;../cpp;../../../../libs/pcre;../../../core/includes;../../../api_scilab/includes;../../../windows_tools/includes;../../../localization/includes;../../../output_stream/includes;../../../functions/includes;../../../../libs/intl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)scilab_windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilab_windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)localization_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilocalization.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)functions.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>scilab_windows.lib;core.lib;string_f.lib;scilocalization.lib;linpack_f.lib;functions.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../../includes;../cpp;../../../../libs/pcre;../../../core/includes;../../../api_scilab/includes;../../../windows_tools/includes;../../../localization/includes;../../../output_stream/includes;../../../functions/includes;../../../../libs/intl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <DisableSpecificWarnings>4723</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)scilab_windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilab_windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)localization_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilocalization.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)functions.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>scilab_windows.lib;core.lib;string_f.lib;scilocalization.lib;linpack_f.lib;functions.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../../includes;../cpp;../../../../libs/pcre;../../../core/includes;../../../api_scilab/includes;../../../windows_tools/includes;../../../localization/includes;../../../output_stream/includes;../../../functions/includes;../../../../libs/intl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;STRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <DisableSpecificWarnings>4723</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)scilab_windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilab_windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)localization_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)scilocalization.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)functions.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>scilab_windows.lib;core.lib;string_f.lib;scilocalization.lib;linpack_f.lib;functions.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\cpp\sort_inter.cpp" />
+ <ClCompile Include="code2str.c" />
+ <ClCompile Include="convstr.c" />
+ <ClCompile Include="cvstr.c" />
+ <ClCompile Include="DllMainString.c" />
+ <ClCompile Include="getfastcode.c" />
+ <ClCompile Include="..\..\sci_gateway\c\gw_string.c" />
+ <ClCompile Include="InitializeString.c" />
+ <ClCompile Include="isalphanum.c" />
+ <ClCompile Include="isdigit.c" />
+ <ClCompile Include="isletter.c" />
+ <ClCompile Include="men_Sutils.c" />
+ <ClCompile Include="partfunction.c" />
+ <ClCompile Include="pcre_error.c" />
+ <ClCompile Include="pcre_private.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_ascii.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_code2str.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_convstr.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_emptystr.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_grep.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_isalphanum.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_isascii.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_isdigit.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_isletter.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_length.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_part.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_regexp.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_str2code.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcat.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MinSpace</Optimization>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strchr.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcmp.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcspn.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strindex.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_string.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_stripblanks.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strncpy.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strrev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strsplit.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strspn.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strstr.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strsubst.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strtod.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_strtok.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_tokens.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_isnum.c" />
+ <ClCompile Include="scistrtostr.c" />
+ <ClCompile Include="setScilabCharactersCodes.c" />
+ <ClCompile Include="StringConvert.c" />
+ <ClCompile Include="stringsCompare.c" />
+ <ClCompile Include="stringsstrrchr.c" />
+ <ClCompile Include="stringsstrrev.c" />
+ <ClCompile Include="stringToDouble.c" />
+ <ClCompile Include="stripblanks.c" />
+ <ClCompile Include="stristr.c" />
+ <ClCompile Include="strsplit.c" />
+ <ClCompile Include="strsubst.c" />
+ <ClCompile Include="tokens.c" />
+ <ClCompile Include="isnum.c" />
+ <ClCompile Include="stringToComplex.c" />
+ <ClCompile Include="complex_array.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\locales\string.pot" />
+ <None Include="functions_Import.def" />
+ <None Include="core_import.def" />
+ <None Include="linpack_f_Import.def" />
+ <None Include="localization_Import.def" />
+ <None Include="Scilab_windows_Import.def" />
+ <None Include="string_f_Import.def" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="..\..\string.iss" />
+ <None Include="..\..\sci_gateway\string_gateway.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="string.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\integer\src\c\integer.vcxproj">
+ <Project>{c7865caa-ec7c-41eb-8324-2b81c384ca20}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\includes\code2str.h" />
+ <ClInclude Include="..\..\includes\cvstr.h" />
+ <ClInclude Include="..\..\includes\dynlib_string.h" />
+ <ClInclude Include="..\..\includes\getfastcode.h" />
+ <ClInclude Include="..\..\includes\gw_string.h" />
+ <ClInclude Include="..\..\includes\InitializeString.h" />
+ <ClInclude Include="..\..\includes\men_Sutils.h" />
+ <ClInclude Include="..\..\includes\pcre_private.h" />
+ <ClInclude Include="..\..\includes\scistrtostr.h" />
+ <ClInclude Include="..\..\includes\stricmp.h" />
+ <ClInclude Include="..\..\includes\StringConvert.h" />
+ <ClInclude Include="..\..\includes\stringToDouble.h" />
+ <ClInclude Include="..\..\includes\stripblanks.h" />
+ <ClInclude Include="..\..\includes\stristr.h" />
+ <ClInclude Include="..\..\includes\strsubst.h" />
+ <ClInclude Include="..\..\includes\stringToComplex.h" />
+ <ClInclude Include="..\..\includes\complex_array.h" />
+ <ClInclude Include="..\cpp\sort_inter.h" />
+ <ClInclude Include="config.h" />
+ <ClInclude Include="convstr.h" />
+ <ClInclude Include="CreateEmptystr.h" />
+ <ClInclude Include="isalphanum.h" />
+ <ClInclude Include="isdigit.h" />
+ <ClInclude Include="isletter.h" />
+ <ClInclude Include="partfunction.h" />
+ <ClInclude Include="pcre_error.h" />
+ <ClInclude Include="pcre_internal.h" />
+ <ClInclude Include="setScilabCharactersCodes.h" />
+ <ClInclude Include="stringsCompare.h" />
+ <ClInclude Include="stringsstrrchr.h" />
+ <ClInclude Include="stringsstrrev.h" />
+ <ClInclude Include="strsplit.h" />
+ <ClInclude Include="tokens.h" />
+ <ClInclude Include="ucp.h" />
+ <ClInclude Include="isnum.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/string/src/c/string.vcxproj.filters b/modules/string/src/c/string.vcxproj.filters
new file mode 100755
index 000000000..fc0978073
--- /dev/null
+++ b/modules/string/src/c/string.vcxproj.filters
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{8f4b4e86-05d3-4230-9042-215d5da39a5b}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{b5bb30d7-e6b4-428d-8105-8afaa34e6bc4}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="localization">
+ <UniqueIdentifier>{80ed89b6-b1df-47ba-a04e-81edafdf3bdd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{34866862-df2f-420b-9752-9a0063422099}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{dc8cf049-5b47-426f-8325-135f6110c526}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{0d508648-07ca-4944-8dee-2b1644e28665}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="code2str.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="convstr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="cvstr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DllMainString.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="getfastcode.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\gw_string.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="InitializeString.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="isalphanum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="isdigit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="isletter.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="men_Sutils.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="partfunction.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="pcre_error.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="pcre_private.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_ascii.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_code2str.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_convstr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_emptystr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_grep.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_isalphanum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_isascii.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_isdigit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_isletter.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_length.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_part.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_regexp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_str2code.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcat.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strchr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcmp.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strcspn.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_string.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_stripblanks.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strncpy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strrev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strsplit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strspn.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strstr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strsubst.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strtod.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strtok.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_tokens.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="scistrtostr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="setScilabCharactersCodes.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="StringConvert.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stringsCompare.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stringsstrrchr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stringsstrrev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stripblanks.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="strsplit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="strsubst.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="tokens.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stringToDouble.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stristr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_isnum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="isnum.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="stringToComplex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="complex_array.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_strindex.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\sort_inter.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="localization_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="Scilab_windows_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="string_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="..\..\Makefile.am" />
+ <None Include="..\..\string.iss" />
+ <None Include="..\..\sci_gateway\string_gateway.xml" />
+ <None Include="linpack_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="functions_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="..\..\locales\string.pot">
+ <Filter>localization</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="string.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\includes\code2str.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\cvstr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\dynlib_string.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\getfastcode.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\gw_string.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\InitializeString.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\men_Sutils.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\pcre_private.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\scistrtostr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\stricmp.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\StringConvert.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\stringToDouble.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\stripblanks.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\strsubst.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="convstr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="CreateEmptystr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="isalphanum.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="isdigit.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="isletter.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="partfunction.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="pcre_error.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="pcre_internal.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="setScilabCharactersCodes.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="stringsCompare.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="stringsstrrchr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="stringsstrrev.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="strsplit.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="tokens.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="ucp.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\stristr.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\stringToComplex.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\complex_array.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="isnum.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\cpp\sort_inter.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/string/src/c/stringToComplex.c b/modules/string/src/c/stringToComplex.c
new file mode 100755
index 000000000..d2a9cf348
--- /dev/null
+++ b/modules/string/src/c/stringToComplex.c
@@ -0,0 +1,538 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
+ *
+ * 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 <math.h>
+#include <ctype.h>
+#include "stringToComplex.h"
+#include "stringToDouble.h"
+#include "MALLOC.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "BOOL.h"
+#include "strsubst.h"
+/* ========================================================================== */
+#define PlusChar '+'
+#define LessChar '-'
+#define ComplexCharI 'i'
+#define ComplexCharJ 'j'
+#define ComplexScilab "%i"
+#define ComplexI "i"
+/* ========================================================================== */
+#ifndef _MSC_VER
+#ifndef strnicmp
+#define strnicmp strncasecmp
+#endif
+#else
+#define stricmp _stricmp
+#endif
+#ifdef _MSC_VER
+#undef strnicmp
+#define strnicmp _strnicmp
+#endif
+/* ========================================================================== */
+static int ParseNumber(const char* tx);
+static stringToComplexError ParseComplexValue(const char *tx, BOOL bConvertByNAN, double *real, double *imag);
+static char *midstring(const char *tx, size_t pos, int nb);
+static char *leftstring(const char *tx, size_t pos);
+static BOOL is_unit_imaginary (const char *src, double *im);
+static double returnNAN(void);
+/* ========================================================================== */
+complexArray *stringsToComplexArray(const char **pSTRs, int nbElements,
+ const char *decimal,
+ BOOL bConvertByNAN,
+ stringToComplexError *ierr)
+{
+ complexArray *pComplexArray = NULL;
+
+ *ierr = STRINGTOCOMPLEX_ERROR;
+ if (nbElements <= 0)
+ {
+ return NULL;
+ }
+
+ if (pSTRs == NULL)
+ {
+ *ierr = STRINGTOCOMPLEX_MEMORY_ALLOCATION;
+ }
+ else
+ {
+ pComplexArray = createComplexArrayEmpty(nbElements);
+ if (pComplexArray)
+ {
+ int i = 0;
+ for (i = 0; i < nbElements; i++)
+ {
+ doublecomplex dComplexValue = stringToComplex(pSTRs[i], decimal, bConvertByNAN, ierr);
+ if (*ierr != STRINGTOCOMPLEX_NO_ERROR)
+ {
+ freeComplexArray(pComplexArray);
+ return NULL;
+ }
+ else
+ {
+ pComplexArray->realPart[i] = dComplexValue.r;
+ pComplexArray->imagPart[i] = dComplexValue.i;
+ }
+ }
+ cleanImagPartComplexArray(pComplexArray);
+ }
+ else
+ {
+ *ierr = STRINGTOCOMPLEX_MEMORY_ALLOCATION;
+ }
+ }
+ return pComplexArray;
+}
+/* ========================================================================== */
+doublecomplex stringToComplex(const char *pSTR, const char *decimal, BOOL bConvertByNAN, stringToComplexError *ierr)
+{
+ doublecomplex dComplexValue;
+ *ierr = STRINGTOCOMPLEX_ERROR;
+
+ dComplexValue.r = 0.;
+ dComplexValue.i = 0.;
+
+ if (pSTR)
+ {
+ double real = 0.;
+ double imag = 0.;
+ char *pStrTemp = strsub((char*)pSTR, " ", "");
+
+ if (pStrTemp)
+ {
+ char *pStrFormatted = strsub(pStrTemp, decimal, ".");
+ FREE(pStrTemp);
+
+ if (pStrFormatted)
+ {
+ int lenStrFormatted = (int) strlen(pStrFormatted);
+
+ /* case .4 replaced by 0.4 */
+ if (pStrFormatted[0] == '.')
+ {
+ /* case .4 replaced by 0.4 */
+ char *pstStrTemp = (char*)MALLOC(sizeof(char) * (lenStrFormatted + strlen("0") + 1));
+ strcpy(pstStrTemp, "0");
+ strcat(pstStrTemp, pStrFormatted);
+ FREE(pStrFormatted);
+ pStrFormatted = pstStrTemp;
+ }
+
+ if (lenStrFormatted > 1)
+ {
+ if (((pStrFormatted[0] == '+') || (pStrFormatted[0] == '-')) &&
+ (pStrFormatted[1] == '.'))
+ {
+ /* case +.4 replaced by +0.4 */
+ char *pstStrTemp = strsub(pStrFormatted, "+.", "+0.");
+ FREE(pStrFormatted);
+
+ /* case -.4 replaced by -0.4 */
+ pStrFormatted = strsub(pstStrTemp, "-.", "-0.");
+ FREE(pstStrTemp);
+ }
+ }
+
+ /* Case: "i", "+i", "-i", and with "j" */
+ if (is_unit_imaginary (pStrFormatted, &imag))
+ {
+ *ierr = STRINGTOCOMPLEX_NO_ERROR;
+ dComplexValue.r = 0.;
+ dComplexValue.i = imag;
+ }
+ else
+ {
+ *ierr = ParseComplexValue(pStrFormatted, bConvertByNAN, &real, &imag);
+ }
+ FREE(pStrFormatted);
+ }
+ }
+ dComplexValue.r = real;
+ dComplexValue.i = imag;
+ }
+ return dComplexValue;
+}
+/* ========================================================================== */
+static int ParseNumber(const char* tx)
+{
+ int lookahead = 0;
+ int len = 0;
+
+ if (tx[len] == NULL)
+ {
+ return lookahead;
+ }
+ if (tx[len] < 0)
+ {
+ return lookahead;
+ }
+
+ // Special cases: constants
+ if (strlen(tx) >= 5 && strncmp(tx, "+%eps", 5) == 0 || strncmp(tx, "-%eps", 5) == 0 || strncmp(tx, "+%nan", 5) == 0 ||
+ strncmp(tx, "-%nan", 5) == 0 || strncmp(tx, "+%inf", 5) == 0 || strncmp(tx, "-%inf", 5) == 0)
+ {
+ return 5;
+ }
+ else if (strlen(tx) >= 4 && strncmp(tx, "%eps", 4) == 0 || strncmp(tx, "+%pi", 4) == 0 || strncmp(tx, "-%pi", 4) == 0 ||
+ strncmp(tx, "+Inf", 4) == 0 || strncmp(tx, "-Inf", 4) == 0 || strncmp(tx, "+Nan", 4) == 0 ||
+ strncmp(tx, "-Nan", 4) == 0 || strncmp(tx, "%nan", 4) == 0 || strncmp(tx, "%inf", 4) == 0 )
+ {
+ return 4;
+ }
+ else if (strlen(tx) >= 3 && strncmp(tx, "+%e", 3) == 0 || strncmp(tx, "-%e", 3) == 0 || strncmp(tx, "%pi", 3) == 0 ||
+ strncmp(tx, "Nan", 3) == 0 || strncmp(tx, "Inf", 3) == 0 || strncmp(tx, "%pi", 3) == 0)
+ {
+ return 3;
+ }
+ else if (strlen(tx) >= 2 && strncmp(tx, "%e", 2) == 0)
+ {
+ return 2;
+ }
+
+ if ((tx[len] == '+') || (tx[len] == '-'))
+ {
+ len++;
+ }
+
+ while (isdigit(tx[len]))
+ {
+ len++;
+ }
+ lookahead = len;
+
+ if (tx[lookahead] == '.')
+ {
+ lookahead++;
+ len = 0;
+ while (isdigit(tx[len + lookahead]))
+ {
+ len++;
+ }
+ lookahead += len;
+ }
+
+ if ((tx[lookahead] == 'E') || (tx[lookahead] == 'e') ||
+ (tx[lookahead] == 'D') || (tx[lookahead] == 'd'))
+ {
+
+ lookahead++;
+ if ((tx[lookahead] == '+') || (tx[lookahead] == '-'))
+ {
+ lookahead++;
+ }
+
+ len = 0;
+ while (isdigit(tx[len + lookahead]))
+ {
+ len++;
+ }
+
+ lookahead += len;
+ }
+ return lookahead;
+}
+/* ========================================================================== */
+static stringToComplexError ParseComplexValue(const char *tx, BOOL bConvertByNAN, double *real, double *imag)
+{
+ stringToDoubleError ierrDouble = STRINGTODOUBLE_NO_ERROR;
+ stringToComplexError ierr = STRINGTOCOMPLEX_NO_ERROR;
+ char *rnum_string = NULL;
+ char *inum_string = NULL;
+ size_t lnum = 0;
+ BOOL haveImagI = FALSE;
+ char *modifiedTxt = NULL;
+ int i = 0;
+
+ *real = stringToDouble(tx, FALSE, &ierrDouble);
+ *imag = 0;
+
+ /* test on strlen(tx) > 1 to remove case 'e' */
+ if ((int)strlen(tx) < 2)
+ {
+ if (ierrDouble == STRINGTODOUBLE_NO_ERROR)
+ {
+ ierr = (stringToComplexError) ierrDouble;
+ }
+ else
+ {
+ if (bConvertByNAN)
+ {
+ ierrDouble = STRINGTODOUBLE_NOT_A_NUMBER;
+ *real = returnNAN();
+ *imag = 0;
+ }
+ else
+ {
+ *real = 0;
+ *imag = 0;
+ ierr = (stringToComplexError) ierrDouble;
+ }
+ }
+ }
+ else if (ierrDouble != STRINGTODOUBLE_NO_ERROR)
+ {
+ modifiedTxt = strsub((char*)tx, ComplexScilab, ComplexI);
+ lnum = ParseNumber(modifiedTxt);
+ if (lnum <= 1)
+ {
+ /* manages special cases nan + nani, ... */
+ if (strnicmp(modifiedTxt, NanString, strlen(NanString)) == 0)
+ {
+ lnum = strlen(NanString);
+ }
+ else if (strnicmp(modifiedTxt, InfString, strlen(InfString)) == 0)
+ {
+ lnum = strlen(InfString);
+ }
+ else if (strnicmp(modifiedTxt, NegInfString, strlen(NegInfString)) == 0)
+ {
+ lnum = strlen(NegInfString);
+ }
+ else if (strnicmp(modifiedTxt, PosInfString, strlen(PosInfString)) == 0)
+ {
+ lnum = strlen(PosInfString);
+ }
+ else if (strnicmp(modifiedTxt, NegNanString, strlen(NegNanString)) == 0)
+ {
+ lnum = strlen(NegNanString);
+ }
+ else if (strnicmp(modifiedTxt, PosNanString, strlen(PosNanString)) == 0)
+ {
+ lnum = strlen(PosNanString);
+ }
+ }
+ inum_string = midstring(modifiedTxt, lnum, -1);
+
+ if ((inum_string[strlen(inum_string) - 1] == 'i') ||
+ (inum_string[strlen(inum_string) - 1] == 'j')) // The imaginary part looks like "a*%i"
+ {
+ inum_string[strlen(inum_string) - 1] = 0;
+ if (inum_string[strlen(inum_string) - 1] == '*')
+ {
+ inum_string[strlen(inum_string) - 1] = 0;
+ }
+
+ if (strcmp(inum_string, "+") == 0)
+ {
+ FREE(inum_string);
+ inum_string = strdup("+1");
+ }
+
+ if (strcmp(inum_string, "-") == 0)
+ {
+ FREE(inum_string);
+ inum_string = strdup("-1");
+ }
+ haveImagI = TRUE;
+ }
+ else if (inum_string[1] == 'i' || inum_string[1] == 'j') // The imaginary part looks like "%i*a". For instance if string() has been used
+ {
+ int len_inum_string = strlen(inum_string);
+ for (i = 1; i < len_inum_string; ++i)
+ {
+ inum_string[i] = inum_string[i + 1]; // Removing the "i"
+ }
+ if (inum_string[1] == '*')
+ {
+ for (i = 1; i < len_inum_string; ++i)
+ {
+ inum_string[i] = inum_string[i + 1]; // Removing the "*"
+ }
+ }
+
+ if (strcmp(inum_string, "+") == 0)
+ {
+ FREE(inum_string);
+ inum_string = strdup("+1");
+ }
+
+ if (strcmp(inum_string, "-") == 0)
+ {
+ FREE(inum_string);
+ inum_string = strdup("-1");
+ }
+ haveImagI = TRUE;
+ }
+ else
+ {
+ haveImagI = FALSE;
+ }
+ rnum_string = leftstring(modifiedTxt, lnum);
+
+ if (strcmp(inum_string, "") == 0)
+ {
+ *imag = stringToDouble(rnum_string, bConvertByNAN, &ierrDouble);
+ ierr = (stringToComplexError)(ierrDouble);
+ *real = 0.;
+ }
+ else
+ {
+ double dReal = 0.;
+ double dImag = 0.;
+
+ stringToDoubleError ierrReal = STRINGTODOUBLE_NO_ERROR;
+ stringToDoubleError ierrImag = STRINGTODOUBLE_NO_ERROR;
+ dReal = stringToDouble(rnum_string, FALSE, &ierrReal);
+ dImag = stringToDouble(inum_string, FALSE, &ierrImag);
+
+ if ((ierrReal == STRINGTODOUBLE_NO_ERROR) && (ierrImag == STRINGTODOUBLE_NO_ERROR))
+ {
+ if (!haveImagI)
+ {
+ if (bConvertByNAN)
+ {
+ ierr = STRINGTOCOMPLEX_NO_ERROR;
+ *real = returnNAN();
+ *imag = 0.;
+ }
+ else
+ {
+ ierr = STRINGTOCOMPLEX_ERROR;
+ }
+ }
+ else
+ {
+ ierr = STRINGTOCOMPLEX_NO_ERROR;
+ *real = dReal;
+ *imag = dImag;
+ }
+ }
+ else
+ {
+ if (bConvertByNAN)
+ {
+ ierr = STRINGTOCOMPLEX_NO_ERROR;
+ *real = returnNAN();
+ *imag = 0.;
+ }
+ else
+ {
+ ierr = STRINGTOCOMPLEX_ERROR;
+ }
+ }
+ }
+
+ FREE(rnum_string);
+ FREE(inum_string);
+ FREE(modifiedTxt);
+ }
+ return ierr;
+}
+/* ========================================================================== */
+static char *midstring(const char *tx, size_t pos, int nb)
+{
+ char *returnString = NULL;
+ if (tx)
+ {
+ int lenTx = (int) strlen(tx);
+ int posEnd = 0;
+ int newLen = 0;
+
+ if (nb < 0)
+ {
+ posEnd = lenTx;
+ }
+ else
+ {
+ posEnd = nb;
+ }
+ newLen = posEnd + 1;
+ if (newLen > 0)
+ {
+ returnString = (char*)MALLOC(sizeof(char) * newLen);
+ strncpy(returnString, &tx[pos], posEnd);
+ returnString[posEnd] = 0;
+ }
+ }
+ return returnString;
+}
+/* ========================================================================== */
+static char *leftstring(const char *tx, size_t pos)
+{
+ char *returnString = NULL;
+ if (tx)
+ {
+ int lenTx = (int) strlen(tx);
+ returnString = strdup(tx);
+ if ((pos > lenTx))
+ {
+ return returnString;
+ }
+ else
+ {
+ returnString[pos] = 0;
+ }
+ }
+ return returnString;
+}
+/* ========================================================================== */
+static BOOL is_unit_imaginary (const char *src, double *im)
+{
+ char *modifiedSrc = strsub((char*)src, ComplexScilab, ComplexI);
+ char *nextChar = NULL;
+ BOOL isUnitImag = FALSE;
+
+ if (modifiedSrc == NULL)
+ {
+ return isUnitImag;
+ }
+
+ if (modifiedSrc[0] == LessChar)
+ {
+ *im = -1.0;
+ nextChar = modifiedSrc + 1;
+ }
+ else
+ {
+ *im = +1.0;
+ if (modifiedSrc[0] == PlusChar)
+ {
+ nextChar = modifiedSrc + 1;
+ }
+ else
+ {
+ nextChar = modifiedSrc;
+ }
+ }
+
+ if (nextChar)
+ {
+ if ((nextChar[0] == ComplexCharI || nextChar[0] == ComplexCharJ) && nextChar[1] == 0)
+ {
+ isUnitImag = TRUE;
+ }
+ }
+
+ if (modifiedSrc)
+ {
+ FREE(modifiedSrc);
+ modifiedSrc = NULL;
+ }
+ return isUnitImag;
+}
+/* ========================================================================== */
+static double returnNAN(void)
+{
+ static int first = 1;
+ static double nan = 1.0;
+
+ if ( first )
+ {
+ nan = (nan - (double) first) / (nan - (double) first);
+ first = 0;
+ }
+ return (nan);
+}
+// =============================================================================
diff --git a/modules/string/src/c/stringToDouble.c b/modules/string/src/c/stringToDouble.c
new file mode 100755
index 000000000..368132ce0
--- /dev/null
+++ b/modules/string/src/c/stringToDouble.c
@@ -0,0 +1,186 @@
+/*
+* Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
+*
+* 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
+*
+*/
+
+/* ========================================================================== */
+#if defined(__linux__)
+#define _GNU_SOURCE /* avoid dependency on GLIBC_2.7 */
+#endif
+/* ========================================================================== */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "stringToDouble.h"
+#include "core_math.h"
+#include "MALLOC.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#ifndef _MSC_VER
+#ifndef stricmp
+#define stricmp strcasecmp
+#endif
+#else
+#define stricmp _stricmp
+#endif
+/* ========================================================================== */
+#define DEFAULT_DOUBLE_MAX_DIGIT_FORMAT "%lg"
+/* ========================================================================== */
+static double returnINF(BOOL bPositive);
+static double returnNAN(void);
+/* ========================================================================== */
+
+static char* replace_D_By_E(const char* _pst)
+{
+ //find and replace d and D by E for compatibility with strtod Linux/Mac
+ char* pstReturn = strdup(_pst);
+ char* pstFind = pstReturn;
+ do
+ {
+ pstFind = strchr(pstFind, 'D');
+ if (pstFind)
+ {
+ pstFind[0] = 'E';
+ }
+ }
+ while (pstFind);
+
+ pstFind = pstReturn;
+ do
+ {
+ pstFind = strchr(pstFind, 'd');
+ if (pstFind)
+ {
+ pstFind[0] = 'e';
+ }
+ }
+ while (pstFind);
+
+ return pstReturn;
+}
+
+double stringToDouble(const char *pSTR, BOOL bConvertByNAN, stringToDoubleError *ierr)
+{
+ double dValue = 0.0;
+ *ierr = STRINGTODOUBLE_ERROR;
+ if (pSTR)
+ {
+ if ((stricmp(pSTR, NanString) == 0) || (stricmp(pSTR, NegNanString) == 0) ||
+ (stricmp(pSTR, PosNanString) == 0) || (stricmp(pSTR, ScilabPosNanString) == 0) ||
+ (stricmp(pSTR, ScilabNanString) == 0) || (stricmp(pSTR, ScilabNegNanString) == 0))
+ {
+ dValue = returnNAN();
+ }
+ else if ((stricmp(pSTR, InfString) == 0) || (stricmp(pSTR, PosInfString) == 0) ||
+ (stricmp(pSTR, ScilabInfString) == 0) || (stricmp(pSTR, ScilabPosInfString) == 0))
+ {
+ dValue = returnINF(TRUE);
+ }
+ else if ((stricmp(pSTR, NegInfString) == 0) || (stricmp(pSTR, ScilabNegInfString) == 0))
+ {
+ dValue = returnINF(FALSE);
+ }
+ else if ((stricmp(pSTR, ScilabPiString) == 0) || (stricmp(pSTR, ScilabPosPiString) == 0))
+ {
+ dValue = M_PI;
+ }
+ else if (stricmp(pSTR, ScilabNegPiString) == 0)
+ {
+ dValue = -M_PI;
+ }
+ else if ((stricmp(pSTR, ScilabEString) == 0) || (stricmp(pSTR, ScilabPosEString) == 0))
+ {
+ dValue = exp(1);
+ }
+ else if (stricmp(pSTR, ScilabNegEString) == 0)
+ {
+ dValue = -exp(1);
+ }
+ else if ((stricmp(pSTR, ScilabEpsString) == 0) || (stricmp(pSTR, ScilabPosEpsString) == 0))
+ {
+ dValue = EPSILON;
+ }
+ else if (stricmp(pSTR, ScilabNegEpsString) == 0)
+ {
+ dValue = -EPSILON;
+ }
+ else
+ {
+ char* pstReplaced = replace_D_By_E(pSTR);
+ char *pEnd = NULL;
+ double v = strtod(pstReplaced, &pEnd);
+ if ((v == 0) && (pEnd == pstReplaced))
+ {
+ if (bConvertByNAN)
+ {
+ dValue = returnNAN();
+ }
+ else
+ {
+ *ierr = STRINGTODOUBLE_NOT_A_NUMBER;
+ FREE(pstReplaced);
+ return (dValue = 0.0);
+ }
+ }
+ else
+ {
+ if (strcmp(pEnd, "") == 0)
+ {
+ dValue = v;
+ }
+ else
+ {
+ if (bConvertByNAN)
+ {
+ dValue = returnNAN();
+ }
+ else
+ {
+ *ierr = STRINGTODOUBLE_NOT_A_NUMBER;
+ FREE(pstReplaced);
+ return (dValue = 0.0);
+ }
+ }
+ }
+
+ FREE(pstReplaced);
+ }
+ *ierr = STRINGTODOUBLE_NO_ERROR;
+ }
+ else
+ {
+ *ierr = STRINGTODOUBLE_MEMORY_ALLOCATION;
+ }
+ return dValue;
+}
+// =============================================================================
+static double returnINF(BOOL bPositive)
+{
+ double dbl1 = 1.0;
+ double dbl0 = dbl1 - dbl1;
+ int iSign = bPositive == 1 ? 1 : -1;
+
+ return iSign * dbl1 / dbl0;
+}
+// =============================================================================
+static double returnNAN(void)
+{
+ static int first = 1;
+ static double nan = 1.0;
+
+ if ( first )
+ {
+ nan = (nan - (double) first) / (nan - (double) first);
+ first = 0;
+ }
+ return (nan);
+}
+// =============================================================================
diff --git a/modules/string/src/c/string_f_Import.def b/modules/string/src/c/string_f_Import.def
new file mode 100755
index 000000000..0f0e0037b
--- /dev/null
+++ b/modules/string/src/c/string_f_Import.def
@@ -0,0 +1,9 @@
+LIBRARY string_f.dll
+
+
+EXPORTS
+; ---------------------------------------
+; string_f
+; ---------------------------------------
+intstring_
+
diff --git a/modules/string/src/c/stringsCompare.c b/modules/string/src/c/stringsCompare.c
new file mode 100755
index 000000000..c9b069b9a
--- /dev/null
+++ b/modules/string/src/c/stringsCompare.c
@@ -0,0 +1,65 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 "stringsCompare.h"
+#include "MALLOC.h"
+#include "stricmp.h"
+/*--------------------------------------------------------------------------*/
+static int sign(int x)
+{
+ if (x < 0)
+ {
+ return -1;
+ }
+ if (x > 0)
+ {
+ return 1;
+ }
+ return 0;
+}
+
+int * stringsCompare(char **Input_String_One, int dim_One, char **Input_String_Two, int dim_Two, BOOL dostricmp)
+{
+ int *returnedValues = NULL;
+ int j = 0;
+
+ returnedValues = (int*)MALLOC(sizeof(int) * dim_One);
+ if (returnedValues)
+ {
+ int i = 0;
+ for (i = 0; i < dim_One; i++)
+ {
+ if (dim_Two == 1)
+ {
+ j = 0;
+ }
+ else
+ {
+ j = i;
+ }
+
+ if (dostricmp)
+ {
+ returnedValues[i] = sign(stricmp(Input_String_One[i], Input_String_Two[j]));
+ }
+ else
+ {
+ returnedValues[i] = sign(strcmp(Input_String_One[i], Input_String_Two[j]));
+ }
+ }
+ }
+ return returnedValues;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stringsCompare.h b/modules/string/src/c/stringsCompare.h
new file mode 100755
index 000000000..78826a99e
--- /dev/null
+++ b/modules/string/src/c/stringsCompare.h
@@ -0,0 +1,32 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __STRINGSCOMPARE_H__
+#define __STRINGSCOMPARE_H__
+
+#include "BOOL.h"
+
+/**
+* Compare strings matrix
+* @param[in] String matrix One
+* @param[in] Dimension m*n of String matrix one
+* @param[in] String matrix Two
+* @param[in] Dimension m*n of String matrix two
+* @param[in] BOOL to do stricmp
+* @return a int matrix (result of strcmp)
+*/
+int * stringsCompare(char **Input_String_One, int dim_One, char **Input_String_Two, int dim_Two, BOOL dostricmp);
+
+#endif /* __STRINGSCOMPARE_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stringsstrrchr.c b/modules/string/src/c/stringsstrrchr.c
new file mode 100755
index 000000000..bc434b05a
--- /dev/null
+++ b/modules/string/src/c/stringsstrrchr.c
@@ -0,0 +1,76 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - 2011 - Allan CORNET
+ *
+ * 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 <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include "stringsstrrchr.h"
+#include "MALLOC.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#define EMPTY_WCSTR L""
+/*----------------------------------------------------------------------------*/
+wchar_t ** strings_wcsrchr(const wchar_t **InputStrings, int Dim_InputStrings,
+ const wchar_t** InputChar, int Dim_InputChar, BOOL do_strchr)
+{
+ wchar_t **wcOutput_Strings = NULL;
+
+ if ( (InputStrings) && (InputChar) )
+ {
+ wcOutput_Strings = (wchar_t**)MALLOC(sizeof(wchar_t*) * Dim_InputStrings);
+ if (wcOutput_Strings)
+ {
+ int i = 0;
+ for (i = 0; i < Dim_InputStrings; i++)
+ {
+ int c = 0;
+ wchar_t *ptrStr = NULL;
+
+ if (Dim_InputChar == 1)
+ {
+ c = InputChar[0][0];
+ }
+ else
+ {
+ c = InputChar[i][0];
+ }
+
+ if (do_strchr)
+ {
+ ptrStr = wcschr(InputStrings[i], (wchar_t)c);
+ }
+ else
+ {
+ ptrStr = wcsrchr(InputStrings[i], (wchar_t)c);
+ }
+
+ if (ptrStr)
+ {
+ wcOutput_Strings[i] = (wchar_t*)MALLOC(sizeof(wchar_t) * (wcslen(ptrStr) + 1));
+ wcscpy(wcOutput_Strings[i], ptrStr);
+ }
+ else
+ {
+ wcOutput_Strings[i] = (wchar_t*)MALLOC(sizeof(wchar_t) * (wcslen(EMPTY_WCSTR) + 1));
+ wcscpy(wcOutput_Strings[i], EMPTY_WCSTR);
+ }
+ }
+ }
+ }
+ return wcOutput_Strings;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stringsstrrchr.h b/modules/string/src/c/stringsstrrchr.h
new file mode 100755
index 000000000..49e5f9f6f
--- /dev/null
+++ b/modules/string/src/c/stringsstrrchr.h
@@ -0,0 +1,38 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - 2011 - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*----------------------------------------------------------------------------*/
+#ifndef __STRINGSTRRCHAR_H__
+#define __STRINGSTRRCHAR_H__
+
+#include "BOOL.h"
+#include "charEncoding.h"
+
+/*
+* Locate last occurrence of character in string or
+* Locate first occurrence of character in string
+* @param[in] String matrix One
+* @param[in] Dimension m*n of String matrix one
+* @param[in] String matrix Two
+* @param[in] Dimension m*n of String matrix two
+* @param[in] BOOL to do strchr (first occurrence)
+* @return a string matrix (result of strchr or strrchr)
+*/
+wchar_t ** strings_wcsrchr(const wchar_t **InputStrings, int Dim_InputStrings,
+ const wchar_t** InputChar, int Dim_InputChar, BOOL do_strchr);
+
+#endif /* __STRINGSTRRCHAR_H__ */
+/*----------------------------------------------------------------------------*/
+
+
diff --git a/modules/string/src/c/stringsstrrev.c b/modules/string/src/c/stringsstrrev.c
new file mode 100755
index 000000000..6d92debb3
--- /dev/null
+++ b/modules/string/src/c/stringsstrrev.c
@@ -0,0 +1,85 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * Copyright (C) DIGITEO - 2009 - Allan CORNET
+ *
+ * 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 <stdio.h>
+#include "stringsstrrev.h"
+#include "freeArrayOfString.h"
+#include "MALLOC.h"
+#include "charEncoding.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+/*----------------------------------------------------------------------------*/
+char **strings_strrev(char **Input_strings, int Dim_Input_strings)
+{
+ char **Output_strings = NULL;
+ if (Input_strings)
+ {
+ Output_strings = (char **)MALLOC(sizeof(char*) * Dim_Input_strings);
+ if (Output_strings)
+ {
+ int i = 0;
+ for (i = 0; i < Dim_Input_strings; i++)
+ {
+ Output_strings[i] = scistrrev(Input_strings[i]);
+ if (Output_strings[i] == NULL)
+ {
+ freeArrayOfString(Output_strings, i);
+ return NULL;
+ }
+ }
+ }
+ }
+ return Output_strings;
+}
+/*----------------------------------------------------------------------------*/
+char* scistrrev(char* str)
+{
+ char *revstr = NULL;
+ if (str)
+ {
+ wchar_t *wcstr = to_wide_string(str);
+#ifdef _MSC_VER
+ wchar_t *wcrevstr = _wcsrev(wcstr);
+ revstr = wide_string_to_UTF8(wcrevstr);
+#else
+ int i = 0;
+ int t = 0;
+ int j = 0, k = 0;
+
+ if (wcstr)
+ {
+ i = (int)wcslen(wcstr);
+ }
+ t = !(i % 2) ? 1 : 0; // check the length of the string .
+
+ /* copy character by character to reverse string */
+ k = 0;
+ for (j = i - 1; j > (i / 2 - t) ; j-- )
+ {
+ /* j starts from end of string */
+ /* k starts from beginning of string */
+ wchar_t ch = wcstr[j]; /* ch temp. character */
+ wcstr[j] = wcstr[k]; /* end and beginning characters are exchanged */
+ wcstr[k++] = ch;
+ }
+ revstr = wide_string_to_UTF8(wcstr);
+#endif
+ FREE(wcstr);
+ }
+ return revstr;
+}
+/*----------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stringsstrrev.h b/modules/string/src/c/stringsstrrev.h
new file mode 100755
index 000000000..a590bd3c3
--- /dev/null
+++ b/modules/string/src/c/stringsstrrev.h
@@ -0,0 +1,22 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*----------------------------------------------------------------------------*/
+#ifndef __STRINGSSTRREV_H__
+#define __STRINGSSTRREV_H__
+
+char **strings_strrev(char **Input_strings, int Dim_Input_strings);
+char* scistrrev(char* str);
+
+#endif /* __STRINGSSTRREV_H__ */
+/*----------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stripblanks.c b/modules/string/src/c/stripblanks.c
new file mode 100755
index 000000000..56181d1e0
--- /dev/null
+++ b/modules/string/src/c/stripblanks.c
@@ -0,0 +1,152 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET , Cong WU
+ *
+ * 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
+ *
+ */
+
+/* desc : The algorithm of stripblanks */
+/*------------------------------------------------------------------------*/
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "gw_string.h"
+#include "MALLOC.h"
+#include "stripblanks.h"
+#include "freeArrayOfString.h"
+/*------------------------------------------------------------------------*/
+static char* substr(const char*str, unsigned start, unsigned end);
+/*------------------------------------------------------------------------*/
+#define BLANK_CHARACTER ' '
+#define TAB_CHARACTER 9
+/*------------------------------------------------------------------------*/
+static char* substr(const char*str, unsigned start, unsigned end)
+{
+ unsigned n = end - start;
+ char *stbuf = NULL;
+ stbuf = (char*)MALLOC(sizeof(char) * (n + 1));
+
+ if (stbuf)
+ {
+ if ( strcmp(str, "") != 0 )
+ {
+ strncpy(stbuf, str + start, n); /*Put a part of str into stbuf*/
+ stbuf[n] = 0;
+ }
+ else
+ {
+ strcpy(stbuf, "");
+ }
+ }
+ return stbuf;
+}
+/*------------------------------------------------------------------------*/
+void stripblanks(char **InputStrings, char **OutputStrings, int InputStringsDim, BOOL withTAB)
+{
+ int x = 0;
+ char *replacedstr = NULL;
+
+ for ( x = 0; x < InputStringsDim ; x++) /*Search for all the matrix*/
+ {
+ int lengthInput_One = 0;
+ int lengthInput_Two = 0;
+ int i = 0;
+
+ /* search character ' ' or TAB from end of the string */
+ for ( i = (int)strlen(InputStrings[x]) - 1 ; i > 0 ; i--)
+ {
+ if (withTAB)
+ {
+ if ( (InputStrings[x][i] == (char)BLANK_CHARACTER) ||
+ (InputStrings[x][i] == (char)TAB_CHARACTER) )
+ {
+ continue;
+ }
+ else
+ {
+ lengthInput_Two = i;
+ break;
+ }
+ }
+ else
+ {
+ if (InputStrings[x][i] == (char)BLANK_CHARACTER)
+ {
+ continue;
+ }
+ else
+ {
+ lengthInput_Two = i;
+ break;
+ }
+ }
+ }
+ /* search character ' ' or TAB from beginning of the string */
+ if (lengthInput_Two > 0)
+ {
+ int len_InputStrings = (int)strlen(InputStrings[x]);
+ for (i = 0; i < len_InputStrings; i++)
+ {
+ if (withTAB)
+ {
+ if ( (InputStrings[x][i] == (char)BLANK_CHARACTER) ||
+ (InputStrings[x][i] == (char)TAB_CHARACTER) )
+ {
+ continue;
+ }
+ else
+ {
+ lengthInput_One = i;
+ break;
+ }
+ }
+ else
+ {
+ if (InputStrings[x][i] == (char)BLANK_CHARACTER)
+ {
+ continue;
+ }
+ else
+ {
+ lengthInput_One = i;
+ break;
+ }
+ }
+ }
+ }
+
+ if (lengthInput_One <= lengthInput_Two )
+ {
+ if ( (lengthInput_Two == 0)
+ && ( (InputStrings[x][0] == (char)BLANK_CHARACTER )
+ || (withTAB && (InputStrings[x][0] == (char)TAB_CHARACTER)) ) )
+ {
+ strcpy(OutputStrings[x], "\0");
+ }
+ else
+ {
+ /*Get the substring without tabs*/
+ replacedstr = substr(InputStrings[x], lengthInput_One, lengthInput_Two + 1 );
+ /*To add the substring into the output matrix*/
+ strcpy(OutputStrings[x], replacedstr);
+ }
+
+ if (replacedstr)
+ {
+ FREE(replacedstr);
+ replacedstr = NULL;
+ }
+ }
+ else
+ {
+ strcpy(OutputStrings[x], InputStrings[x]);
+ }
+ }
+}
+/*------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/stristr.c b/modules/string/src/c/stristr.c
new file mode 100755
index 000000000..3c2e797f3
--- /dev/null
+++ b/modules/string/src/c/stristr.c
@@ -0,0 +1,56 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) INRIA - Allan CORNET
+*
+* 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 <ctype.h>
+#include <string.h>
+#include "stristr.h"
+#include "stricmp.h"
+/*--------------------------------------------------------------------------*/
+char *stristr(const char *psz, const char *tofind)
+{
+ const char *ptr = psz;
+ const char *ptr2;
+
+ if (strlen(tofind) > 0)
+ {
+ while (1)
+ {
+ ptr = strchr(psz, toupper(*tofind));
+ ptr2 = strchr(psz, tolower(*tofind));
+
+ if (!ptr)
+ {
+ ptr = ptr2; /* was ptr2 = ptr. Big bug fixed 10/22/99 */
+ }
+
+ if (!ptr)
+ {
+ break;
+ }
+
+ if (ptr2 && (ptr2 < ptr))
+ {
+ ptr = ptr2;
+ }
+
+ if (!strnicmp(ptr, tofind, strlen(tofind)))
+ {
+ return (char *) ptr;
+ }
+
+ psz = ptr + 1;
+ }
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/strsplit.c b/modules/string/src/c/strsplit.c
new file mode 100755
index 000000000..e641078c0
--- /dev/null
+++ b/modules/string/src/c/strsplit.c
@@ -0,0 +1,106 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - DIGITEO - Allan CORNET
+*
+* 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 "strsplit.h"
+#include "MALLOC.h"
+#include "freeArrayOfString.h"
+/*----------------------------------------------------------------------------*/
+wchar_t **strsplit(wchar_t * wcstringToSplit, double *indices, int sizeIndices, strsplit_error *ierr)
+{
+ wchar_t **splitted = NULL;
+ *ierr = STRSPLIT_NO_ERROR;
+
+ if (wcstringToSplit)
+ {
+ int lengthToCopy = 0;
+ int lenString = (int)wcslen(wcstringToSplit);
+ int i = 0, j = 0;
+ wchar_t* wcStrDest = NULL;
+ wchar_t* wcStrSrc = NULL;
+
+ for (i = 0; i < sizeIndices; i++)
+ {
+ /* Check 2nd input matrix position */
+ if ( ((int)indices[i] <= 0) || ((int)indices[i] >= lenString) )
+ {
+ *ierr = STRSPLIT_INCORRECT_VALUE_ERROR;
+ return NULL;
+ }
+
+ /* check 2nd input order */
+ if (sizeIndices > 1)
+ {
+ if ( i < (sizeIndices - 1) )
+ {
+ if ((int)indices[i] > (int)indices[i + 1])
+ {
+ *ierr = STRSPLIT_INCORRECT_ORDER_ERROR;
+ return NULL;
+ }
+ }
+ }
+ }
+
+ splitted = (wchar_t**)MALLOC(sizeof(wchar_t*) * (sizeIndices + 1));
+ if (splitted == NULL)
+ {
+ *ierr = STRSPLIT_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+
+ for (i = 0; i < sizeIndices; i++)
+ {
+
+ if (i == 0)
+ {
+ lengthToCopy = (int)indices[i];
+ }
+ else
+ {
+ lengthToCopy = (int)indices[i] - (int)indices[i - 1];
+ }
+
+ splitted[i] = (wchar_t*)MALLOC(sizeof(wchar_t) * (lengthToCopy + 1));
+ wcStrDest = splitted[i];
+
+ if (splitted[i] == NULL)
+ {
+ freeArrayOfWideString(splitted, sizeIndices);
+ *ierr = STRSPLIT_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+ wcStrSrc = &wcstringToSplit[j];
+ memcpy(wcStrDest, wcStrSrc, lengthToCopy * sizeof(wchar_t));
+ wcStrDest[lengthToCopy] = 0;
+
+ j = (int)indices[i];
+ }
+
+ lengthToCopy = lenString - (int)indices[sizeIndices - 1];
+ splitted[sizeIndices] = (wchar_t*)MALLOC(sizeof(wchar_t) * (lengthToCopy + 1));
+ wcStrDest = splitted[sizeIndices];
+
+ if (splitted[sizeIndices] == NULL)
+ {
+ freeArrayOfWideString(splitted, sizeIndices + 1);
+ *ierr = STRSPLIT_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+
+ wcStrSrc = &wcstringToSplit[j];
+ memcpy(wcStrDest, wcStrSrc, lengthToCopy * sizeof(wchar_t));
+ wcStrDest[lengthToCopy] = 0;
+ }
+ return splitted;
+}
+/*----------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/strsplit.h b/modules/string/src/c/strsplit.h
new file mode 100755
index 000000000..20f5479f1
--- /dev/null
+++ b/modules/string/src/c/strsplit.h
@@ -0,0 +1,37 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2009 - DIGITEO - Allan CORNET
+*
+* 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
+*
+*/
+/*----------------------------------------------------------------------------*/
+#ifndef __STRSPLITFUNCTION_H__
+#define __STRSPLITFUNCTION_H__
+
+#include <wchar.h>
+
+typedef enum
+{
+ STRSPLIT_NO_ERROR = 0,
+ STRSPLIT_INCORRECT_VALUE_ERROR = 1,
+ STRSPLIT_INCORRECT_ORDER_ERROR = 2,
+ STRSPLIT_MEMORY_ALLOCATION_ERROR = 3
+} strsplit_error;
+
+/**
+* split a string into substrings
+* @param[in] string to split
+* @param[in] indices where it is splitted
+* @param[in] size of array indices
+* @param[out] error code
+* @return substrings
+*/
+wchar_t **strsplit(wchar_t * wcstringToSplit, double *indices, int sizeIndices, strsplit_error *ierr);
+
+#endif /* __STRSPLITFUNCTION_H__ */
+/*----------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/strsubst.c b/modules/string/src/c/strsubst.c
new file mode 100755
index 000000000..35c4e61a2
--- /dev/null
+++ b/modules/string/src/c/strsubst.c
@@ -0,0 +1,252 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ *
+ * 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 <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include "strsubst.h"
+#include "MALLOC.h"
+#include "pcre_private.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "charEncoding.h"
+/*--------------------------------------------------------------------------*/
+char **strsubst(char **strings_input, int strings_dim, char *string_to_search, char *replacement_string)
+{
+ char **replacedStrings = NULL;
+
+ if ( (strings_input) && (string_to_search) && (replacement_string) )
+ {
+ int i = 0;
+ replacedStrings = (char**)MALLOC(sizeof(char*) * strings_dim);
+ for (i = 0; i < strings_dim; i++)
+ {
+ char *str = strings_input[i];
+ replacedStrings[i] = strsub (str, string_to_search, replacement_string);
+ }
+ }
+ return replacedStrings;
+}
+/*--------------------------------------------------------------------------*/
+char **strsubst_reg(char **strings_input, int strings_dim, char *string_to_search, char *replacement_string, int *ierr)
+{
+ char **replacedStrings = NULL;
+
+ if ( (strings_input) && (string_to_search) && (replacement_string) )
+ {
+ int i = 0;
+ replacedStrings = (char**)MALLOC(sizeof(char*) * strings_dim);
+ for (i = 0; i < strings_dim; i++)
+ {
+ char *str = strings_input[i];
+ replacedStrings[i] = strsub_reg(str, string_to_search, replacement_string, ierr);
+ }
+ }
+ return replacedStrings;
+}
+/*-------------------------------------------------------------------------------------*/
+char *strsub(char* input_string, const char* string_to_search, const char* replacement_string)
+{
+ char *occurrence_str = NULL, *result_str = NULL;
+
+
+ char *replacedString = NULL;
+ int count = 0, len = 0;
+
+ if (input_string == NULL)
+ {
+ return NULL;
+ }
+
+ if (string_to_search == NULL || replacement_string == NULL)
+ {
+ return strdup(input_string);
+ }
+
+ occurrence_str = strstr (input_string, string_to_search);
+ if (occurrence_str == NULL)
+ {
+ return strdup(input_string);
+ }
+
+ if (strlen (replacement_string) > strlen (string_to_search))
+ {
+ count = 0;
+ len = (int)strlen (string_to_search);
+ if (len)
+ {
+ occurrence_str = input_string;
+ while (occurrence_str != NULL && *occurrence_str != '\0')
+ {
+ occurrence_str = strstr (occurrence_str, string_to_search);
+ if (occurrence_str != NULL)
+ {
+ occurrence_str += len;
+ count++;
+ }
+ }
+ }
+ len = count * ((int)strlen(replacement_string) - (int)strlen(string_to_search)) + (int)strlen(input_string);
+ }
+ else
+ {
+ len = (int)strlen(input_string);
+ }
+
+ replacedString = MALLOC (sizeof(char) * (len + 1));
+ if (replacedString == NULL)
+ {
+ return NULL;
+ }
+
+ occurrence_str = input_string;
+ result_str = replacedString;
+ len = (int)strlen (string_to_search);
+ while (*occurrence_str != '\0')
+ {
+ if (*occurrence_str == string_to_search[0] && strncmp (occurrence_str, string_to_search, len) == 0)
+ {
+ const char *N = NULL;
+ N = replacement_string;
+ while (*N != '\0')
+ {
+ *result_str++ = *N++;
+ }
+ occurrence_str += len;
+ }
+ else
+ {
+ *result_str++ = *occurrence_str++;
+ }
+ }
+ *result_str = '\0';
+
+ return replacedString;
+}/*-------------------------------------------------------------------------------------*/
+char *strsub_reg(char* input_string, const char* string_to_search, const char* replacement_string, int *ierr)
+{
+ pcre_error_code w = PCRE_FINISHED_OK;
+
+ int Output_Start = 0;
+ int Output_End = 0;
+
+ char *replacedString = NULL;
+ wchar_t *wcreplacedString = NULL;
+
+ wchar_t *wcreplacement_string = NULL;
+ wchar_t *wcinput_string = NULL;
+
+ int len = 0;
+
+ *ierr = (int)PCRE_FINISHED_OK;
+
+ if (input_string == NULL)
+ {
+ return NULL;
+ }
+
+ if (string_to_search == NULL || replacement_string == NULL)
+ {
+ return strdup(input_string);
+ }
+
+ w = pcre_private(input_string, (char*)string_to_search, &Output_Start, &Output_End, NULL, NULL);
+ if (w != PCRE_FINISHED_OK)
+ {
+ *ierr = (int)w;
+ return strdup(input_string);
+ }
+
+ wcreplacement_string = to_wide_string((char*)replacement_string);
+ wcinput_string = to_wide_string((char*)input_string);
+
+ if (wcreplacement_string == NULL)
+ {
+ FREE(wcinput_string);
+ *ierr = (int)NOT_ENOUGH_MEMORY_FOR_VECTOR;
+ return strdup(input_string);
+ }
+
+ len = (int)wcslen(wcreplacement_string) + (int)wcslen(wcinput_string);
+
+ wcreplacedString = (wchar_t*)MALLOC (sizeof(wchar_t) * (len + 1));
+ if (wcreplacedString == NULL)
+ {
+ FREE(replacement_string);
+ FREE(wcinput_string);
+ return NULL;
+ }
+
+ {
+ /* converts to wide characters */
+
+ wchar_t *wctail = NULL;
+
+ int wcOutput_Start = 0;
+ int wcOutput_End = 0;
+
+ char * strOutput_Start = strdup(input_string);
+ char * strOutput_End = strdup(input_string);
+
+ wchar_t *wcstrOutput_Start = NULL;
+ wchar_t *wcstrOutput_End = NULL;
+
+ /* calculates positions with wide characters */
+ strOutput_Start[Output_Start] = '\0';
+ strOutput_End[Output_End] = '\0';
+
+ wcstrOutput_Start = to_wide_string(strOutput_Start);
+ wcstrOutput_End = to_wide_string(strOutput_End);
+
+ FREE(strOutput_Start);
+ FREE(strOutput_End);
+
+ if (wcstrOutput_Start)
+ {
+ wcOutput_Start = (int)wcslen(wcstrOutput_Start);
+ FREE(wcstrOutput_Start);
+ }
+ else
+ {
+ wcOutput_Start = 0;
+ }
+
+ if (wcstrOutput_End)
+ {
+ wcOutput_End = (int)wcslen(wcstrOutput_End);
+ FREE(wcstrOutput_End);
+ }
+ else
+ {
+ wcOutput_End = 0;
+ }
+
+ wcsncpy(wcreplacedString, wcinput_string, wcOutput_Start);
+ wcreplacedString[wcOutput_Start] = L'\0';
+ wcscat(wcreplacedString, wcreplacement_string);
+ wctail = wcinput_string + wcOutput_End;
+ wcscat(wcreplacedString, wctail);
+ replacedString = wide_string_to_UTF8(wcreplacedString);
+
+ FREE(wcreplacedString);
+ }
+
+ FREE(wcinput_string);
+ FREE(wcreplacement_string);
+
+ return replacedString;
+}
+/*-------------------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/tokens.c b/modules/string/src/c/tokens.c
new file mode 100755
index 000000000..afb05bb2a
--- /dev/null
+++ b/modules/string/src/c/tokens.c
@@ -0,0 +1,93 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Cong WU
+ * Copyright (C) INRIA - 2008 - Allan CORNET
+ *
+ * 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 <stdio.h>
+#include "MALLOC.h"
+#include "tokens.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+#include "charEncoding.h"
+/*------------------------------------------------------------------------*/
+char** stringTokens(char *str, char **delim, int sizedelim, int *sizeOutputs)
+{
+ char **Outputs = NULL;
+ *sizeOutputs = 0;
+
+ if (str)
+ {
+ wchar_t *wcdelimiters = NULL;
+ wcdelimiters = (wchar_t*)MALLOC(sizeof(wchar_t) * (sizedelim + 1));
+
+ if (wcdelimiters)
+ {
+ int i = 0;
+ wchar_t * wcstr = to_wide_string(str);
+ wchar_t *wctoken = NULL;
+#ifndef _MSC_VER
+ wchar_t *state = NULL;
+#endif
+
+ for (i = 0; i < sizedelim; i++)
+ {
+ wchar_t * wcdelim = to_wide_string(delim[i]);
+ wcdelimiters[i] = wcdelim[0];
+ FREE(wcdelim);
+ wcdelim = NULL;
+ }
+ wcdelimiters[i] = L'\0';
+
+#ifndef _MSC_VER
+ wctoken = wcstok(wcstr, wcdelimiters, &state);
+#else
+ wctoken = wcstok(wcstr, wcdelimiters);
+#endif
+
+ while ( wctoken != NULL)
+ {
+ (*sizeOutputs)++;
+ if (Outputs == NULL)
+ {
+ Outputs = (char**)MALLOC(sizeof(char*) * (*sizeOutputs));
+ }
+ else
+ {
+ Outputs = (char**)REALLOC(Outputs, sizeof(char*) * (*sizeOutputs));
+ }
+ Outputs[*sizeOutputs - 1] = wide_string_to_UTF8(wctoken);
+#ifndef _MSC_VER
+ wctoken = wcstok(NULL, wcdelimiters, &state);
+#else
+ wctoken = wcstok(NULL, wcdelimiters);
+#endif
+ }
+
+ if (wcdelimiters)
+ {
+ FREE(wcdelimiters);
+ wcdelimiters = NULL;
+ }
+ if (wcstr)
+ {
+ FREE(wcstr);
+ wcstr = NULL;
+ }
+ }
+
+ }
+ return Outputs;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/tokens.h b/modules/string/src/c/tokens.h
new file mode 100755
index 000000000..6e553eaa1
--- /dev/null
+++ b/modules/string/src/c/tokens.h
@@ -0,0 +1,31 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Cong WU
+ * Copyright (C) INRIA - 2008 - Allan CORNET
+ *
+ * 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
+ *
+ */
+
+/*------------------------------------------------------------------------*/
+#ifndef __TOKENS_H__
+#define __TOKENS_H__
+
+/**
+* stringTokens function
+* @param[in] *str string where we search delimiters
+* @param[in] **delim delimiters to search
+* @param[in] sizedelim size of matrix delim
+* @param[out] sizeOutputs size of matrix of string returned
+* @return matrix of string tokens
+*/
+
+char** stringTokens(char *str, char **delim, int sizedelim, int *sizeOutputs);
+
+#endif /* __TOKENS_H__ */
+/*------------------------------------------------------------------------*/
diff --git a/modules/string/src/c/ucp.h b/modules/string/src/c/ucp.h
new file mode 100755
index 000000000..a678a78d5
--- /dev/null
+++ b/modules/string/src/c/ucp.h
@@ -0,0 +1,149 @@
+/*************************************************
+* Unicode Property Table handler *
+*************************************************/
+
+#ifndef _UCP_H
+#define _UCP_H
+
+/* This file contains definitions of the property values that are returned by
+the function _pcre_ucp_findprop(). New values that are added for new releases
+of Unicode should always be at the end of each enum, for backwards
+compatibility. */
+
+/* These are the general character categories. */
+
+enum
+{
+ ucp_C, /* Other */
+ ucp_L, /* Letter */
+ ucp_M, /* Mark */
+ ucp_N, /* Number */
+ ucp_P, /* Punctuation */
+ ucp_S, /* Symbol */
+ ucp_Z /* Separator */
+};
+
+/* These are the particular character types. */
+
+enum
+{
+ ucp_Cc, /* Control */
+ ucp_Cf, /* Format */
+ ucp_Cn, /* Unassigned */
+ ucp_Co, /* Private use */
+ ucp_Cs, /* Surrogate */
+ ucp_Ll, /* Lower case letter */
+ ucp_Lm, /* Modifier letter */
+ ucp_Lo, /* Other letter */
+ ucp_Lt, /* Title case letter */
+ ucp_Lu, /* Upper case letter */
+ ucp_Mc, /* Spacing mark */
+ ucp_Me, /* Enclosing mark */
+ ucp_Mn, /* Non-spacing mark */
+ ucp_Nd, /* Decimal number */
+ ucp_Nl, /* Letter number */
+ ucp_No, /* Other number */
+ ucp_Pc, /* Connector punctuation */
+ ucp_Pd, /* Dash punctuation */
+ ucp_Pe, /* Close punctuation */
+ ucp_Pf, /* Final punctuation */
+ ucp_Pi, /* Initial punctuation */
+ ucp_Po, /* Other punctuation */
+ ucp_Ps, /* Open punctuation */
+ ucp_Sc, /* Currency symbol */
+ ucp_Sk, /* Modifier symbol */
+ ucp_Sm, /* Mathematical symbol */
+ ucp_So, /* Other symbol */
+ ucp_Zl, /* Line separator */
+ ucp_Zp, /* Paragraph separator */
+ ucp_Zs /* Space separator */
+};
+
+/* These are the script identifications. */
+
+enum
+{
+ ucp_Arabic,
+ ucp_Armenian,
+ ucp_Bengali,
+ ucp_Bopomofo,
+ ucp_Braille,
+ ucp_Buginese,
+ ucp_Buhid,
+ ucp_Canadian_Aboriginal,
+ ucp_Cherokee,
+ ucp_Common,
+ ucp_Coptic,
+ ucp_Cypriot,
+ ucp_Cyrillic,
+ ucp_Deseret,
+ ucp_Devanagari,
+ ucp_Ethiopic,
+ ucp_Georgian,
+ ucp_Glagolitic,
+ ucp_Gothic,
+ ucp_Greek,
+ ucp_Gujarati,
+ ucp_Gurmukhi,
+ ucp_Han,
+ ucp_Hangul,
+ ucp_Hanunoo,
+ ucp_Hebrew,
+ ucp_Hiragana,
+ ucp_Inherited,
+ ucp_Kannada,
+ ucp_Katakana,
+ ucp_Kharoshthi,
+ ucp_Khmer,
+ ucp_Lao,
+ ucp_Latin,
+ ucp_Limbu,
+ ucp_Linear_B,
+ ucp_Malayalam,
+ ucp_Mongolian,
+ ucp_Myanmar,
+ ucp_New_Tai_Lue,
+ ucp_Ogham,
+ ucp_Old_Italic,
+ ucp_Old_Persian,
+ ucp_Oriya,
+ ucp_Osmanya,
+ ucp_Runic,
+ ucp_Shavian,
+ ucp_Sinhala,
+ ucp_Syloti_Nagri,
+ ucp_Syriac,
+ ucp_Tagalog,
+ ucp_Tagbanwa,
+ ucp_Tai_Le,
+ ucp_Tamil,
+ ucp_Telugu,
+ ucp_Thaana,
+ ucp_Thai,
+ ucp_Tibetan,
+ ucp_Tifinagh,
+ ucp_Ugaritic,
+ ucp_Yi,
+ /* New for Unicode 5.0: */
+ ucp_Balinese,
+ ucp_Cuneiform,
+ ucp_Nko,
+ ucp_Phags_Pa,
+ ucp_Phoenician,
+ /* New for Unicode 5.1: */
+ ucp_Carian,
+ ucp_Cham,
+ ucp_Kayah_Li,
+ ucp_Lepcha,
+ ucp_Lycian,
+ ucp_Lydian,
+ ucp_Ol_Chiki,
+ ucp_Rejang,
+ ucp_Saurashtra,
+ ucp_Sundanese,
+ ucp_Vai
+};
+
+#endif
+
+/* End of ucp.h */
diff --git a/modules/string/src/cpp/.deps/.dirstamp b/modules/string/src/cpp/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/string/src/cpp/.deps/.dirstamp
diff --git a/modules/string/src/cpp/.deps/libscistring_algo_la-sort_inter.Plo b/modules/string/src/cpp/.deps/libscistring_algo_la-sort_inter.Plo
new file mode 100755
index 000000000..2168525c4
--- /dev/null
+++ b/modules/string/src/cpp/.deps/libscistring_algo_la-sort_inter.Plo
@@ -0,0 +1,185 @@
+src/cpp/libscistring_algo_la-sort_inter.lo: src/cpp/sort_inter.cpp \
+ /usr/include/stdc-predef.h src/cpp/sort_inter.h \
+ /usr/include/c++/5/algorithm /usr/include/c++/5/utility \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.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/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stl_relops.h /usr/include/c++/5/bits/stl_pair.h \
+ /usr/include/c++/5/bits/move.h /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/stl_algo.h /usr/include/c++/5/cstdlib \
+ /usr/include/stdlib.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/xlocale.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/c++/5/bits/algorithmfwd.h \
+ /usr/include/c++/5/bits/stl_heap.h /usr/include/c++/5/bits/stl_tempbuf.h \
+ /usr/include/c++/5/bits/stl_construct.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h \
+ /usr/include/c++/5/bits/memoryfwd.h
+
+/usr/include/stdc-predef.h:
+
+src/cpp/sort_inter.h:
+
+/usr/include/c++/5/algorithm:
+
+/usr/include/c++/5/utility:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.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/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stl_relops.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/stl_algo.h:
+
+/usr/include/c++/5/cstdlib:
+
+/usr/include/stdlib.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/xlocale.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/c++/5/bits/algorithmfwd.h:
+
+/usr/include/c++/5/bits/stl_heap.h:
+
+/usr/include/c++/5/bits/stl_tempbuf.h:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
diff --git a/modules/string/src/cpp/.dirstamp b/modules/string/src/cpp/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/string/src/cpp/.dirstamp
diff --git a/modules/string/src/cpp/.libs/libscistring_algo_la-sort_inter.o b/modules/string/src/cpp/.libs/libscistring_algo_la-sort_inter.o
new file mode 100755
index 000000000..0f0caf0f7
--- /dev/null
+++ b/modules/string/src/cpp/.libs/libscistring_algo_la-sort_inter.o
Binary files differ
diff --git a/modules/string/src/cpp/libscistring_algo_la-sort_inter.lo b/modules/string/src/cpp/libscistring_algo_la-sort_inter.lo
new file mode 100755
index 000000000..878a65594
--- /dev/null
+++ b/modules/string/src/cpp/libscistring_algo_la-sort_inter.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscistring_algo_la-sort_inter.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/libscistring_algo_la-sort_inter.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/string/src/cpp/sort_inter.cpp b/modules/string/src/cpp/sort_inter.cpp
new file mode 100755
index 000000000..76fc9fd46
--- /dev/null
+++ b/modules/string/src/cpp/sort_inter.cpp
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
+ *
+ * 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
+ *
+ */
+
+extern "C"
+{
+#include "sort_inter.h"
+}
+
+#include <algorithm>
+
+void sort_inert(In* pBegin, In* pEnd, cmp_func func)
+{
+ std::sort(pBegin, pEnd, func);
+} \ No newline at end of file
diff --git a/modules/string/src/cpp/sort_inter.h b/modules/string/src/cpp/sort_inter.h
new file mode 100755
index 000000000..ea7c7dfcc
--- /dev/null
+++ b/modules/string/src/cpp/sort_inter.h
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
+ *
+ * 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
+ *
+ */
+
+typedef struct __In__
+{
+ int data;
+ int position;
+} In;
+
+
+typedef int (* cmp_func)(In left, In right);
+
+void sort_inert(In* pBegin, In* pEnd, cmp_func func);
diff --git a/modules/string/src/fortran/Core_f_Import.def b/modules/string/src/fortran/Core_f_Import.def
new file mode 100755
index 000000000..bdfa3d1df
--- /dev/null
+++ b/modules/string/src/fortran/Core_f_Import.def
@@ -0,0 +1,17 @@
+ LIBRARY core_f.dll
+
+
+EXPORTS
+;
+;core_f
+;
+funnam_
+ref2val_
+isany_
+indxgc_
+indxg_
+cvdm_
+cvwm_
+;
+
+
diff --git a/modules/string/src/fortran/core_Import.def b/modules/string/src/fortran/core_Import.def
new file mode 100755
index 000000000..5bf28f9aa
--- /dev/null
+++ b/modules/string/src/fortran/core_Import.def
@@ -0,0 +1,19 @@
+ LIBRARY core.dll
+
+
+EXPORTS
+;
+;core
+;
+errgst_
+iop_
+adre_
+recu_
+intersci_
+stack_
+vstk_
+com_
+cha1_
+mtlbc_
+cremat_
+namstr_
diff --git a/modules/string/src/fortran/elementary_functions_Import.def b/modules/string/src/fortran/elementary_functions_Import.def
new file mode 100755
index 000000000..03c39e988
--- /dev/null
+++ b/modules/string/src/fortran/elementary_functions_Import.def
@@ -0,0 +1,5 @@
+LIBRARY elementary_functions.dll
+
+
+EXPORTS
+unsfdcopy_ \ No newline at end of file
diff --git a/modules/string/src/fortran/elementary_functions_f_Import.def b/modules/string/src/fortran/elementary_functions_f_Import.def
new file mode 100755
index 000000000..9266a2f63
--- /dev/null
+++ b/modules/string/src/fortran/elementary_functions_f_Import.def
@@ -0,0 +1,5 @@
+LIBRARY elementary_functions_f.dll
+
+
+EXPORTS
+ivimp_ \ No newline at end of file
diff --git a/modules/string/src/fortran/linpack_f_Import.def b/modules/string/src/fortran/linpack_f_Import.def
new file mode 100755
index 000000000..12ee0776e
--- /dev/null
+++ b/modules/string/src/fortran/linpack_f_Import.def
@@ -0,0 +1,5 @@
+LIBRARY linpack_f.dll
+
+
+EXPORTS
+icopy_ \ No newline at end of file
diff --git a/modules/string/src/fortran/output_stream_Import.def b/modules/string/src/fortran/output_stream_Import.def
new file mode 100755
index 000000000..94f56b430
--- /dev/null
+++ b/modules/string/src/fortran/output_stream_Import.def
@@ -0,0 +1,5 @@
+LIBRARY output_stream.dll
+
+
+EXPORTS
+error_ \ No newline at end of file
diff --git a/modules/string/src/fortran/polynomials_f_Import.def b/modules/string/src/fortran/polynomials_f_Import.def
new file mode 100755
index 000000000..11c03b723
--- /dev/null
+++ b/modules/string/src/fortran/polynomials_f_Import.def
@@ -0,0 +1,9 @@
+LIBRARY polynomials_f.dll
+
+
+EXPORTS
+impcnc_
+impext_
+impins_
+imptra_
+mpinsp_
diff --git a/modules/string/src/fortran/string_Import.def b/modules/string/src/fortran/string_Import.def
new file mode 100755
index 000000000..bd09a235d
--- /dev/null
+++ b/modules/string/src/fortran/string_Import.def
@@ -0,0 +1,5 @@
+LIBRARY string.dll
+
+
+EXPORTS
+cvstr_ \ No newline at end of file
diff --git a/modules/string/src/fortran/string_f.rc b/modules/string/src/fortran/string_f.rc
new file mode 100755
index 000000000..4365584f3
--- /dev/null
+++ b/modules/string/src/fortran/string_f.rc
@@ -0,0 +1,96 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "string_f module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "string_f module"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "string_f.dll"
+ VALUE "ProductName", "string_f module"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/string/src/fortran/string_f.vfproj b/modules/string/src/fortran/string_f.vfproj
new file mode 100755
index 000000000..4ff736c60
--- /dev/null
+++ b/modules/string/src/fortran/string_f.vfproj
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject ProjectType="typeDynamicLibrary" ProjectCreator="Intel Fortran" Keyword="Dll" Version="11.0" ProjectIdGuid="{FAF6A7EB-8A36-4278-B34E-34EA89E55304}">
+ <Platforms>
+ <Platform Name="Win32"/>
+ <Platform Name="x64"/></Platforms>
+ <Configurations>
+ <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="string_f.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="core.lib string.lib elementary_functions.lib elementary_functions_f.lib output_stream.lib polynomials_f.lib linpack_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)string_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)string.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)polynomials_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)polynomials_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linpack_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)linpack_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="string_f.def" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="core.lib string.lib elementary_functions.lib elementary_functions_f.lib output_stream.lib polynomials_f.lib linpack_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)string_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)string.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)polynomials_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)polynomials_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linpack_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)linpack_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="string_f.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="core.lib string.lib elementary_functions.lib elementary_functions_f.lib output_stream.lib polynomials_f.lib linpack_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)string_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)string.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)polynomials_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)polynomials_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linpack_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)linpack_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="string_f.def" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="core.lib string.lib elementary_functions.lib elementary_functions_f.lib output_stream.lib polynomials_f.lib linpack_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)string_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)string.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)polynomials_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)polynomials_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linpack_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)linpack_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
+ <Files>
+ <Filter Name="Header Files" Filter="fi;fd"/>
+ <Filter Name="Libraries Dependencies">
+ <File RelativePath=".\Core_f_Import.def"/>
+ <File RelativePath=".\core_import.def"/>
+ <File RelativePath=".\elementary_functions_f_Import.def"/>
+ <File RelativePath=".\elementary_functions_Import.def"/>
+ <File RelativePath=".\linpack_f_Import.def"/>
+ <File RelativePath=".\output_stream_Import.def"/>
+ <File RelativePath=".\polynomials_f_Import.def"/>
+ <File RelativePath=".\string_Import.def"/></Filter>
+ <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File RelativePath=".\string_f.rc"/></Filter>
+ <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
+ <File RelativePath="..\..\sci_gateway\fortran\sci_f_string.f"/>
+ <File RelativePath="..\..\sci_gateway\fortran\strops.f"/></Filter>
+ <File RelativePath="..\..\Makefile.am"/>
+ <File RelativePath="..\..\sci_gateway\string_gateway.xml"/></Files>
+ <Globals/></VisualStudioProject>
diff --git a/modules/string/src/fortran/string_f2c.vcxproj b/modules/string/src/fortran/string_f2c.vcxproj
new file mode 100755
index 000000000..b0a3d7e11
--- /dev/null
+++ b/modules/string/src/fortran/string_f2c.vcxproj
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>string_f</ProjectName>
+ <ProjectGuid>{FAF6A7EB-8A36-4278-B34E-34EA89E55304}</ProjectGuid>
+ <RootNamespace>string_f2c</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)polynomials_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)polynomials_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STRING_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;string.lib;elementary_functions.lib;elementary_functions_f.lib;output_stream.lib;polynomials_f.lib;linpack_f.lib;core_f.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>string_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)polynomials_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)polynomials_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;STRING_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;string.lib;elementary_functions.lib;elementary_functions_f.lib;output_stream.lib;polynomials_f.lib;linpack_f.lib;core_f.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>string_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)polynomials_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)polynomials_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STRING_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;string.lib;elementary_functions.lib;elementary_functions_f.lib;output_stream.lib;polynomials_f.lib;linpack_f.lib;core_f.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>string_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)string_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)string.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linpack_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linpack_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)polynomials_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)polynomials_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;STRING_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;string.lib;elementary_functions.lib;elementary_functions_f.lib;output_stream.lib;polynomials_f.lib;linpack_f.lib;core_f.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>string_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\sci_gateway\fortran\sci_f_string.c" />
+ <ClCompile Include="..\..\sci_gateway\fortran\strops.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\..\sci_gateway\fortran\sci_f_string.f" />
+ <f2c_rule Include="..\..\sci_gateway\fortran\strops.f" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\Makefile.am" />
+ <None Include="..\..\sci_gateway\string_gateway.xml" />
+ <None Include="Core_f_Import.def" />
+ <None Include="elementary_functions_f_Import.def" />
+ <None Include="elementary_functions_Import.def" />
+ <None Include="core_import.def" />
+ <None Include="linpack_f_Import.def" />
+ <None Include="output_stream_Import.def" />
+ <None Include="polynomials_f_Import.def" />
+ <None Include="string_Import.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.targets" />
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/string/src/fortran/string_f2c.vcxproj.filters b/modules/string/src/fortran/string_f2c.vcxproj.filters
new file mode 100755
index 000000000..93f637f3d
--- /dev/null
+++ b/modules/string/src/fortran/string_f2c.vcxproj.filters
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ <Filter Include="Fortran files">
+ <UniqueIdentifier>{c7582236-a0f9-4bad-acbd-2e406f96cf1f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{831ff52b-294b-4941-9c77-84d983d323d3}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\sci_gateway\fortran\strops.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\fortran\sci_f_string.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="..\..\sci_gateway\fortran\strops.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="..\..\sci_gateway\fortran\sci_f_string.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\Makefile.am" />
+ <None Include="..\..\sci_gateway\string_gateway.xml" />
+ <None Include="elementary_functions_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="output_stream_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="string_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="elementary_functions_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="linpack_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="polynomials_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="Core_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ </ItemGroup>
+</Project> \ No newline at end of file