Add a code coverage tool 92/17392/4
Calixte DENIZET [Sun, 25 Oct 2015 19:00:40 +0000 (20:00 +0100)]
Change-Id: I1fbbef61b54db27deae6f70748ff492bdf463659

88 files changed:
scilab/Scilab.sln
scilab/configure
scilab/configure.ac
scilab/etc/modules.xml.in
scilab/etc/modules.xml.vc
scilab/modules/Makefile.am
scilab/modules/Makefile.in
scilab/modules/ast/Makefile.am
scilab/modules/ast/Makefile.in
scilab/modules/ast/ast.vcxproj
scilab/modules/ast/ast.vcxproj.filters
scilab/modules/ast/coverage_Import.def [new file with mode: 0644]
scilab/modules/ast/includes/ast/runvisitor.hxx
scilab/modules/ast/includes/exps/ast.hxx
scilab/modules/ast/includes/exps/functiondec.hxx
scilab/modules/ast/includes/exps/location.hxx
scilab/modules/ast/includes/symbol/context.hxx
scilab/modules/ast/includes/symbol/variables.hxx
scilab/modules/ast/includes/system_env/coverage_instance.hxx [new file with mode: 0644]
scilab/modules/ast/includes/types/macro.hxx
scilab/modules/ast/includes/types/macrofile.hxx
scilab/modules/ast/src/cpp/ast/run_AssignExp.hpp
scilab/modules/ast/src/cpp/ast/run_CallExp.hpp
scilab/modules/ast/src/cpp/ast/run_MatrixExp.hpp
scilab/modules/ast/src/cpp/ast/run_OpExp.hpp
scilab/modules/ast/src/cpp/ast/runvisitor.cpp
scilab/modules/ast/src/cpp/symbol/context.cpp
scilab/modules/ast/src/cpp/symbol/variables.cpp
scilab/modules/ast/src/cpp/system_env/coverage_instance.cpp [new file with mode: 0644]
scilab/modules/core/Makefile.am
scilab/modules/core/Makefile.in
scilab/modules/core/includes/core_gw.hxx
scilab/modules/core/includes/gw_core.h
scilab/modules/core/sci_gateway/c/sci_type.c [deleted file]
scilab/modules/core/sci_gateway/cpp/core_gw.vcxproj
scilab/modules/core/sci_gateway/cpp/core_gw.vcxproj.filters
scilab/modules/core/sci_gateway/cpp/sci_type.cpp [new file with mode: 0644]
scilab/modules/coverage/Makefile.am [new file with mode: 0644]
scilab/modules/coverage/Makefile.in [new file with mode: 0644]
scilab/modules/coverage/coverage.iss [new file with mode: 0644]
scilab/modules/coverage/coverage.rc [new file with mode: 0644]
scilab/modules/coverage/coverage.vcxproj [new file with mode: 0644]
scilab/modules/coverage/coverage.vcxproj.filters [new file with mode: 0644]
scilab/modules/coverage/data/favicon.ico [new file with mode: 0644]
scilab/modules/coverage/data/mod_style.css [new file with mode: 0644]
scilab/modules/coverage/data/module.js [new file with mode: 0644]
scilab/modules/coverage/data/scilab_code.css [new file with mode: 0644]
scilab/modules/coverage/data/src_style.css [new file with mode: 0644]
scilab/modules/coverage/etc/coverage.quit [new file with mode: 0644]
scilab/modules/coverage/etc/coverage.start [new file with mode: 0644]
scilab/modules/coverage/includes/CodePrinter.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CodePrinterVisitor.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/Counter.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CovHTMLCodePrinter.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CoverAction.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CoverMacroInfo.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CoverModule.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/CoverModule_interface.h [new file with mode: 0644]
scilab/modules/coverage/includes/CoverResult.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/InstrumentVisitor.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/MacroLoc.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/URLEncoder.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/cover_tools.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/coverage_gw.hxx [new file with mode: 0644]
scilab/modules/coverage/includes/dynlib_coverage.h [new file with mode: 0644]
scilab/modules/coverage/macros/buildmacros.bat [new file with mode: 0644]
scilab/modules/coverage/macros/buildmacros.sce [new file with mode: 0644]
scilab/modules/coverage/macros/cleanmacros.bat [new file with mode: 0644]
scilab/modules/coverage/sci_gateway/coverage_gateway.xml [new file with mode: 0644]
scilab/modules/coverage/sci_gateway/cpp/sci_covMerge.cpp [new file with mode: 0644]
scilab/modules/coverage/sci_gateway/cpp/sci_covStart.cpp [new file with mode: 0644]
scilab/modules/coverage/sci_gateway/cpp/sci_covStop.cpp [new file with mode: 0644]
scilab/modules/coverage/sci_gateway/cpp/sci_covWrite.cpp [new file with mode: 0644]
scilab/modules/coverage/src/c/DllmainCoverage.c [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CodePrinterVisitor.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CovHTMLCodePrinter.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CoverMacroInfo.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CoverModule.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CoverModule_interface.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/CoverResult.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/InstrumentVisitor.cpp [new file with mode: 0644]
scilab/modules/coverage/src/cpp/URLEncoder.cpp [new file with mode: 0644]
scilab/modules/elementary_functions/macros/isempty.sci
scilab/modules/functions_manager/includes/dynamic_modules.hxx
scilab/modules/functions_manager/includes/module_declaration.hxx
scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp
scilab/modules/functions_manager/src/cpp/funcmanager.cpp
scilab/modules/javasci/Makefile.in

index 872c316..88aeb4b 100644 (file)
@@ -523,6 +523,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpi", "modules\mpi\mpi.vcxp
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slint", "modules\slint\slint.vcxproj", "{C4A6EABA-B46E-421A-A8E3-2ACA7F27DD82}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "coverage", "modules\coverage\coverage.vcxproj", "{B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Win32 = Debug|Win32
@@ -1715,6 +1717,14 @@ Global
                {C4A6EABA-B46E-421A-A8E3-2ACA7F27DD82}.Release|Win32.Build.0 = Release|Win32
                {C4A6EABA-B46E-421A-A8E3-2ACA7F27DD82}.Release|x64.ActiveCfg = Release|x64
                {C4A6EABA-B46E-421A-A8E3-2ACA7F27DD82}.Release|x64.Build.0 = Release|x64
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Debug|Win32.ActiveCfg = Debug|Win32
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Debug|Win32.Build.0 = Debug|Win32
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Debug|x64.ActiveCfg = Debug|x64
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Debug|x64.Build.0 = Debug|x64
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Release|Win32.ActiveCfg = Release|Win32
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Release|Win32.Build.0 = Release|Win32
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Release|x64.ActiveCfg = Release|x64
+               {B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}.Release|x64.Build.0 = Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index 0040e82..5ce1a71 100755 (executable)
@@ -4397,7 +4397,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -4443,7 +4443,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -4467,7 +4467,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -4512,7 +4512,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -4536,7 +4536,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -43875,7 +43875,7 @@ SCI_LDFLAGS=$(echo                      $LARGEFILE_LDFLAGS  $CODECOVERAGE_LDFLAG
 
 
 
-ac_config_files="$ac_config_files contrib/Makefile desktop/images/icons/Makefile desktop/Makefile modules/threads/Makefile modules/ast/Makefile modules/functions_manager/Makefile modules/helptools/Makefile modules/data_structures/Makefile modules/differential_equations/Makefile modules/optimization/Makefile modules/elementary_functions/Makefile modules/special_functions/Makefile modules/io/Makefile modules/completion/Makefile modules/history_manager/Makefile modules/jvm/Makefile modules/commons/Makefile modules/sound/Makefile modules/statistics/Makefile modules/mexlib/Makefile modules/sparse/Makefile modules/linear_algebra/Makefile modules/polynomials/Makefile modules/signal_processing/Makefile modules/arnoldi/Makefile modules/interpolation/Makefile modules/localization/Makefile modules/cacsd/Makefile modules/boolean/Makefile modules/integer/Makefile modules/fileio/Makefile modules/spreadsheet/Makefile modules/string/Makefile modules/time/Makefile modules/graphics/Makefile modules/graphic_export/Makefile modules/graphic_objects/Makefile modules/renderer/Makefile modules/action_binding/Makefile modules/gui/Makefile modules/mpi/Makefile modules/randlib/Makefile modules/tclsci/Makefile modules/windows_tools/Makefile modules/core/Makefile modules/prebuildjava/Makefile modules/api_scilab/Makefile modules/call_scilab/Makefile modules/types/Makefile modules/hdf5/Makefile modules/fftw/Makefile modules/umfpack/Makefile modules/scicos/Makefile modules/scicos_blocks/Makefile modules/functions/Makefile modules/dynamic_link/Makefile modules/overloading/Makefile modules/javasci/Makefile modules/m2sci/Makefile modules/compatibility_functions/Makefile modules/development_tools/Makefile modules/output_stream/Makefile modules/console/Makefile modules/demo_tools/Makefile modules/genetic_algorithms/Makefile modules/simulated_annealing/Makefile modules/parameters/Makefile modules/matio/Makefile modules/atoms/Makefile modules/xcos/Makefile modules/scinotes/Makefile modules/ui_data/Makefile modules/graph/Makefile modules/parallel/Makefile modules/modules_manager/Makefile modules/history_browser/Makefile modules/preferences/Makefile modules/xml/Makefile modules/external_objects/Makefile modules/external_objects_java/Makefile modules/slint/Makefile modules/Makefile Makefile scilab.pc etc/modules.xml etc/classpath.xml etc/Info.plist etc/logging.properties scilab.properties scilab-lib.properties scilab-lib-doc.properties modules/helptools/etc/SciDocConf.xml modules/core/includes/version.h modules/atoms/etc/repositories modules/atoms/tests/unit_tests/repositories.orig"
+ac_config_files="$ac_config_files contrib/Makefile desktop/images/icons/Makefile desktop/Makefile modules/threads/Makefile modules/ast/Makefile modules/functions_manager/Makefile modules/helptools/Makefile modules/data_structures/Makefile modules/differential_equations/Makefile modules/optimization/Makefile modules/elementary_functions/Makefile modules/special_functions/Makefile modules/io/Makefile modules/completion/Makefile modules/history_manager/Makefile modules/jvm/Makefile modules/commons/Makefile modules/sound/Makefile modules/statistics/Makefile modules/mexlib/Makefile modules/sparse/Makefile modules/linear_algebra/Makefile modules/polynomials/Makefile modules/signal_processing/Makefile modules/arnoldi/Makefile modules/interpolation/Makefile modules/localization/Makefile modules/cacsd/Makefile modules/boolean/Makefile modules/integer/Makefile modules/fileio/Makefile modules/spreadsheet/Makefile modules/string/Makefile modules/time/Makefile modules/graphics/Makefile modules/graphic_export/Makefile modules/graphic_objects/Makefile modules/renderer/Makefile modules/action_binding/Makefile modules/gui/Makefile modules/mpi/Makefile modules/randlib/Makefile modules/tclsci/Makefile modules/windows_tools/Makefile modules/core/Makefile modules/prebuildjava/Makefile modules/api_scilab/Makefile modules/call_scilab/Makefile modules/types/Makefile modules/hdf5/Makefile modules/fftw/Makefile modules/umfpack/Makefile modules/scicos/Makefile modules/scicos_blocks/Makefile modules/functions/Makefile modules/dynamic_link/Makefile modules/overloading/Makefile modules/javasci/Makefile modules/m2sci/Makefile modules/compatibility_functions/Makefile modules/development_tools/Makefile modules/output_stream/Makefile modules/console/Makefile modules/demo_tools/Makefile modules/genetic_algorithms/Makefile modules/simulated_annealing/Makefile modules/parameters/Makefile modules/matio/Makefile modules/atoms/Makefile modules/xcos/Makefile modules/scinotes/Makefile modules/ui_data/Makefile modules/graph/Makefile modules/parallel/Makefile modules/modules_manager/Makefile modules/history_browser/Makefile modules/preferences/Makefile modules/xml/Makefile modules/external_objects/Makefile modules/external_objects_java/Makefile modules/slint/Makefile modules/coverage/Makefile modules/Makefile Makefile scilab.pc etc/modules.xml etc/classpath.xml etc/Info.plist etc/logging.properties scilab.properties scilab-lib.properties scilab-lib-doc.properties modules/helptools/etc/SciDocConf.xml modules/core/includes/version.h modules/atoms/etc/repositories modules/atoms/tests/unit_tests/repositories.orig"
 
 
 # Detection of the module for the future version of Scilab 6
@@ -45307,6 +45307,7 @@ do
     "modules/external_objects/Makefile") CONFIG_FILES="$CONFIG_FILES modules/external_objects/Makefile" ;;
     "modules/external_objects_java/Makefile") CONFIG_FILES="$CONFIG_FILES modules/external_objects_java/Makefile" ;;
     "modules/slint/Makefile") CONFIG_FILES="$CONFIG_FILES modules/slint/Makefile" ;;
+    "modules/coverage/Makefile") CONFIG_FILES="$CONFIG_FILES modules/coverage/Makefile" ;;
     "modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "scilab.pc") CONFIG_FILES="$CONFIG_FILES scilab.pc" ;;
index d30d953..d3dd9a6 100644 (file)
@@ -2059,6 +2059,7 @@ modules/xml/Makefile
 modules/external_objects/Makefile
 modules/external_objects_java/Makefile
 modules/slint/Makefile
+modules/coverage/Makefile
 modules/Makefile
 Makefile
 scilab.pc
index b6d43c5..8802b36 100644 (file)
@@ -90,4 +90,5 @@
 <module name="ast" activate="yes"/>
 <module name="external_objects_java" activate="@JAVA_ENABLE@"/>
 <module name="slint" activate="yes"/>
+<module name="coverage" activate="yes"/>
 </modules>
index 6cac801..e17284e 100644 (file)
@@ -88,4 +88,5 @@
     <module name="external_objects_java" activate="yes"/>
     <module name="mpi" activate="no"/>
     <module name="slint" activate="yes"/>
+    <module name="coverage" activate="yes"/>
 </modules>
index cd8f929..46825b0 100644 (file)
@@ -92,7 +92,8 @@ preferences \
 xml \
 types \
 external_objects \
-slint
+slint \
+coverage
 
 if GUI
 SUBDIRS += external_objects_java
@@ -195,7 +196,8 @@ ENGINE_LIBS =       $(top_builddir)/modules/fileio/libscifileio.la \
        $(top_builddir)/modules/types/libscitypes.la \
        $(top_builddir)/modules/xml/libscixml.la \
        $(top_builddir)/modules/external_objects/libsciexternal_objects.la \
-       $(top_builddir)/modules/slint/libscislint.la
+       $(top_builddir)/modules/slint/libscislint.la \
+       $(top_builddir)/modules/coverage/libscicoverage.la
 
 # These libraries are loaded dynamically from Scilab.
 ENGINE_LIBS_DYNAMIC_LOAD = \
index b50f309..a1fd44e 100644 (file)
@@ -287,7 +287,7 @@ DIST_SUBDIRS = prebuildjava threads output_stream arnoldi \
        compatibility_functions helptools umfpack demo_tools \
        genetic_algorithms simulated_annealing matio atoms graph ast \
        scinotes parallel modules_manager ui_data history_browser \
-       preferences xml types external_objects slint \
+       preferences xml types external_objects slint coverage \
        external_objects_java scicos_blocks scicos xcos mpi . javasci
 am__DIST_COMMON = $(srcdir)/Makefile.in \
        $(top_srcdir)/config/mkinstalldirs
@@ -619,7 +619,7 @@ SUBDIRS = prebuildjava threads output_stream arnoldi \
        genetic_algorithms simulated_annealing parameters matio atoms \
        hdf5 graph ast scinotes parallel modules_manager ui_data \
        history_browser preferences xml types external_objects slint \
-       $(am__append_1) $(am__append_2) $(am__append_3) \
+       coverage $(am__append_1) $(am__append_2) $(am__append_3) \
        $(am__append_4) . $(am__append_5)
 
 #### Basic files ####
@@ -697,7 +697,9 @@ ENGINE_LIBS = $(top_builddir)/modules/fileio/libscifileio.la \
        $(top_builddir)/modules/types/libscitypes.la \
        $(top_builddir)/modules/xml/libscixml.la \
        $(top_builddir)/modules/external_objects/libsciexternal_objects.la \
-       $(top_builddir)/modules/slint/libscislint.la $(am__append_6)
+       $(top_builddir)/modules/slint/libscislint.la \
+       $(top_builddir)/modules/coverage/libscicoverage.la \
+       $(am__append_6)
 
 # These libraries are loaded dynamically from Scilab.
 ENGINE_LIBS_DYNAMIC_LOAD = \
index 81da5ba..19fd1e3 100644 (file)
@@ -74,6 +74,7 @@ src/cpp/system_env/setenvvar.cpp \
 src/cpp/system_env/threadmanagement.cpp \
 src/cpp/system_env/numericconstants.cpp \
 src/cpp/system_env/numericconstants_interface.cpp \
+src/cpp/system_env/coverage_instance.cpp \
 src/cpp/types/addfunction.cpp \
 src/cpp/types/internal.cpp \
 src/cpp/types/arrayof.cpp \
@@ -273,6 +274,7 @@ libsciast_la_CPPFLAGS = \
        -I$(top_srcdir)/modules/localization/includes \
        -I$(top_srcdir)/modules/io/includes \
        -I$(top_srcdir)/modules/fileio/includes \
+       -I$(top_srcdir)/modules/coverage/includes \
        $(EIGEN_CPPFLAGS) \
        $(AM_CPPFLAGS)
 
index f1a73c5..0d158a8 100644 (file)
@@ -224,6 +224,7 @@ am__libsciast_la_SOURCES_DIST = src/c/operations/doublecomplex.c \
        src/cpp/system_env/threadmanagement.cpp \
        src/cpp/system_env/numericconstants.cpp \
        src/cpp/system_env/numericconstants_interface.cpp \
+       src/cpp/system_env/coverage_instance.cpp \
        src/cpp/types/addfunction.cpp src/cpp/types/internal.cpp \
        src/cpp/types/arrayof.cpp src/cpp/types/bool.cpp \
        src/cpp/types/callable.cpp src/cpp/types/cell.cpp \
@@ -427,6 +428,7 @@ am_libsciast_la_OBJECTS =  \
        src/cpp/system_env/libsciast_la-threadmanagement.lo \
        src/cpp/system_env/libsciast_la-numericconstants.lo \
        src/cpp/system_env/libsciast_la-numericconstants_interface.lo \
+       src/cpp/system_env/libsciast_la-coverage_instance.lo \
        src/cpp/types/libsciast_la-addfunction.lo \
        src/cpp/types/libsciast_la-internal.lo \
        src/cpp/types/libsciast_la-arrayof.lo \
@@ -1030,6 +1032,7 @@ libsciast_la_SOURCES = src/c/operations/doublecomplex.c \
        src/cpp/system_env/threadmanagement.cpp \
        src/cpp/system_env/numericconstants.cpp \
        src/cpp/system_env/numericconstants_interface.cpp \
+       src/cpp/system_env/coverage_instance.cpp \
        src/cpp/types/addfunction.cpp src/cpp/types/internal.cpp \
        src/cpp/types/arrayof.cpp src/cpp/types/bool.cpp \
        src/cpp/types/callable.cpp src/cpp/types/cell.cpp \
@@ -1189,6 +1192,7 @@ libsciast_la_CPPFLAGS = \
        -I$(top_srcdir)/modules/localization/includes \
        -I$(top_srcdir)/modules/io/includes \
        -I$(top_srcdir)/modules/fileio/includes \
+       -I$(top_srcdir)/modules/coverage/includes \
        $(EIGEN_CPPFLAGS) \
        $(AM_CPPFLAGS)
 
@@ -1773,6 +1777,9 @@ src/cpp/system_env/libsciast_la-numericconstants.lo:  \
 src/cpp/system_env/libsciast_la-numericconstants_interface.lo:  \
        src/cpp/system_env/$(am__dirstamp) \
        src/cpp/system_env/$(DEPDIR)/$(am__dirstamp)
+src/cpp/system_env/libsciast_la-coverage_instance.lo:  \
+       src/cpp/system_env/$(am__dirstamp) \
+       src/cpp/system_env/$(DEPDIR)/$(am__dirstamp)
 src/cpp/types/$(am__dirstamp):
        @$(MKDIR_P) src/cpp/types
        @: > src/cpp/types/$(am__dirstamp)
@@ -2495,6 +2502,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-configvariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-configvariable_interface.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-context_get.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-coverage_instance.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-dynamic_module.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-home.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/system_env/$(DEPDIR)/libsciast_la-lasterror.Plo@am__quote@
@@ -3010,6 +3018,13 @@ src/cpp/system_env/libsciast_la-numericconstants_interface.lo: src/cpp/system_en
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/system_env/libsciast_la-numericconstants_interface.lo `test -f 'src/cpp/system_env/numericconstants_interface.cpp' || echo '$(srcdir)/'`src/cpp/system_env/numericconstants_interface.cpp
 
+src/cpp/system_env/libsciast_la-coverage_instance.lo: src/cpp/system_env/coverage_instance.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/system_env/libsciast_la-coverage_instance.lo -MD -MP -MF src/cpp/system_env/$(DEPDIR)/libsciast_la-coverage_instance.Tpo -c -o src/cpp/system_env/libsciast_la-coverage_instance.lo `test -f 'src/cpp/system_env/coverage_instance.cpp' || echo '$(srcdir)/'`src/cpp/system_env/coverage_instance.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/system_env/$(DEPDIR)/libsciast_la-coverage_instance.Tpo src/cpp/system_env/$(DEPDIR)/libsciast_la-coverage_instance.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/system_env/coverage_instance.cpp' object='src/cpp/system_env/libsciast_la-coverage_instance.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/system_env/libsciast_la-coverage_instance.lo `test -f 'src/cpp/system_env/coverage_instance.cpp' || echo '$(srcdir)/'`src/cpp/system_env/coverage_instance.cpp
+
 src/cpp/types/libsciast_la-addfunction.lo: src/cpp/types/addfunction.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/types/libsciast_la-addfunction.lo -MD -MP -MF src/cpp/types/$(DEPDIR)/libsciast_la-addfunction.Tpo -c -o src/cpp/types/libsciast_la-addfunction.lo `test -f 'src/cpp/types/addfunction.cpp' || echo '$(srcdir)/'`src/cpp/types/addfunction.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/types/$(DEPDIR)/libsciast_la-addfunction.Tpo src/cpp/types/$(DEPDIR)/libsciast_la-addfunction.Plo
index 8bf84ff..a4e7c08 100644 (file)
@@ -96,7 +96,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../coverage/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ImportLibrary>../../bin/$(ProjectName).lib</ImportLibrary>
-      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;coverage.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
     </Link>
     <PreLinkEvent>
@@ -125,6 +125,7 @@ lib /DEF:"$(ProjectDir)console_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfor
 lib /DEF:"$(ProjectDir)dynamic_link_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)dynamic_link.lib" 1&gt;NUL 2&gt;NUL
 lib /DEF:"$(ProjectDir)fileio_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)fileio.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)coverage_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)coverage.lib" 1&gt;NUL 2&gt;NUL
 </Command>
     </PreLinkEvent>
   </ItemDefinitionGroup>
@@ -134,7 +135,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../coverage/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -148,7 +149,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
       <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ImportLibrary>../../bin/$(ProjectName).lib</ImportLibrary>
-      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;coverage.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
     </Link>
     <PreLinkEvent>
@@ -163,6 +164,7 @@ lib /DEF:"$(ProjectDir)console_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfor
 lib /DEF:"$(ProjectDir)dynamic_link_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)dynamic_link.lib" 1&gt;NUL 2&gt;NUL
 lib /DEF:"$(ProjectDir)fileio_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)fileio.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)coverage_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)coverage.lib" 1&gt;NUL 2&gt;NUL
 </Command>
     </PreLinkEvent>
   </ItemDefinitionGroup>
@@ -170,7 +172,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../coverage/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -183,7 +185,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <Link>
       <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
       <ImportLibrary>../../bin/$(ProjectName).lib</ImportLibrary>
-      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;coverage.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
     </Link>
     <PreLinkEvent>
@@ -198,6 +200,7 @@ lib /DEF:"$(ProjectDir)console_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfor
 lib /DEF:"$(ProjectDir)dynamic_link_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)dynamic_link.lib" 1&gt;NUL 2&gt;NUL
 lib /DEF:"$(ProjectDir)fileio_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)fileio.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)coverage_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)coverage.lib" 1&gt;NUL 2&gt;NUL
 </Command>
     </PreLinkEvent>
   </ItemDefinitionGroup>
@@ -208,7 +211,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../coverage/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -221,7 +224,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <Link>
       <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
       <ImportLibrary>../../bin/$(ProjectName).lib</ImportLibrary>
-      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>string.lib;fileio.lib;dynamic_link.lib;sciconsole.lib;output_stream.lib;core.lib;io.lib;elementary_functions_f.lib;elementary_functions.lib;polynomials_f.lib;linear_algebra_f.lib;coverage.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
     </Link>
     <PreLinkEvent>
@@ -236,6 +239,7 @@ lib /DEF:"$(ProjectDir)console_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfor
 lib /DEF:"$(ProjectDir)dynamic_link_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)dynamic_link.lib" 1&gt;NUL 2&gt;NUL
 lib /DEF:"$(ProjectDir)fileio_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)fileio.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)coverage_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)coverage.lib" 1&gt;NUL 2&gt;NUL
 </Command>
     </PreLinkEvent>
   </ItemDefinitionGroup>
@@ -247,6 +251,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
   <ItemGroup>
     <None Include="console_Import.def" />
     <None Include="core_Import.def" />
+    <None Include="coverage_Import.def" />
     <None Include="dynamic_link_Import.def" />
     <None Include="elementary_functions_f_Import.def" />
     <None Include="elementary_functions_Import.def" />
@@ -441,6 +446,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <ClInclude Include="includes\system_env\configvariable.hxx" />
     <ClInclude Include="includes\system_env\configvariable_interface.h" />
     <ClInclude Include="includes\system_env\context_get.h" />
+    <ClInclude Include="includes\system_env\coverage_instance.hxx" />
     <ClInclude Include="includes\system_env\dynamic_module.h" />
     <ClInclude Include="includes\system_env\home.h" />
     <ClInclude Include="includes\system_env\lasterror.h" />
@@ -679,6 +685,7 @@ lib /DEF:"$(ProjectDir)string_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform
     <ClCompile Include="src\cpp\system_env\configvariable.cpp" />
     <ClCompile Include="src\cpp\system_env\configvariable_interface.cpp" />
     <ClCompile Include="src\cpp\system_env\context_get.cpp" />
+    <ClCompile Include="src\cpp\system_env\coverage_instance.cpp" />
     <ClCompile Include="src\cpp\system_env\dynamic_module.cpp" />
     <ClCompile Include="src\cpp\system_env\home.cpp" />
     <ClCompile Include="src\cpp\system_env\lasterror.cpp" />
index 421f664..4e672f0 100644 (file)
     <None Include="string_Import.def">
       <Filter>Libraries Dependencies</Filter>
     </None>
+    <None Include="coverage_Import.def">
+      <Filter>Libraries Dependencies</Filter>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="includes\exps\all.hxx">
     <ClInclude Include="includes\analysis\DollarInfo.hxx">
       <Filter>Header Files\analysis</Filter>
     </ClInclude>
+    <ClInclude Include="includes\system_env\coverage_instance.hxx">
+      <Filter>Header Files\system_env</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="src\cpp\ast\expHistory.cpp">
     <ClCompile Include="src\cpp\ast\prettyprintvisitor.cpp">
       <Filter>Source Files\ast</Filter>
     </ClCompile>
+    <ClCompile Include="src\cpp\system_env\coverage_instance.cpp">
+      <Filter>Source Files\ast</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/scilab/modules/ast/coverage_Import.def b/scilab/modules/ast/coverage_Import.def
new file mode 100644 (file)
index 0000000..680807c
--- /dev/null
@@ -0,0 +1,8 @@
+LIBRARY    coverage.dll
+
+
+EXPORTS
+CoverModule_invokeExp
+CoverModule_invokeCallable
+CoverModule_invokeAndStartChrono
+CoverModule_stopChrono
index ac300b2..150ec95 100644 (file)
@@ -333,17 +333,17 @@ public :
 
     void visitprivate(const CellExp &e);
     void visitprivate(const FieldExp &e);
-    void visitprivate(const IfExp  &e);
-    void visitprivate(const WhileExp  &e);
+    void visitprivate(const IfExp &e);
+    void visitprivate(const WhileExp &e);
     void visitprivate(const ForExp  &e);
     void visitprivate(const ReturnExp &e);
     void visitprivate(const SelectExp &e);
     void visitprivate(const SeqExp  &e);
     void visitprivate(const NotExp &e);
     void visitprivate(const TransposeExp &e);
-    void visitprivate(const FunctionDec  &e);
+    void visitprivate(const FunctionDec &e);
     void visitprivate(const ListExp &e);
-    void visitprivate(const AssignExp  &e);
+    void visitprivate(const AssignExp &e);
     void visitprivate(const OpExp &e);
     void visitprivate(const LogicalOpExp &e);
     void visitprivate(const MatrixExp &e);
@@ -354,161 +354,19 @@ public :
     void visitprivate(const DAXPYExp &e);
     void visitprivate(const IntSelectExp &e);
     void visitprivate(const StringSelectExp &e);
-    void visitprivate(const TryCatchExp  &e);
-
-    void visitprivate(const StringExp &e)
-    {
-        if (e.getConstant() == nullptr)
-        {
-            types::String *psz = new types::String(e.getValue().c_str());
-            (const_cast<StringExp *>(&e))->setConstant(psz);
-
-        }
-        setResult(e.getConstant());
-    }
-
-
-    void visitprivate(const DoubleExp  &e)
-    {
-        if (e.getConstant() == nullptr)
-        {
-            types::Double *pdbl = new types::Double(e.getValue());
-            (const_cast<DoubleExp *>(&e))->setConstant(pdbl);
-
-        }
-        setResult(e.getConstant());
-    }
-
-
-    void visitprivate(const BoolExp  &e)
-    {
-        if (e.getConstant() == nullptr)
-        {
-            types::Bool *pB = new types::Bool(e.getValue());
-            (const_cast<BoolExp *>(&e))->setConstant(pB);
-
-        }
-        setResult(e.getConstant());
-    }
-
-
-    void visitprivate(const NilExp &/*e*/)
-    {
-        setResult(new types::Void());
-    }
-
-
-    void visitprivate(const SimpleVar &e)
-    {
-        symbol::Context* ctx = symbol::Context::getInstance();
-        symbol::Variable* var = ((SimpleVar&)e).getStack();
-        types::InternalType *pI = ctx->get(var);
-        setResult(pI);
-        if (pI != nullptr)
-        {
-            if (e.isVerbose() && pI->isCallable() == false && ConfigVariable::isPromptShow())
-            {
-                std::wostringstream ostr;
-                ostr << e.getSymbol().getName() << L"  = ";
-#ifndef NDEBUG
-                ostr << L"(" << pI->getRef() << L")";
-#endif
-                ostr << std::endl;
-                ostr << std::endl;
-                scilabWriteW(ostr.str().c_str());
-                std::wostringstream ostrName;
-                ostrName  << e.getSymbol().getName();
-                VariableToString(pI, ostrName.str().c_str());
-            }
-
-            //check if var is recalled in current scope like
-            //function f()
-            //  a; //<=> a=a;
-            //  a(2) = 18;
-            //endfunction
-            if (e.getParent()->isSeqExp())
-            {
-                if (ctx->getScopeLevel() > 1 && var->empty() == false && var->top()->m_iLevel != ctx->getScopeLevel())
-                {
-                    //put var in current scope
-                    ctx->put(var, pI);
-                }
-            }
-        }
-        else
-        {
-            char pstError[bsiz];
-            wchar_t* pwstError;
-
-            char* strErr =  wide_string_to_UTF8(e.getSymbol().getName().c_str());
-
-            os_sprintf(pstError, _("Undefined variable: %s\n"), strErr);
-            pwstError = to_wide_string(pstError);
-            FREE(strErr);
-            std::wstring wstError(pwstError);
-            FREE(pwstError);
-            throw InternalError(wstError, 999, e.getLocation());
-            //Err, SimpleVar doesn't exist in Scilab scopes.
-        }
-    }
-
-
-    void visitprivate(const ColonVar &/*e*/)
-    {
-        types::Colon *pC = new types::Colon();
-        setResult(pC);
-    }
-
-
-    void visitprivate(const DollarVar &/*e*/)
-    {
-        setResult(types::Polynom::Dollar());
-    }
-
-    void visitprivate(const BreakExp &e)
-    {
-        const_cast<BreakExp*>(&e)->setBreak();
-    }
-
-    void visitprivate(const ContinueExp &e)
-    {
-        const_cast<ContinueExp*>(&e)->setContinue();
-    }
-
-    void visitprivate(const ArrayListExp  &e)
-    {
-        exps_t::const_iterator it;
-        int iNbExpSize = this->getExpectedSize();
-        this->setExpectedSize(1);
-
-        types::typed_list lstIT;
-        for (it = e.getExps().begin() ; it != e.getExps().end() ; it++)
-        {
-            (*it)->accept(*this);
-            for (int j = 0; j < getResultSize(); j++)
-            {
-                lstIT.push_back(getResult(j));
-            }
-        }
-
-        setResult(lstIT);
-
-        this->setExpectedSize(iNbExpSize);
-    }
-
-    void visitprivate(const VarDec  &e)
-    {
-        try
-        {
-            /*getting what to assign*/
-            e.getInit().accept(*this);
-            getResult()->IncreaseRef();
-        }
-        catch (const InternalError& error)
-        {
-            throw error;
-        }
-    }
+    void visitprivate(const TryCatchExp &e);
+
+    void visitprivate(const StringExp & e);
+    void visitprivate(const DoubleExp & e);
+    void visitprivate(const BoolExp & e);
+    void visitprivate(const NilExp & e);
+    void visitprivate(const SimpleVar & e);
+    void visitprivate(const ColonVar & e);
+    void visitprivate(const DollarVar & e);
+    void visitprivate(const BreakExp & e);
+    void visitprivate(const ContinueExp & e);
+    void visitprivate(const ArrayListExp & e);
+    void visitprivate(const VarDec & e);
 
     types::InternalType* callOverloadOpExp(OpExp::Oper _oper, types::InternalType* _paramL, types::InternalType* _paramR);
     types::InternalType* callOverloadMatrixExp(const std::wstring& strType, types::InternalType* _paramL, types::InternalType* _paramR);
index f03f162..cd6ed50 100644 (file)
@@ -33,7 +33,7 @@ class Ast
 public:
     /** \brief Construct an Ast node.
     ** \param location scanner position informations */
-    Ast (const Location& location) : decorator(), _location (location)
+    Ast (const Location& location) : decorator(), coverId(0), _location (location)
     {
         nodeNumber = globalNodeNumber++;
     }
@@ -107,8 +107,24 @@ public:
         return decorator;
     }
 
+    inline void setCoverId(const uint64_t id)
+    {
+        coverId = id;
+    }
+
+    inline uint64_t getCoverId() const
+    {
+        return coverId;
+    }
+
+    inline uint64_t getCoverId()
+    {
+        return coverId;
+    }
+
 private:
     analysis::Decorator decorator;
+    uint64_t coverId;
     /** \brief Construct an Ast by copy. */
     Ast (const Ast&);
     /** \brief Assign an Ast to this. */
index 35623ae..033a56f 100644 (file)
@@ -20,6 +20,8 @@
 
 #include <list>
 
+#include "macro.hxx"
+
 #include "context.hxx"
 #include "dec.hxx"
 #include "arraylistvar.hxx"
@@ -51,7 +53,8 @@ public:
                  SeqExp& body)
         : Dec (location),
           _name (name),
-          _stack(NULL)
+          _stack(nullptr),
+         macro(nullptr)
     {
         args.setParent(this);
         returns.setParent(this);
@@ -68,6 +71,11 @@ public:
         //body will be deleted by types::Macro
         //so replace by NULL to avoir delete in ~Exp()
         //_exps[2] = NULL;
+       if (macro)
+        {
+            macro->DecreaseRef();
+            macro->killMe();
+        }
     }
 
     virtual FunctionDec* clone()
@@ -156,9 +164,30 @@ public:
     {
         return true;
     }
+
+    inline const types::Macro * getMacro() const
+    {
+        return macro;
+    }
+
+    inline types::Macro * getMacro()
+    {
+        return macro;
+    }
+
+    inline void setMacro(types::Macro * _macro)
+    {
+        macro = _macro;
+        if (macro)
+        {
+            macro->IncreaseRef();
+        }
+    }
+    
 protected:
     symbol::Symbol _name;
-    symbol::Variable* _stack;
+    symbol::Variable * _stack;
+    types::Macro * macro;
 };
 
 } // namespace ast
index 554b834..e80e84f 100644 (file)
@@ -87,6 +87,11 @@ public:
         return first_line == loc.first_line && first_column == loc.first_column && last_line == loc.last_line && last_column == loc.last_column;
     }
 
+    inline bool operator!=(const Location & loc) const
+    {
+        return !(*this == loc);
+    }
+
     std::wstring getLocationString() const
     {
         std::wostringstream os;
index 433d3d6..643a777 100644 (file)
@@ -75,6 +75,8 @@ public:
 
     /*return function list in the module _stModuleName*/
     int getFunctionList(std::list<Symbol>& lst, const std::wstring& _stModuleName);
+    /*return function list in the module _stModuleName*/
+    int getFunctionList(std::list<types::Callable *>& lst, std::wstring _stModuleName);
 
     int getConsoleVarsName(std::list<std::wstring>& lst);
     int getVarsName(std::list<std::wstring>& lst);
index 53140cb..ea755a9 100644 (file)
@@ -154,6 +154,7 @@ struct Variables
     int getProtectedVarsName(std::list<std::wstring>& lstVarName) const;
     int getFunctionsName(std::list<std::wstring>& lst);
     int getFunctionList(std::list<Symbol>& lst, std::wstring _stModuleName, int _iLevel);
+    int getFunctionList(std::list<types::Callable *>& lst, std::wstring _stModuleName, int _iLevel);
     int getVarsToVariableBrowser(std::list<Variable*>& lst);
     bool putInPreviousScope(Variable* _var, types::InternalType* _pIT, int _iLevel);
 
diff --git a/scilab/modules/ast/includes/system_env/coverage_instance.hxx b/scilab/modules/ast/includes/system_env/coverage_instance.hxx
new file mode 100644 (file)
index 0000000..ee85080
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+*  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+*  Copyright (C) 2015 - 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-en.txt
+*
+*/
+
+#ifndef __COVERAGE_INSTANCE_HXX__
+#define __COVERAGE_INSTANCE_HXX__
+
+extern "C"
+{
+#include "dynlib_ast.h"
+#include "CoverModule_interface.h"
+}
+
+namespace types
+{
+class Callable;
+}
+
+namespace ast
+{
+class Exp;
+
+class EXTERN_AST CoverageInstance
+{
+    //coverage
+private:
+    static void* coverage;
+public:
+    static inline void* getCoverage()
+    {
+        return coverage;
+    }
+
+    static inline void setCoverage(void* cov)
+    {
+        coverage = cov;
+    }
+
+    static inline void invoke(const ast::Exp& exp)
+    {
+        if (coverage)
+        {
+            CoverModule_invokeExp((void*)&exp);
+        }
+    }
+
+    static inline void invoke(types::Callable* call)
+    {
+        if (coverage)
+        {
+            CoverModule_invokeCallable(call);
+        }
+    }
+
+    static inline void invokeAndStartChrono(void* exp)
+    {
+        if (coverage)
+        {
+            CoverModule_invokeAndStartChrono(exp);
+        }
+    }
+
+    static inline void stopChrono(void* exp)
+    {
+        if (coverage)
+        {
+            CoverModule_stopChrono(exp);
+        }
+    }
+};
+}
+#endif /* !__COVERAGE_INSTANCE_HXX__ */
\ No newline at end of file
index 2c65a1f..743ca2f 100644 (file)
@@ -94,6 +94,16 @@ public :
 
     void add_submacro(const symbol::Symbol& s, Macro* macro);
 
+    inline const std::map<symbol::Variable*, Macro*> & getSubMacros() const
+    {
+        return m_submacro;
+    }
+
+    inline const std::map<symbol::Variable*, Macro*> & getSubMacros()
+    {
+        return m_submacro;
+    }
+
 private :
     std::list<symbol::Variable*>*   m_inputArgs;
     std::list<symbol::Variable*>*   m_outputArgs;
index 1a7b9b7..3a175ef 100644 (file)
@@ -66,6 +66,11 @@ public :
         return L"function";
     }
 
+    inline const std::wstring & getPath()
+    {
+        return m_stPath;
+    }
+
     virtual int getNbInputArgument(void);
     virtual int getNbOutputArgument(void);
 
index 0b57e07..7de3be8 100644 (file)
 //file included in runvisitor.cpp
 namespace ast {
 
-    template<class T>
-    void RunVisitorT<T>::visitprivate(const AssignExp  &e)
+template<class T>
+void RunVisitorT<T>::visitprivate(const AssignExp  &e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    symbol::Context* ctx = symbol::Context::getInstance();
+    /*Create local exec visitor*/
+    try
     {
-        symbol::Context* ctx = symbol::Context::getInstance();
-        /*Create local exec visitor*/
-        try
+        SimpleVar * pVar = NULL;
+        if (e.getLeftExp().isSimpleVar())
         {
-            SimpleVar * pVar = NULL;
-            if (e.getLeftExp().isSimpleVar())
-            {
-                pVar = static_cast<SimpleVar*>(&e.getLeftExp());
-            }
+            pVar = static_cast<SimpleVar*>(&e.getLeftExp());
+        }
 
-            /*get king of left hand*/
-            if (pVar)
+        /*get king of left hand*/
+        if (pVar)
+        {
+            // x = ?
+            /*getting what to assign*/
+            types::InternalType *pIT = e.getRightVal();
+            if (pIT == NULL)
             {
-                // x = ?
-                /*getting what to assign*/
-                types::InternalType *pIT = e.getRightVal();
-                if (pIT == NULL)
-                {
-                    setExpectedSize(1);
-                    e.getRightExp().accept(*this);
+                setExpectedSize(1);
+                e.getRightExp().accept(*this);
 
-                    if (getResultSize() != 1)
-                    {
-                        std::wostringstream os;
-                        os << _W("Can not assign multiple value in a single variable") << std::endl;
-                        //os << ((Location)e.getRightExp().getLocation()).getLocationString() << std::endl;
-                        throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
-                    }
-
-                    pIT = getResult();
-                    //reset result
-                    setResult(NULL);
-                }
-
-                if (pIT->isImplicitList())
+                if (getResultSize() != 1)
                 {
-                    if (pIT->getAs<types::ImplicitList>()->isComputable())
-                    {
-                        types::InternalType *pTemp = pIT->getAs<types::ImplicitList>()->extractFullMatrix();
-                        pIT->killMe();
-                        pIT = pTemp;
-                    }
+                    std::wostringstream os;
+                    os << _W("Can not assign multiple value in a single variable") << std::endl;
+                    //os << ((Location)e.getRightExp().getLocation()).getLocationString() << std::endl;
+                    throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
                 }
 
-                if (pIT->isAssignable() == false)
-                {
-                    if (pIT->isListDelete())
-                    {
-                        //used to delete a variable in current scope
-                        symbol::Symbol sym = pVar->getSymbol();
-                        if (ctx->isprotected(sym) == false)
-                        {
-                            ctx->remove(sym);
-                        }
-                        else
-                        {
-                            std::wostringstream os;
-                            os << _W("Redefining permanent variable.\n");
-                            throw ast::InternalError(os.str(), 999, e.getLeftExp().getLocation());
-                        }
-                    }
-
-                    setResult(NULL);
-                    return;
-                }
+                pIT = getResult();
+                //reset result
+                setResult(NULL);
+            }
 
-                if (pIT->isList() && pIT->getRef() > 0)
+            if (pIT->isImplicitList())
+            {
+                if (pIT->getAs<types::ImplicitList>()->isComputable())
                 {
-                    // Prevent modification of all scilab variable
-                    // which point to this container when it is used
-                    // in setfield scilab function.
-                    // A clone on a container will not clone what it contain.
-                    pIT = pIT->clone();
+                    types::InternalType *pTemp = pIT->getAs<types::ImplicitList>()->extractFullMatrix();
+                    pIT->killMe();
+                    pIT = pTemp;
                 }
+            }
 
-                if (e.getRightExp().isReturnExp())
-                {
-                    //ReturnExp so, put the value in the previous scope
-                    ctx->putInPreviousScope(pVar->getStack(), pIT);
-                    ((AssignExp*)&e)->setReturn();
-                }
-                else
+            if (pIT->isAssignable() == false)
+            {
+                if (pIT->isListDelete())
                 {
-                    if (ctx->isprotected(pVar->getStack()) == false)
+                    //used to delete a variable in current scope
+                    symbol::Symbol sym = pVar->getSymbol();
+                    if (ctx->isprotected(sym) == false)
                     {
-                        ctx->put(pVar->getStack(), pIT);
+                        ctx->remove(sym);
                     }
                     else
                     {
@@ -111,412 +79,455 @@ namespace ast {
                     }
                 }
 
-                if (e.isVerbose() && ConfigVariable::isPromptShow())
-                {
-                    std::wstring wstrName = pVar->getSymbol().getName();
-                    std::wostringstream ostr;
-                    ostr << L" " << wstrName << L"  = " << std::endl << std::endl;
-                    scilabWriteW(ostr.str().c_str());
-                    std::wostringstream ostrName;
-                    ostrName << wstrName;
-                    VariableToString(pIT, ostrName.str().c_str());
-                }
+                setResult(NULL);
+                CoverageInstance::stopChrono((void*)&e);
                 return;
             }
 
-            if (e.getLeftExp().isCellCallExp())
+            if (pIT->isList() && pIT->getRef() > 0)
             {
-                CellCallExp *pCell = static_cast<CellCallExp*>(&e.getLeftExp());
-                types::InternalType *pOut = NULL;
+                // Prevent modification of all scilab variable
+                // which point to this container when it is used
+                // in setfield scilab function.
+                // A clone on a container will not clone what it contain.
+                pIT = pIT->clone();
+            }
 
-                /*getting what to assign*/
-                types::InternalType* pITR = e.getRightVal();
-                if (pITR == NULL)
+            if (e.getRightExp().isReturnExp())
+            {
+                //ReturnExp so, put the value in the previous scope
+                ctx->putInPreviousScope(pVar->getStack(), pIT);
+                ((AssignExp*)&e)->setReturn();
+            }
+            else
+            {
+                if (ctx->isprotected(pVar->getStack()) == false)
                 {
-                    e.getRightExp().accept(*this);
-                    pITR = getResult();
-                    //reset result
-                    setResult(NULL);
+                    ctx->put(pVar->getStack(), pIT);
                 }
-
-                if (pITR == NULL)
+                else
                 {
-                    // if the right hand is NULL.
                     std::wostringstream os;
-                    os << _W("Unable to extract right part expression.\n");
+                    os << _W("Redefining permanent variable.\n");
                     throw ast::InternalError(os.str(), 999, e.getLeftExp().getLocation());
                 }
+            }
 
-                std::list<ExpHistory*> fields;
-                if (getFieldsFromExp(pCell, fields) == false)
-                {
-                    for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                    {
-                        delete *i;
-                    }
-                    std::wostringstream os;
-                    os << _W("Get fields from expression failed.");
-                    throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
-                }
+            if (e.isVerbose() && ConfigVariable::isPromptShow())
+            {
+                std::wstring wstrName = pVar->getSymbol().getName();
+                std::wostringstream ostr;
+                ostr << L" " << wstrName << L"  = " << std::endl << std::endl;
+                scilabWriteW(ostr.str().c_str());
+                std::wostringstream ostrName;
+                ostrName << wstrName;
+                VariableToString(pIT, ostrName.str().c_str());
+            }
+            CoverageInstance::stopChrono((void*)&e);
+            return;
+        }
 
-                try
-                {
-                    pOut = evaluateFields(pCell, fields, pITR);
-                }
-                catch (const InternalError& error)
-                {
-                    // catch error when call overload
-                    for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                    {
-                        (*i)->setDeleteCurrent(true);
-                        delete *i;
-                    }
+        if (e.getLeftExp().isCellCallExp())
+        {
+            CellCallExp *pCell = static_cast<CellCallExp*>(&e.getLeftExp());
+            types::InternalType *pOut = NULL;
 
-                    pITR->killMe();
-                    throw error;
-                }
+            /*getting what to assign*/
+            types::InternalType* pITR = e.getRightVal();
+            if (pITR == NULL)
+            {
+                e.getRightExp().accept(*this);
+                pITR = getResult();
+                //reset result
+                setResult(NULL);
+            }
 
+            if (pITR == NULL)
+            {
+                // if the right hand is NULL.
+                std::wostringstream os;
+                os << _W("Unable to extract right part expression.\n");
+                throw ast::InternalError(os.str(), 999, e.getLeftExp().getLocation());
+            }
+
+            std::list<ExpHistory*> fields;
+            if (getFieldsFromExp(pCell, fields) == false)
+            {
                 for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
                 {
                     delete *i;
                 }
+                std::wostringstream os;
+                os << _W("Get fields from expression failed.");
+                throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+            }
 
-                pITR->killMe();
-
-                if (pOut == NULL)
-                {
-                    std::wostringstream os;
-                    os << _W("Fields evaluation failed.");
-                    throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
-                }
-
-                if (pOut != NULL)
-                {
-                    if (e.isVerbose() && ConfigVariable::isPromptShow())
-                    {
-                        std::wostringstream ostr;
-                        ostr << L" " << *getStructNameFromExp(pCell) << L"  = " << std::endl;
-                        ostr << std::endl;
-                        scilabWriteW(ostr.str().c_str());
-
-                        VariableToString(pOut, ostr.str().c_str());
-                    }
-                }
-                else
+            try
+            {
+                pOut = evaluateFields(pCell, fields, pITR);
+            }
+            catch (const InternalError& error)
+            {
+                // catch error when call overload
+                for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
                 {
-                    //manage error
-                    std::wostringstream os;
-                    os << _W("Invalid Index.\n");
-                    throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+                    (*i)->setDeleteCurrent(true);
+                    delete *i;
                 }
 
-                return;
+                pITR->killMe();
+                throw error;
             }
 
-            if (e.getLeftExp().isCallExp())
+            for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
             {
-                CallExp *pCall = static_cast<CallExp*>(&e.getLeftExp());
-                //x(?) = ?
-                types::InternalType *pOut = NULL;
+                delete *i;
+            }
 
-                /*getting what to assign*/
-                types::InternalType* pITR = e.getRightVal();
-                if (pITR == NULL)
-                {
-                    e.getRightExp().accept(*this);
-                    pITR = getResult();
-                    //reset result
-                    setResult(NULL);
-                }
+            pITR->killMe();
 
-                if (pITR == NULL)
-                {
-                    // if the right hand is NULL.
-                    std::wostringstream os;
-                    os << _W("Unable to extract right part expression.\n");
-                    throw ast::InternalError(os.str(), 999, e.getLeftExp().getLocation());
-                }
+            if (pOut == NULL)
+            {
+                std::wostringstream os;
+                os << _W("Fields evaluation failed.");
+                throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+            }
 
-                bool alreadyProcessed = false;
-                //a(...) without fields or whatever on arrayof derived types
-                if (pCall->getName().isSimpleVar())
+            if (pOut != NULL)
+            {
+                if (e.isVerbose() && ConfigVariable::isPromptShow())
                 {
-                    ast::SimpleVar* var = pCall->getName().getAs<ast::SimpleVar>();
-                    types::InternalType* pIT = ctx->getCurrentLevel(var->getStack());
-                    if (pIT && pIT->isArrayOf())
-                    {
-                        if (ctx->isprotected(var->getStack()))
-                        {
-                            std::wostringstream os;
-                            os << _W("Redefining permanent variable.\n");
-                            throw ast::InternalError(os.str(), 999, pCall->getLocation());
-                        }
-
-                        // prevent delete after extractFullMatrix
-                        // called in insertionCall when pITR is an ImplicitList
-                        pITR->IncreaseRef();
-
-                        types::typed_list* currentArgs = GetArgumentList(pCall->getArgs());
-
-                        try
-                        {
-                            pOut = insertionCall(e, currentArgs, pIT, pITR);
-                        }
-                        catch (const InternalError& error)
-                        {
-                            pITR->DecreaseRef();
-                            // call killMe on all arguments
-                            cleanOut(*currentArgs);
-                            delete currentArgs;
-                            // insertion have done, call killMe on pITR
-                            pITR->killMe();
-                            throw error;
-                        }
-
-                        pITR->DecreaseRef();
-
-                        // call killMe on all arguments
-                        cleanOut(*currentArgs);
-                        delete currentArgs;
+                    std::wostringstream ostr;
+                    ostr << L" " << *getStructNameFromExp(pCell) << L"  = " << std::endl;
+                    ostr << std::endl;
+                    scilabWriteW(ostr.str().c_str());
 
-                        // insertion have done, call killMe on pITR
-                        pITR->killMe();
+                    VariableToString(pOut, ostr.str().c_str());
+                }
+            }
+            else
+            {
+                //manage error
+                std::wostringstream os;
+                os << _W("Invalid Index.\n");
+                throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+            }
 
-                        if (pOut == NULL)
-                        {
-                            std::wostringstream os;
-                            os << _W("Submatrix incorrectly defined.\n");
-                            throw ast::InternalError(os.str(), 999, e.getLocation());
-                        }
+            CoverageInstance::stopChrono((void*)&e);
+            return;
+        }
 
+        if (e.getLeftExp().isCallExp())
+        {
+            CallExp *pCall = static_cast<CallExp*>(&e.getLeftExp());
+            //x(?) = ?
+            types::InternalType *pOut = NULL;
 
-                        //update variable with new value
-                        if (pOut != pIT)
-                        {
-                            ctx->put(var->getStack(), pOut);
-                        }
+            /*getting what to assign*/
+            types::InternalType* pITR = e.getRightVal();
+            if (pITR == NULL)
+            {
+                e.getRightExp().accept(*this);
+                pITR = getResult();
+                //reset result
+                setResult(NULL);
+            }
 
-                        alreadyProcessed = true;
-                    }
-                }
+            if (pITR == NULL)
+            {
+                // if the right hand is NULL.
+                std::wostringstream os;
+                os << _W("Unable to extract right part expression.\n");
+                throw ast::InternalError(os.str(), 999, e.getLeftExp().getLocation());
+            }
 
-                if (alreadyProcessed == false)
+            bool alreadyProcessed = false;
+            //a(...) without fields or whatever on arrayof derived types
+            if (pCall->getName().isSimpleVar())
+            {
+                ast::SimpleVar* var = pCall->getName().getAs<ast::SimpleVar>();
+                types::InternalType* pIT = ctx->getCurrentLevel(var->getStack());
+                if (pIT && pIT->isArrayOf())
                 {
-                    std::list<ExpHistory*> fields;
-                    if (getFieldsFromExp(pCall, fields) == false)
+                    if (ctx->isprotected(var->getStack()))
                     {
-                        for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                        {
-                            delete *i;
-                        }
-
                         std::wostringstream os;
-                        os << _W("Instruction left hand side: waiting for a name.");
-                        throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+                        os << _W("Redefining permanent variable.\n");
+                        throw ast::InternalError(os.str(), 999, pCall->getLocation());
                     }
 
                     // prevent delete after extractFullMatrix
-                    // called in evaluateFields when pITR is an ImplicitList
+                    // called in insertionCall when pITR is an ImplicitList
                     pITR->IncreaseRef();
 
+                    types::typed_list* currentArgs = GetArgumentList(pCall->getArgs());
+
                     try
                     {
-                        pOut = evaluateFields(pCall, fields, pITR);
+                        pOut = insertionCall(e, currentArgs, pIT, pITR);
                     }
                     catch (const InternalError& error)
                     {
-                        // catch error when call overload
-                        for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                        {
-                            delete *i;
-                        }
-
                         pITR->DecreaseRef();
+                        // call killMe on all arguments
+                        cleanOut(*currentArgs);
+                        delete currentArgs;
+                        // insertion have done, call killMe on pITR
                         pITR->killMe();
-
                         throw error;
                     }
 
-                    for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                    {
-                        delete *i;
-                    }
-
                     pITR->DecreaseRef();
+
+                    // call killMe on all arguments
+                    cleanOut(*currentArgs);
+                    delete currentArgs;
+
+                    // insertion have done, call killMe on pITR
                     pITR->killMe();
 
                     if (pOut == NULL)
                     {
                         std::wostringstream os;
-                        os << _W("Fields evaluation failed.");
-                        throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+                        os << _W("Submatrix incorrectly defined.\n");
+                        throw ast::InternalError(os.str(), 999, e.getLocation());
                     }
-                }
 
-                if (e.isVerbose() && ConfigVariable::isPromptShow())
-                {
-                    std::wostringstream ostr;
-                    ostr << L" " << *getStructNameFromExp(&pCall->getName()) << L"  = " << std::endl;
-                    ostr << std::endl;
-                    scilabWriteW(ostr.str().c_str());
 
-                    std::wostringstream ostrName;
-                    ostrName << *getStructNameFromExp(&pCall->getName());
-                    VariableToString(pOut, ostrName.str().c_str());
-                }
+                    //update variable with new value
+                    if (pOut != pIT)
+                    {
+                        ctx->put(var->getStack(), pOut);
+                    }
 
-                clearResult();
-                return;
+                    alreadyProcessed = true;
+                }
             }
 
-            if (e.getLeftExp().isAssignListExp())
+            if (alreadyProcessed == false)
             {
-                AssignListExp *pList = e.getLeftExp().getAs<AssignListExp>();
-                //[x,y] = ?
-                int iLhsCount = (int)pList->getExps().size();
-
-                /*getting what to assign*/
-                T exec;
-                exec.setExpectedSize(iLhsCount);
-                e.getRightExp().accept(exec);
-
-                if (exec.getResultSize() < iLhsCount)
+                std::list<ExpHistory*> fields;
+                if (getFieldsFromExp(pCall, fields) == false)
                 {
+                    for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
+                    {
+                        delete *i;
+                    }
+
                     std::wostringstream os;
-                    os << _W("Incompatible assignation: trying to assign ") << exec.getResultSize();
-                    os << _W(" values in ") << iLhsCount << _W(" variables.") << std::endl;
+                    os << _W("Instruction left hand side: waiting for a name.");
                     throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
                 }
 
-                exps_t::const_reverse_iterator it;
-                exps_t exps = pList->getExps();
-                types::InternalType** pIT = new types::InternalType*[iLhsCount];
-                int i = 0;
-                for (i = iLhsCount - 1; i >= 0; i--)
+                // prevent delete after extractFullMatrix
+                // called in evaluateFields when pITR is an ImplicitList
+                pITR->IncreaseRef();
+
+                try
                 {
-                    //create a new AssignExp and run it
-                    pIT[i] = (exec.getResult(i));
-                    //protet rhs against removal [a,b] = (b,a);
-                    pIT[i]->IncreaseRef();
+                    pOut = evaluateFields(pCall, fields, pITR);
+                }
+                catch (const InternalError& error)
+                {
+                    // catch error when call overload
+                    for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
+                    {
+                        delete *i;
+                    }
+
+                    pITR->DecreaseRef();
+                    pITR->killMe();
+
+                    throw error;
                 }
 
-                for (i = iLhsCount - 1, it = exps.rbegin(); it != exps.rend(); it++, i--)
+                for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
                 {
-                    Exp* pExp = e.getRightExp().clone();
-                    AssignExp pAssign((*it)->getLocation(), *(*it), *pExp, pIT[i]);
-                    pAssign.setLrOwner(false);
-                    pAssign.setVerbose(e.isVerbose());
-                    pAssign.accept(*this);
-                    //clear result to take care of [n,n]
-                    exec.setResult(i, NULL);
-                    delete pExp;
+                    delete *i;
                 }
 
-                for (i = iLhsCount - 1; i >= 0; i--)
+                pITR->DecreaseRef();
+                pITR->killMe();
+
+                if (pOut == NULL)
                 {
-                    //unprotect rhs
-                    pIT[i]->DecreaseRef();
-                    pIT[i]->killMe();
+                    std::wostringstream os;
+                    os << _W("Fields evaluation failed.");
+                    throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
                 }
+            }
 
-                delete[] pIT;
-                exec.clearResult();
-                return;
+            if (e.isVerbose() && ConfigVariable::isPromptShow())
+            {
+                std::wostringstream ostr;
+                ostr << L" " << *getStructNameFromExp(&pCall->getName()) << L"  = " << std::endl;
+                ostr << std::endl;
+                scilabWriteW(ostr.str().c_str());
+
+                std::wostringstream ostrName;
+                ostrName << *getStructNameFromExp(&pCall->getName());
+                VariableToString(pOut, ostrName.str().c_str());
             }
 
-            if (e.getLeftExp().isFieldExp())
+            clearResult();
+            CoverageInstance::stopChrono((void*)&e);
+
+            return;
+        }
+
+        if (e.getLeftExp().isAssignListExp())
+        {
+            AssignListExp *pList = e.getLeftExp().getAs<AssignListExp>();
+            //[x,y] = ?
+            int iLhsCount = (int)pList->getExps().size();
+
+            /*getting what to assign*/
+            T exec;
+            exec.setExpectedSize(iLhsCount);
+            e.getRightExp().accept(exec);
+
+            if (exec.getResultSize() < iLhsCount)
+            {
+                std::wostringstream os;
+                os << _W("Incompatible assignation: trying to assign ") << exec.getResultSize();
+                os << _W(" values in ") << iLhsCount << _W(" variables.") << std::endl;
+                throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+            }
+
+            exps_t::const_reverse_iterator it;
+            exps_t exps = pList->getExps();
+            types::InternalType** pIT = new types::InternalType*[iLhsCount];
+            int i = 0;
+            for (i = iLhsCount - 1; i >= 0; i--)
+            {
+                //create a new AssignExp and run it
+                pIT[i] = (exec.getResult(i));
+                //protet rhs against removal [a,b] = (b,a);
+                pIT[i]->IncreaseRef();
+            }
+
+            for (i = iLhsCount - 1, it = exps.rbegin(); it != exps.rend(); it++, i--)
+            {
+                Exp* pExp = e.getRightExp().clone();
+                AssignExp pAssign((*it)->getLocation(), *(*it), *pExp, pIT[i]);
+                pAssign.setLrOwner(false);
+                pAssign.setVerbose(e.isVerbose());
+                pAssign.accept(*this);
+                //clear result to take care of [n,n]
+                exec.setResult(i, NULL);
+                delete pExp;
+            }
+
+            for (i = iLhsCount - 1; i >= 0; i--)
+            {
+                //unprotect rhs
+                pIT[i]->DecreaseRef();
+                pIT[i]->killMe();
+            }
+
+            delete[] pIT;
+            exec.clearResult();
+            CoverageInstance::stopChrono((void*)&e);
+            return;
+        }
+
+        if (e.getLeftExp().isFieldExp())
+        {
+            FieldExp *pField = static_cast<FieldExp*>(&e.getLeftExp());
+            types::InternalType *pIT = e.getRightVal();
+            if (pIT == NULL)
             {
-                FieldExp *pField = static_cast<FieldExp*>(&e.getLeftExp());
-                types::InternalType *pIT = e.getRightVal();
-                if (pIT == NULL)
+                //a.b = x
+                //a.b can be a struct or a tlist/mlist or a handle
+                /*getting what to assign*/
+                setExpectedSize(1);
+                e.getRightExp().accept(*this);
+                pIT = getResult();
+                setResult(NULL);
+            }
+
+            if (pIT->isImplicitList())
+            {
+                if (pIT->getAs<types::ImplicitList>()->isComputable())
                 {
-                    //a.b = x
-                    //a.b can be a struct or a tlist/mlist or a handle
-                    /*getting what to assign*/
-                    setExpectedSize(1);
-                    e.getRightExp().accept(*this);
-                    pIT = getResult();
+                    types::InternalType *pTemp = pIT->getAs<types::ImplicitList>()->extractFullMatrix();
+                    delete pIT;
                     setResult(NULL);
+                    pIT = pTemp;
                 }
+            }
 
-                if (pIT->isImplicitList())
+            std::list<ExpHistory*> fields;
+            if (getFieldsFromExp(pField, fields) == false)
+            {
+                for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
                 {
-                    if (pIT->getAs<types::ImplicitList>()->isComputable())
-                    {
-                        types::InternalType *pTemp = pIT->getAs<types::ImplicitList>()->extractFullMatrix();
-                        delete pIT;
-                        setResult(NULL);
-                        pIT = pTemp;
-                    }
+                    delete *i;
                 }
+                std::wostringstream os;
+                os << _W("Get fields from expression failed.");
+                throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+            }
 
-                std::list<ExpHistory*> fields;
-                if (getFieldsFromExp(pField, fields) == false)
+            try
+            {
+                if (evaluateFields(pField, fields, pIT) == NULL)
                 {
                     for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
                     {
                         delete *i;
                     }
                     std::wostringstream os;
-                    os << _W("Get fields from expression failed.");
+                    os << _W("Fields evaluation failed.");
                     throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
                 }
-
-                try
-                {
-                    if (evaluateFields(pField, fields, pIT) == NULL)
-                    {
-                        for (std::list<ExpHistory*>::const_iterator i = fields.begin(), end = fields.end(); i != end; i++)
-                        {
-                            delete *i;
-                        }
-                        std::wostringstream os;
-                        os << _W("Fields evaluation failed.");
-                        throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
-                    }
-                }
-                catch (const InternalError& error)
-                {
-                    for (auto i : fields)
-                    {
-                        delete i;
-                    }
-
-                    throw error;
-                }
-
+            }
+            catch (const InternalError& error)
+            {
                 for (auto i : fields)
                 {
                     delete i;
                 }
 
-                if (e.isVerbose() && ConfigVariable::isPromptShow())
-                {
-                    const std::wstring *pstName = getStructNameFromExp(pField);
+                throw error;
+            }
 
-                    types::InternalType* pPrint = ctx->get(symbol::Symbol(*pstName));
-                    std::wostringstream ostr;
-                    ostr << L" " << *pstName << L"  = " << std::endl << std::endl;
-                    scilabWriteW(ostr.str().c_str());
+            for (auto i : fields)
+            {
+                delete i;
+            }
 
-                    std::wostringstream ostrName;
-                    ostrName << *pstName;
-                    VariableToString(pPrint, ostrName.str().c_str());
-                }
+            if (e.isVerbose() && ConfigVariable::isPromptShow())
+            {
+                const std::wstring *pstName = getStructNameFromExp(pField);
 
-                clearResult();
-                return;
+                types::InternalType* pPrint = ctx->get(symbol::Symbol(*pstName));
+                std::wostringstream ostr;
+                ostr << L" " << *pstName << L"  = " << std::endl << std::endl;
+                scilabWriteW(ostr.str().c_str());
+
+                std::wostringstream ostrName;
+                ostrName << *pstName;
+                VariableToString(pPrint, ostrName.str().c_str());
             }
 
-            std::wostringstream os;
-            os << _W("unknow script form");
-            //os << ((Location)e.getRightExp().getLocation()).getLocationString() << std::endl;
-            throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
-        }
-        catch (const InternalError& error)
-        {
-            throw error;
+            clearResult();
+            CoverageInstance::stopChrono((void*)&e);
+            return;
         }
+
+        std::wostringstream os;
+        os << _W("unknow script form");
+        //os << ((Location)e.getRightExp().getLocation()).getLocationString() << std::endl;
+        throw ast::InternalError(os.str(), 999, e.getRightExp().getLocation());
+    }
+    catch (const InternalError& error)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw error;
     }
 
+    CoverageInstance::stopChrono((void*)&e);
+}
+
 } /* namespace ast */
index 9edf823..ed09d60 100644 (file)
@@ -16,6 +16,7 @@ namespace ast {
 template<class T>
 void RunVisitorT<T>::visitprivate(const CallExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     types::typed_list outTmp;
     types::typed_list inTmp;
     std::vector<std::wstring> vectOptName;
@@ -39,12 +40,21 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
                 {
                     std::wostringstream os;
                     os << _W("left side of optional parameter must be a variable") << std::endl;
+                    CoverageInstance::stopChrono((void*)&e);
                     throw ast::InternalError(os.str(), 999, e.getLocation());
                 }
 
                 SimpleVar* pVar = pL->getAs<SimpleVar>();
                 Exp* pR = &pAssign->getRightExp();
-                pR->accept(*this);
+                try
+                {
+                    pR->accept(*this);
+                }
+                catch (ScilabException &)
+                {
+                    CoverageInstance::stopChrono((void*)&e);
+                    throw;
+                }
                 types::InternalType* pITR = getResult();
                 // IncreaseRef to protect opt argument of scope_end delete
                 // It will be deleted by clear_opt
@@ -60,7 +70,15 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
 
             int iSize = getExpectedSize();
             setExpectedSize(-1);
-            arg->accept(*this);
+            try
+            {
+                arg->accept(*this);
+            }
+            catch (ScilabException &)
+            {
+                CoverageInstance::stopChrono((void*)&e);
+                throw;
+            }
             setExpectedSize(iSize);
 
             if (getResult() == NULL)
@@ -93,11 +111,20 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
     {
         clearResult();
         cleanIn(inTmp, outTmp);
+        CoverageInstance::stopChrono((void*)&e);
         throw ie;
     }
 
     // get function/variable
-    e.getName().accept(*this);
+    try
+    {
+        e.getName().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     types::InternalType* pIT = getResult();
 
     types::typed_list out;
@@ -110,9 +137,15 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
         clearResult();
         std::wostringstream os;
         os << _W("Wrong number of output arguments.\n") << std::endl;
+        CoverageInstance::stopChrono((void*)&e);
         throw ast::InternalError(os.str(), 999, e.getLocation());
     }
 
+    if (pIT->isCallable())
+    {
+        CoverageInstance::invoke(static_cast<types::Callable *>(pIT));
+    }
+
     // manage input according the function/variable
     int iLoop = -1;
     int iterIn = 0;
@@ -169,7 +202,7 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
         }
 
         // default case
-        for(int i = 0; i < vectNbResult[iLoop]; i++, iterIn++)
+        for (int i = 0; i < vectNbResult[iLoop]; i++, iterIn++)
         {
             in.push_back(inTmp[iterIn]);
         }
@@ -323,6 +356,7 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
         clearResult();
         cleanInOut(in, out);
         cleanOpt(opt);
+        CoverageInstance::stopChrono((void*)&e);
 
         throw ia;
     }
@@ -337,17 +371,30 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
         clearResult();
         cleanInOut(in, out);
         cleanOpt(opt);
+        CoverageInstance::stopChrono((void*)&e);
 
         throw ie;
     }
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template<class T>
 void RunVisitorT<T>::visitprivate(const CellCallExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+
     //get head
     T execMeCell;
-    e.getName().accept(execMeCell);
+    try
+    {
+        e.getName().accept(execMeCell);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 
     if (execMeCell.getResult() != NULL)
     {
@@ -361,6 +408,7 @@ void RunVisitorT<T>::visitprivate(const CellCallExp &e)
 
             if (pIT->isCell() == false)
             {
+                CoverageInstance::stopChrono((void*)&e);
                 throw ast::InternalError(_W("[error] Cell contents reference from a non-cell array object.\n"), 999, e.getFirstLocation());
             }
             //Create list of indexes
@@ -373,6 +421,7 @@ void RunVisitorT<T>::visitprivate(const CellCallExp &e)
                 delete pArgs;
                 std::wostringstream os;
                 os << _W("Cell : Cannot extract without arguments.\n");
+                CoverageInstance::stopChrono((void*)&e);
                 throw ast::InternalError(os.str(), 999, e.getFirstLocation());
             }
 
@@ -384,6 +433,7 @@ void RunVisitorT<T>::visitprivate(const CellCallExp &e)
                 std::wostringstream os;
                 os << _W("inconsistent row/column dimensions\n");
                 //os << ((*e.args_get().begin())->getLocation()).getLocationString() << std::endl;
+                CoverageInstance::stopChrono((void*)&e);
                 throw ast::InternalError(os.str(), 999, e.getFirstLocation());
             }
 
@@ -403,7 +453,7 @@ void RunVisitorT<T>::visitprivate(const CellCallExp &e)
 
 
             //clean pArgs return by GetArgumentList
-            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
+            for (int iArg = 0; iArg < (int)pArgs->size(); iArg++)
             {
                 (*pArgs)[iArg]->killMe();
             }
@@ -417,6 +467,7 @@ void RunVisitorT<T>::visitprivate(const CellCallExp &e)
         // In worst case variable pointing to function does not exists
         // visitprivate(SimpleVar) will throw the right exception.
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 } /* namespace ast */
index 25ea832..13e785a 100644 (file)
@@ -15,10 +15,11 @@ namespace ast {
 
 /*
     [1,2;3,4] with/without special character $ and :
-*/
+    */
 template<class T>
 void RunVisitorT<T>::visitprivate(const MatrixExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     try
     {
         exps_t::const_iterator row;
@@ -30,6 +31,7 @@ void RunVisitorT<T>::visitprivate(const MatrixExp &e)
         if (lines.size() == 0)
         {
             setResult(types::Double::Empty());
+            CoverageInstance::invokeAndStartChrono((void*)&e);
             return;
         }
 
@@ -47,16 +49,17 @@ void RunVisitorT<T>::visitprivate(const MatrixExp &e)
                 {
                     setResult(types::Double::Empty());
                 }
+                CoverageInstance::invokeAndStartChrono((void*)&e);
                 return;
             }
         }
 
         //do all [x,x]
-        for (row = lines.begin() ; row != lines.end() ; row++)
+        for (row = lines.begin(); row != lines.end(); row++)
         {
             types::InternalType* poRow = NULL;
             exps_t cols = (*row)->getAs<MatrixLineExp>()->getColumns();
-            for (col = cols.begin() ; col != cols.end() ; col++)
+            for (col = cols.begin(); col != cols.end(); col++)
             {
                 setResult(NULL); // Reset value on loop re-start
 
@@ -376,7 +379,7 @@ void RunVisitorT<T>::visitprivate(const MatrixExp &e)
             {
                 try
                 {
-                   poResult = callOverloadMatrixExp(L"f", pGTResult, pGT);
+                    poResult = callOverloadMatrixExp(L"f", pGTResult, pGT);
                 }
                 catch (const InternalError& error)
                 {
@@ -409,8 +412,10 @@ void RunVisitorT<T>::visitprivate(const MatrixExp &e)
     catch (const InternalError& error)
     {
         setResult(NULL);
+        CoverageInstance::invokeAndStartChrono((void*)&e);
         throw error;
     }
+    CoverageInstance::invokeAndStartChrono((void*)&e);
 }
 
 template<class T>
index f2e64a1..fafbcec 100644 (file)
@@ -16,6 +16,7 @@ namespace ast {
 template<class T>
 void RunVisitorT<T>::visitprivate(const OpExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     types::InternalType * pITL = NULL, *pITR = NULL, *pResult = NULL;
     try
     {
@@ -65,17 +66,17 @@ void RunVisitorT<T>::visitprivate(const OpExp &e)
 
         switch (e.getOper())
         {
-            case OpExp::plus :
+            case OpExp::plus:
             {
                 pResult = GenericPlus(pITL, pITR);
                 break;
             }
-            case OpExp::unaryMinus :
+            case OpExp::unaryMinus:
             {
                 pResult = GenericUnaryMinus(pITR);
                 break;
             }
-            case OpExp::minus :
+            case OpExp::minus:
             {
                 pResult = GenericMinus(pITL, pITR);
                 break;
@@ -90,7 +91,7 @@ void RunVisitorT<T>::visitprivate(const OpExp &e)
                 pResult = GenericLDivide(pITL, pITR);
                 break;
             }
-            case OpExp::dotldivide :
+            case OpExp::dotldivide:
             {
                 pResult = GenericDotLDivide(pITL, pITR);
                 break;
@@ -100,72 +101,72 @@ void RunVisitorT<T>::visitprivate(const OpExp &e)
                 pResult = GenericRDivide(pITL, pITR);
                 break;
             }
-            case OpExp::dotrdivide :
+            case OpExp::dotrdivide:
             {
                 pResult = GenericDotRDivide(pITL, pITR);
                 break;
             }
-            case OpExp::dottimes :
+            case OpExp::dottimes:
             {
                 pResult = GenericDotTimes(pITL, pITR);
                 break;
             }
-            case OpExp::dotpower :
+            case OpExp::dotpower:
             {
                 pResult = GenericDotPower(pITL, pITR);
                 break;
             }
-            case OpExp::eq :
+            case OpExp::eq:
             {
                 pResult = GenericComparisonEqual(pITL, pITR);
                 break;
             }
-            case OpExp::ne :
+            case OpExp::ne:
             {
                 pResult = GenericComparisonNonEqual(pITL, pITR);
                 break;
             }
-            case OpExp::lt :
+            case OpExp::lt:
             {
                 pResult = GenericLess(pITL, pITR);
                 break;
             }
-            case OpExp::le :
+            case OpExp::le:
             {
                 pResult = GenericLessEqual(pITL, pITR);
                 break;
             }
-            case OpExp::gt :
+            case OpExp::gt:
             {
                 pResult = GenericGreater(pITL, pITR);
                 break;
             }
-            case OpExp::ge :
+            case OpExp::ge:
             {
                 pResult = GenericGreaterEqual(pITL, pITR);
                 break;
             }
-            case OpExp::power :
+            case OpExp::power:
             {
                 pResult = GenericPower(pITL, pITR);
                 break;
             }
-            case OpExp::krontimes :
+            case OpExp::krontimes:
             {
                 pResult = GenericKrontimes(pITL, pITR);
                 break;
             }
-            case OpExp::kronrdivide :
+            case OpExp::kronrdivide:
             {
                 pResult = GenericKronrdivide(pITL, pITR);
                 break;
             }
-            case OpExp::kronldivide :
+            case OpExp::kronldivide:
             {
                 pResult = GenericKronldivide(pITL, pITR);
                 break;
             }
-            default :
+            default:
                 break;
         }
 
@@ -206,9 +207,11 @@ void RunVisitorT<T>::visitprivate(const OpExp &e)
         }
 
         error.SetErrorLocation(e.getLocation());
+        CoverageInstance::stopChrono((void*)&e);
         throw error;
     }
 
+    CoverageInstance::stopChrono((void*)&e);
     /*if (e.getDecorator().res.isConstant())
     {
 
@@ -218,6 +221,7 @@ void RunVisitorT<T>::visitprivate(const OpExp &e)
 template<class T>
 void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     try
     {
         types::InternalType *pITR = NULL; //assign only in non shortcut operations.
@@ -249,7 +253,7 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
 
         switch (e.getOper())
         {
-            case LogicalOpExp::logicalShortCutAnd :
+            case LogicalOpExp::logicalShortCutAnd:
             {
                 pResult = GenericShortcutAnd(pITL);
                 if (pResult)
@@ -259,7 +263,7 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
 
                 //Continue to logicalAnd
             }
-            case LogicalOpExp::logicalAnd :
+            case LogicalOpExp::logicalAnd:
             {
                 /*getting what to assign*/
                 e.getRight().accept(*this);
@@ -284,7 +288,7 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
                 pResult = GenericLogicalAnd(pITL, pITR);
                 break;
             }
-            case LogicalOpExp::logicalShortCutOr :
+            case LogicalOpExp::logicalShortCutOr:
             {
                 pResult = GenericShortcutOr(pITL);
                 if (pResult)
@@ -294,7 +298,7 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
 
                 //Continue to logicalAnd
             }
-            case LogicalOpExp::logicalOr :
+            case LogicalOpExp::logicalOr:
             {
                 /*getting what to assign*/
                 e.getRight().accept(*this);
@@ -319,7 +323,7 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
                 break;
             }
 
-            default :
+            default:
                 break;
         }
         //overloading
@@ -348,9 +352,11 @@ void RunVisitorT<T>::visitprivate(const LogicalOpExp &e)
     {
         clearResult();
         error.SetErrorLocation(e.getLocation());
+        CoverageInstance::stopChrono((void*)&e);
         throw error;
     }
 
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template<class T>
index 95791fc..95ff406 100644 (file)
@@ -43,6 +43,8 @@
 #include "runner.hxx"
 #include "threadmanagement.hxx"
 
+#include "coverage_instance.hxx"
+
 extern "C"
 {
 #include "sciprint.h"
@@ -54,15 +56,197 @@ extern "C"
 namespace ast
 {
 template <class T>
-void RunVisitorT<T>::visitprivate(const CellExp &e)
+void RunVisitorT<T>::visitprivate(const StringExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    if (e.getConstant() == nullptr)
+    {
+        types::String *psz = new types::String(e.getValue().c_str());
+        (const_cast<StringExp *>(&e))->setConstant(psz);
+    }
+    setResult(e.getConstant());
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const DoubleExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    if (e.getConstant() == nullptr)
+    {
+        types::Double *pdbl = new types::Double(e.getValue());
+        (const_cast<DoubleExp *>(&e))->setConstant(pdbl);
+    }
+    setResult(e.getConstant());
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const BoolExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    if (e.getConstant() == nullptr)
+    {
+        types::Bool *pB = new types::Bool(e.getValue());
+        (const_cast<BoolExp *>(&e))->setConstant(pB);
+    }
+    setResult(e.getConstant());
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const NilExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    setResult(new types::Void());
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const SimpleVar & e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    symbol::Context* ctx = symbol::Context::getInstance();
+    symbol::Variable* var = ((SimpleVar&)e).getStack();
+    types::InternalType *pI = ctx->get(var);
+    setResult(pI);
+    if (pI != nullptr)
+    {
+        if (e.isVerbose() && pI->isCallable() == false && ConfigVariable::isPromptShow())
+        {
+            std::wostringstream ostr;
+            ostr << e.getSymbol().getName() << L"  = ";
+#ifndef NDEBUG
+            ostr << L"(" << pI->getRef() << L")";
+#endif
+            ostr << std::endl;
+            ostr << std::endl;
+            scilabWriteW(ostr.str().c_str());
+            std::wostringstream ostrName;
+            ostrName << e.getSymbol().getName();
+            VariableToString(pI, ostrName.str().c_str());
+        }
+
+        //check if var is recalled in current scope like
+        //function f()
+        //  a; //<=> a=a;
+        //  a(2) = 18;
+        //endfunction
+        if (e.getParent()->isSeqExp())
+        {
+            if (ctx->getScopeLevel() > 1 && var->empty() == false && var->top()->m_iLevel != ctx->getScopeLevel())
+            {
+                //put var in current scope
+                ctx->put(var, pI);
+            }
+        }
+    }
+    else
+    {
+        char pstError[bsiz];
+        wchar_t* pwstError;
+
+        char* strErr = wide_string_to_UTF8(e.getSymbol().getName().c_str());
+
+        os_sprintf(pstError, _("Undefined variable: %s\n"), strErr);
+        pwstError = to_wide_string(pstError);
+        FREE(strErr);
+        std::wstring wstError(pwstError);
+        FREE(pwstError);
+        CoverageInstance::stopChrono((void*)&e);
+        throw InternalError(wstError, 999, e.getLocation());
+        //Err, SimpleVar doesn't exist in Scilab scopes.
+    }
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const ColonVar & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    types::Colon *pC = new types::Colon();
+    setResult(pC);
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const DollarVar & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    setResult(types::Polynom::Dollar());
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const BreakExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    const_cast<BreakExp*>(&e)->setBreak();
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const ContinueExp &e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    const_cast<ContinueExp*>(&e)->setContinue();
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const ArrayListExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    exps_t::const_iterator it;
+    int iNbExpSize = this->getExpectedSize();
+    this->setExpectedSize(1);
+
+    types::typed_list lstIT;
+    for (it = e.getExps().begin(); it != e.getExps().end(); it++)
+    {
+        (*it)->accept(*this);
+        for (int j = 0; j < getResultSize(); j++)
+        {
+            lstIT.push_back(getResult(j));
+        }
+    }
+
+    setResult(lstIT);
+
+    this->setExpectedSize(iNbExpSize);
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const VarDec & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        /*getting what to assign*/
+        e.getInit().accept(*this);
+        getResult()->IncreaseRef();
+    }
+    catch (const InternalError& error)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw error;
+    }
+    CoverageInstance::stopChrono((void*)&e);
+}
+
+template <class T>
+void RunVisitorT<T>::visitprivate(const CellExp & e)
+{
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+
     exps_t::const_iterator row;
     exps_t::const_iterator col;
     int iColMax = 0;
 
     exps_t lines = e.getLines();
     //check dimmension
-    for (row = lines.begin() ; row != lines.end() ; ++row )
+    for (row = lines.begin(); row != lines.end(); ++row)
     {
         exps_t cols = (*row)->getAs<MatrixLineExp>()->getColumns();
         if (iColMax == 0)
@@ -75,6 +259,7 @@ void RunVisitorT<T>::visitprivate(const CellExp &e)
             std::wostringstream os;
             os << _W("inconsistent row/column dimensions\n");
             //os << ((Location)(*row)->getLocation()).getLocationString() << std::endl;
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(os.str(), 999, (*row)->getLocation());
         }
     }
@@ -86,12 +271,20 @@ void RunVisitorT<T>::visitprivate(const CellExp &e)
     int j = 0;
 
     //insert items in cell
-    for (i = 0, row = lines.begin() ; row != lines.end() ; ++row, ++i)
+    for (i = 0, row = lines.begin(); row != lines.end(); ++row, ++i)
     {
         exps_t cols = (*row)->getAs<MatrixLineExp>()->getColumns();
-        for (j = 0, col = cols.begin() ; col != cols.end() ; ++col, ++j)
+        for (j = 0, col = cols.begin(); col != cols.end(); ++col, ++j)
         {
-            (*col)->accept(*this);
+            try
+            {
+                (*col)->accept(*this);
+            }
+            catch (ScilabException &)
+            {
+                CoverageInstance::stopChrono((void*)&e);
+                throw;
+            }
             types::InternalType *pIT = getResult();
             if (pIT->isImplicitList())
             {
@@ -109,6 +302,8 @@ void RunVisitorT<T>::visitprivate(const CellExp &e)
 
     //return new cell
     setResult(pC);
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
@@ -116,12 +311,15 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
 {
     /*
       a.b
-    */
+      */
+
+    CoverageInstance::invokeAndStartChrono((void*)&e);
 
     if (!e.getTail()->isSimpleVar())
     {
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("/!\\ Unmanaged FieldExp.\n").c_str());
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
 
@@ -131,6 +329,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
     }
     catch (const InternalError& error)
     {
+        CoverageInstance::stopChrono((void*)&e);
         throw error;
     }
 
@@ -138,6 +337,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
     {
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("Attempt to reference field of non-structure array.\n").c_str());
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
 
@@ -149,6 +349,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
         clearResult();
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("Not yet implemented in Scilab.\n").c_str());
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
 
@@ -168,6 +369,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
     catch (std::wstring & err)
     {
         pValue->killMe();
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(err.c_str(), 999, e.getTail()->getLocation());
     }
 
@@ -177,6 +379,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
         {
             std::wostringstream os;
             os << _W("Invalid index.\n");
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(os.str(), 999, e.getLocation());
         }
 
@@ -232,6 +435,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
                 }
                 else
                 {
+                    CoverageInstance::stopChrono((void*)&e);
                     throw ie;
                 }
             }
@@ -244,6 +448,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
                 }
                 else
                 {
+                    CoverageInstance::stopChrono((void*)&e);
                     throw ie;
                 }
             }
@@ -253,6 +458,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
         {
             cleanInOut(in, out);
             setResult(NULL);
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(ConfigVariable::getLastErrorMessage(), ConfigVariable::getLastErrorNumber(), e.getLocation());
         }
 
@@ -264,35 +470,64 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
         pValue->killMe();
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("Attempt to reference field of non-structure array.\n").c_str());
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const IfExp  &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+
     //Create local exec visitor
     ShortCutVisitor SCTest;
     bool bTestStatus = false;
 
     //condition
-    e.getTest().accept(SCTest);
-    e.getTest().accept(*this);
+    try
+    {
+        e.getTest().accept(SCTest);
+        e.getTest().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 
     bTestStatus = getResult()->isTrue();
     clearResult();
-    if (bTestStatus == true)
+    try
     {
-        e.getThen().accept(*this);
+        if (bTestStatus == true)
+        {
+            e.getThen().accept(*this);
+        }
+        else if (e.hasElse())
+        {
+            const ast::Exp & _else = e.getElse();
+            if (_else.isCommentExp())
+            {
+                CoverageInstance::invoke(_else);
+            }
+            else
+            {
+                e.getElse().accept(*this);
+            }
+        }
     }
-    else if (e.hasElse())
+    catch (ScilabException &)
     {
-        e.getElse().accept(*this);
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
     }
 
     if (e.isBreakable()
-            && ( (&e.getElse())->isBreak()
-                 || (&e.getThen())->isBreak() ))
+            && ((&e.getElse())->isBreak()
+                || (&e.getThen())->isBreak()))
     {
         const_cast<IfExp*>(&e)->setBreak();
         const_cast<Exp*>(&e.getElse())->resetBreak();
@@ -300,8 +535,8 @@ void RunVisitorT<T>::visitprivate(const IfExp  &e)
     }
 
     if (e.isContinuable()
-            && ( (&e.getElse())->isContinue()
-                 || (&e.getThen())->isContinue() ))
+            && ((&e.getElse())->isContinue()
+                || (&e.getThen())->isContinue()))
     {
         const_cast<IfExp*>(&e)->setContinue();
         const_cast<Exp*>(&e.getElse())->resetContinue();
@@ -309,33 +544,52 @@ void RunVisitorT<T>::visitprivate(const IfExp  &e)
     }
 
     if (e.isReturnable()
-            && ( (&e.getElse())->isReturn()
-                 || (&e.getThen())->isReturn() ))
+            && ((&e.getElse())->isReturn()
+                || (&e.getThen())->isReturn()))
     {
         const_cast<IfExp*>(&e)->setReturn();
         const_cast<Exp*>(&e.getElse())->resetReturn();
         const_cast<Exp*>(&e.getThen())->resetReturn();
     }
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const WhileExp  &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
 
     //Create local exec visitor
     ShortCutVisitor SCTest;
 
-    //manage & and | like && and ||
-    e.getTest().accept(SCTest);
-    //condition
-    e.getTest().accept(*this);
+    try
+    {
+        //manage & and | like && and ||
+        e.getTest().accept(SCTest);
+        //condition
+        e.getTest().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 
     types::InternalType* pIT = getResult();
 
     while (pIT->isTrue())
     {
         pIT->killMe();
-        e.getBody().accept(*this);
+        try
+        {
+            e.getBody().accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
 
         //clear old result value before evaluate new one
         if (getResult() != NULL)
@@ -361,21 +615,39 @@ void RunVisitorT<T>::visitprivate(const WhileExp  &e)
             const_cast<Exp*>(&(e.getBody()))->resetContinue();
         }
 
-        e.getTest().accept(*this);
+        try
+        {
+            e.getTest().accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
         pIT = getResult();
     }
 
     //pIT->killMe();
     //clear result of condition or result of body
     clearResult();
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const ForExp  &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     symbol::Context* ctx = symbol::Context::getInstance();
     //vardec visit increase its result reference
-    e.getVardec().accept(*this);
+    try
+    {
+        e.getVardec().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     types::InternalType* pIT = getResult();
 
     if (pIT->isImplicitList())
@@ -393,6 +665,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
         {
             std::wostringstream os;
             os << _W("Redefining permanent variable.\n");
+            CoverageInstance::stopChrono((void*)&e);
             throw ast::InternalError(os.str(), 999, e.getVardec().getLocation());
         }
 
@@ -430,6 +703,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
                         {
                             std::wostringstream os;
                             os << _W("Redefining permanent variable.\n");
+                            CoverageInstance::stopChrono((void*)&e);
                             throw ast::InternalError(os.str(), 999, e.getVardec().getLocation());
                         }
 
@@ -453,6 +727,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
                 pIT->killMe();
 
                 setResult(NULL);
+                CoverageInstance::stopChrono((void*)&e);
                 throw ie;
             }
 
@@ -493,6 +768,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
             {
                 std::wostringstream os;
                 os << _W("Redefining permanent variable.\n");
+                CoverageInstance::stopChrono((void*)&e);
                 throw ast::InternalError(os.str(), 999, e.getVardec().getLocation());
             }
             ctx->put(var, pNew);
@@ -507,6 +783,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
                 pIT->DecreaseRef();
                 pIT->killMe();
                 setResult(NULL);
+                CoverageInstance::stopChrono((void*)&e);
                 throw ie;
             }
 
@@ -538,6 +815,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
         {
             pIT->DecreaseRef();
             pIT->killMe();
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(_W("for expression can only manage 1 or 2 dimensions variables\n"), 999, e.getVardec().getLocation());
         }
 
@@ -549,6 +827,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
             {
                 pIT->DecreaseRef();
                 pIT->killMe();
+                CoverageInstance::stopChrono((void*)&e);
                 throw InternalError(_W("for expression : Wrong type for loop iterator.\n"), 999, e.getVardec().getLocation());
             }
 
@@ -556,6 +835,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
             {
                 std::wostringstream os;
                 os << _W("Redefining permanent variable.\n");
+                CoverageInstance::stopChrono((void*)&e);
                 throw InternalError(os.str(), 999, e.getVardec().getLocation());
             }
             ctx->put(var, pNew);
@@ -570,6 +850,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
                 pIT->DecreaseRef();
                 pIT->killMe();
                 setResult(NULL);
+                CoverageInstance::stopChrono((void*)&e);
                 throw ie;
             }
 
@@ -597,6 +878,7 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
     {
         pIT->DecreaseRef();
         pIT->killMe();
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(_W("for expression : Wrong type for loop iterator.\n"), 999, e.getVardec().getLocation());
     }
 
@@ -604,11 +886,13 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
     pIT->killMe();
 
     setResult(NULL);
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const ReturnExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     if (e.isGlobal())
     {
         if (ConfigVariable::getPauseLevel() != 0 && symbol::Context::getInstance()->getScopeLevel() == ConfigVariable::getActivePauseLevel())
@@ -616,11 +900,13 @@ void RunVisitorT<T>::visitprivate(const ReturnExp &e)
             if (ConfigVariable::getEnableDebug() == true)
             {
                 sciprint(_("%s: function is disabled in debug mode.\n"), "resume");
+                CoverageInstance::stopChrono((void*)&e);
                 return;
             }
 
             //return or resume
             ConfigVariable::DecreasePauseLevel();
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
         else
@@ -635,7 +921,15 @@ void RunVisitorT<T>::visitprivate(const ReturnExp &e)
         //in case of CallExp, we can return only one values
         int iSaveExpectedSize = getExpectedSize();
         setExpectedSize(1);
-        e.getExp().accept(*this);
+        try
+        {
+            e.getExp().accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
         setExpectedSize(iSaveExpectedSize);
         const_cast<ReturnExp*>(&e)->setReturn();
     }
@@ -644,6 +938,7 @@ void RunVisitorT<T>::visitprivate(const ReturnExp &e)
 template <class T>
 void RunVisitorT<T>::visitprivate(const IntSelectExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     bool found = false;
     //e.getSelect()->accept(*this);
     //InternalType* pIT = getResult();
@@ -714,14 +1009,32 @@ void RunVisitorT<T>::visitprivate(const IntSelectExp &e)
 
     if (!found)
     {
-        e.getOriginal()->accept(*this);
+        try
+        {
+            e.getOriginal()->accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const StringSelectExp &e)
 {
-    e.getSelect()->accept(*this);
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        e.getSelect()->accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     types::InternalType* pIT = getResult();
     setResult(nullptr);
     bool found = false;
@@ -764,6 +1077,7 @@ void RunVisitorT<T>::visitprivate(const StringSelectExp &e)
                     catch (const InternalError& ie)
                     {
                         pIT->killMe();
+                        CoverageInstance::stopChrono((void*)&e);
                         throw ie;
                     }
 
@@ -791,15 +1105,34 @@ void RunVisitorT<T>::visitprivate(const StringSelectExp &e)
 
     if (!found)
     {
-        e.getOriginal()->accept(*this);
+        try
+        {
+            e.getOriginal()->accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const SelectExp &e)
 {
     // FIXME : exec select ... case ... else ... end
-    e.getSelect()->accept(*this);
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        e.getSelect()->accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
+
     bool bCase = false;
 
     types::InternalType* pIT = getResult();
@@ -814,8 +1147,16 @@ void RunVisitorT<T>::visitprivate(const SelectExp &e)
         exps_t cases = e.getCases();
         for (auto exp : cases)
         {
-            CaseExp* pCase = exp->getAs<CaseExp>();
-            pCase->getTest()->accept(*this);
+            CaseExp * pCase = exp->getAs<CaseExp>();
+            try
+            {
+                pCase->getTest()->accept(*this);
+            }
+            catch (ScilabException &)
+            {
+                CoverageInstance::stopChrono((void*)&e);
+                throw;
+            }
             types::InternalType *pITCase = getResult();
             setResult(NULL);
             if (pITCase)
@@ -835,6 +1176,7 @@ void RunVisitorT<T>::visitprivate(const SelectExp &e)
                     {
                         pIT->DecreaseRef();
                         pIT->killMe();
+                        CoverageInstance::stopChrono((void*)&e);
                         throw ie;
                     }
 
@@ -880,6 +1222,7 @@ void RunVisitorT<T>::visitprivate(const SelectExp &e)
                 pIT->DecreaseRef();
                 pIT->killMe();
             }
+            CoverageInstance::stopChrono((void*)&e);
             throw ie;
         }
 
@@ -909,11 +1252,13 @@ void RunVisitorT<T>::visitprivate(const SelectExp &e)
         pIT->DecreaseRef();
         pIT->killMe();
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const SeqExp  &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     for (auto exp : e.getExps())
     {
         if (exp->isCommentExp())
@@ -999,7 +1344,7 @@ void RunVisitorT<T>::visitprivate(const SeqExp  &e)
                             ConfigVariable::setLastErrorFunction(pCall->getName());
                             ConfigVariable::setLastErrorLine(e.getLocation().first_line);
                         }
-
+                        CoverageInstance::stopChrono((void*)&e);
                         throw ie;
                     }
                 }
@@ -1061,6 +1406,7 @@ void RunVisitorT<T>::visitprivate(const SeqExp  &e)
         catch (const InternalError& ie)
         {
             ConfigVariable::fillWhereError(ie.GetErrorLocation().first_line);
+            CoverageInstance::stopChrono((void*)&e);
             throw ie;
         }
 
@@ -1068,15 +1414,26 @@ void RunVisitorT<T>::visitprivate(const SeqExp  &e)
         // to make a cleanup in visit(ForExp) for example (e.getBody().accept(*this);)
         setResult(NULL);
     }
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const NotExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     /*
       @ or ~ !
-    */
-    e.getExp().accept(*this);
+      */
+    try
+    {
+        e.getExp().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 
     types::InternalType * pValue = getResult();
     types::InternalType * pReturn = NULL;
@@ -1103,24 +1460,36 @@ void RunVisitorT<T>::visitprivate(const NotExp &e)
         if (Ret != types::Callable::OK)
         {
             cleanInOut(in, out);
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(ConfigVariable::getLastErrorMessage(), ConfigVariable::getLastErrorNumber(), e.getLocation());
         }
 
         setResult(out);
         cleanIn(in, out);
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const TransposeExp &e)
 {
-    e.getExp().accept(*this);
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        e.getExp().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 
     if (getResultSize() != 1)
     {
         clearResult();
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("%ls: Can not transpose multiple elements.\n").c_str(), L"Transpose");
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
 
@@ -1136,6 +1505,7 @@ void RunVisitorT<T>::visitprivate(const TransposeExp &e)
         }
 
         setResult(pReturn);
+        CoverageInstance::stopChrono((void*)&e);
 
         return;
     }
@@ -1161,22 +1531,26 @@ void RunVisitorT<T>::visitprivate(const TransposeExp &e)
         if (Ret != types::Callable::OK)
         {
             cleanInOut(in, out);
+            CoverageInstance::stopChrono((void*)&e);
             throw InternalError(ConfigVariable::getLastErrorMessage(), ConfigVariable::getLastErrorNumber(), e.getLocation());
         }
 
         setResult(out);
         cleanIn(in, out);
     }
+
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const FunctionDec & e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     symbol::Context* ctx = symbol::Context::getInstance();
     /*
       function foo
       endfunction
-    */
+      */
 
     // funcprot(0) : do nothing
     // funcprot(1) && warning(on) : warning
@@ -1245,6 +1619,7 @@ void RunVisitorT<T>::visitprivate(const FunctionDec & e)
         FREE(pstFuncName);
         FREE(pwstError);
         delete pMacro;
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(wstError, 999, e.getLocation());
     }
 
@@ -1254,17 +1629,27 @@ void RunVisitorT<T>::visitprivate(const FunctionDec & e)
         delete pMacro;
         std::wostringstream os;
         os << _W("Redefining permanent variable.\n");
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(os.str(), 999, e.getLocation());
     }
 
     ctx->addMacro(pMacro);
-
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const ListExp &e)
 {
-    e.getStart().accept(*this);
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        e.getStart().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     types::GenericType* pITStart = static_cast<types::GenericType*>(getResult());
     if ((pITStart->getSize() != 1 || (pITStart->isDouble() && pITStart->getAs<types::Double>()->isComplex())) &&
             pITStart->isList() == false) // list case => call overload
@@ -1273,11 +1658,20 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
         setResult(NULL);
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("%ls: Wrong type for argument %d: Real scalar expected.\n").c_str(), L"':'", 1);
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
     types::InternalType * piStart = pITStart;
 
-    e.getStep().accept(*this);
+    try
+    {
+        e.getStep().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     types::GenericType* pITStep = static_cast<types::GenericType*>(getResult());
     setResult(NULL);
     if ((pITStep->getSize() != 1 || (pITStep->isDouble() && pITStep->getAs<types::Double>()->isComplex())) &&
@@ -1288,11 +1682,21 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
         setResult(NULL);
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("%ls: Wrong type for argument %d: Real scalar expected.\n").c_str(), L"':'", 2);
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
     types::InternalType* piStep = pITStep;
 
-    e.getEnd().accept(*this);
+    try
+    {
+        e.getEnd().accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
+
     types::GenericType* pITEnd = static_cast<types::GenericType*>(getResult());
     setResult(NULL);
     if ((pITEnd->getSize() != 1 || (pITEnd->isDouble() && pITEnd->getAs<types::Double>()->isComplex())) &&
@@ -1304,6 +1708,7 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
         setResult(NULL);
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("%ls: Wrong type for argument %d: Real scalar expected.\n").c_str(), L"':'", 3);
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(szError, 999, e.getLocation());
     }
     types::InternalType* piEnd = pITEnd;
@@ -1330,6 +1735,7 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
     {
         // No need to kill piStart, ... because Implicit list ctor will incref them
         setResult(new types::ImplicitList(piStart, piStep, piEnd));
+        CoverageInstance::stopChrono((void*)&e);
         return;
     }
 
@@ -1345,6 +1751,7 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
         {
             // No need to kill piStart, ... because Implicit list ctor will incref them
             setResult(new types::ImplicitList(piStart, piStep, piEnd));
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
     }
@@ -1383,6 +1790,7 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
     {
         setResult(NULL);
         cleanInOut(in, out);
+        CoverageInstance::stopChrono((void*)&e);
         throw error;
     }
 
@@ -1390,11 +1798,13 @@ void RunVisitorT<T>::visitprivate(const ListExp &e)
     {
         setResult(NULL);
         cleanInOut(in, out);
+        CoverageInstance::stopChrono((void*)&e);
         throw InternalError(ConfigVariable::getLastErrorMessage(), ConfigVariable::getLastErrorNumber(), e.getLocation());
     }
 
     setResult(out);
     cleanIn(in, out);
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 template <class T>
@@ -1405,12 +1815,22 @@ void RunVisitorT<T>::visitprivate(const OptimizedExp &e)
 template <class T>
 void RunVisitorT<T>::visitprivate(const MemfillExp &e)
 {
-    e.getOriginal()->accept(*this);
+    CoverageInstance::invokeAndStartChrono((void*)&e);
+    try
+    {
+        e.getOriginal()->accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     types::InternalType* pIT = NULL;
     types::Double* ad = NULL;
     int ar = 0;
@@ -1428,7 +1848,16 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
 
     //y must be double
     const Exp &ye = e.getY();
-    ye.accept(*this);
+    try
+    {
+        ye.accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
+
     pIT = getResult();
     if (pIT->isDouble())
     {
@@ -1441,20 +1870,46 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
         else
         {
             yd->killMe();
-            e.getOriginal()->accept(*this);
+            try
+            {
+                e.getOriginal()->accept(*this);
+            }
+            catch (ScilabException &)
+            {
+                CoverageInstance::stopChrono((void*)&e);
+                throw;
+            }
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
     }
     else
     {
         pIT->killMe();
-        e.getOriginal()->accept(*this);
+        try
+        {
+            e.getOriginal()->accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
+        CoverageInstance::stopChrono((void*)&e);
         return;
     }
 
     //x
     const Exp &xe = e.getX();
-    xe.accept(*this);
+    try
+    {
+        xe.accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     pIT = getResult();
 
     if (pIT->isDouble())
@@ -1476,7 +1931,16 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
         {
             yd->killMe();
             xd->killMe();
-            e.getOriginal()->accept(*this);
+            try
+            {
+                e.getOriginal()->accept(*this);
+            }
+            catch (ScilabException &)
+            {
+                CoverageInstance::stopChrono((void*)&e);
+                throw;
+            }
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
     }
@@ -1484,12 +1948,29 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
     {
         pIT->killMe();
         yd->killMe();
-        e.getOriginal()->accept(*this);
+        try
+        {
+            e.getOriginal()->accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
+        CoverageInstance::stopChrono((void*)&e);
         return;
     }
 
     const Exp &ae = e.getA();
-    ae.accept(*this);
+    try
+    {
+        ae.accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
     pIT = getResult();
 
     if (pIT->isDouble())
@@ -1509,7 +1990,16 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
                 yd->killMe();
                 xd->killMe();
                 ad->killMe();
-                e.getOriginal()->accept(*this);
+                try
+                {
+                    e.getOriginal()->accept(*this);
+                }
+                catch (ScilabException &)
+                {
+                    CoverageInstance::stopChrono((void*)&e);
+                    throw;
+                }
+                CoverageInstance::stopChrono((void*)&e);
                 return;
             }
         }
@@ -1527,7 +2017,16 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
                 yd->killMe();
                 xd->killMe();
                 ad->killMe();
-                e.getOriginal()->accept(*this);
+                try
+                {
+                    e.getOriginal()->accept(*this);
+                }
+                catch (ScilabException &)
+                {
+                    CoverageInstance::stopChrono((void*)&e);
+                    throw;
+                }
+                throw;
                 return;
             }
         }
@@ -1537,13 +2036,22 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
         pIT->killMe();
         yd->killMe();
         xd->killMe();
-        e.getOriginal()->accept(*this);
+        try
+        {
+            e.getOriginal()->accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
+        CoverageInstance::stopChrono((void*)&e);
         return;
     }
 
     if (ad && xd && yd)
     {
-        if ( ac == 1 &&
+        if (ac == 1 &&
                 ar == 1 &&
                 xr == yr &&
                 xc == yc)
@@ -1557,6 +2065,7 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
             //yd->killMe();
             xd->killMe();
             ad->killMe();
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
         else if (ac == xr && ar == yr && xc == yc)
@@ -1566,6 +2075,7 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
             C2F(dgemm)(&n, &n, &ar, &xc, &ac, &one, ad->get(), &ar, xd->get(), &ac, &one, yd->get(), &ar);
             xd->killMe();
             ad->killMe();
+            CoverageInstance::stopChrono((void*)&e);
             return;
         }
     }
@@ -1585,13 +2095,24 @@ void RunVisitorT<T>::visitprivate(const DAXPYExp &e)
         ad->killMe();
     }
 
-    e.getOriginal()->accept(*this);
+    try
+    {
+        e.getOriginal()->accept(*this);
+    }
+    catch (ScilabException &)
+    {
+        CoverageInstance::stopChrono((void*)&e);
+        throw;
+    }
+    CoverageInstance::stopChrono((void*)&e);
+
     return;
 }
 
 template <class T>
 void RunVisitorT<T>::visitprivate(const TryCatchExp  &e)
 {
+    CoverageInstance::invokeAndStartChrono((void*)&e);
     //save current prompt mode
     int oldVal = ConfigVariable::getSilentError();
     int oldMode = ConfigVariable::getPromptMode();
@@ -1629,6 +2150,7 @@ void RunVisitorT<T>::visitprivate(const TryCatchExp  &e)
             //print msg about recursion limit and trigger an error
             wchar_t sz[1024];
             os_swprintf(sz, 1024, _W("Recursion limit reached (%d).\n").data(), ConfigVariable::getRecursionLimit());
+            CoverageInstance::stopChrono((void*)&e);
             throw ast::InternalError(sz);
         }
 
@@ -1641,8 +2163,17 @@ void RunVisitorT<T>::visitprivate(const TryCatchExp  &e)
         ConfigVariable::setLastErrorCall();
         // reset call stack filled when error occured
         ConfigVariable::resetWhereError();
-        e.getCatch().accept(*this);
+        try
+        {
+            e.getCatch().accept(*this);
+        }
+        catch (ScilabException &)
+        {
+            CoverageInstance::stopChrono((void*)&e);
+            throw;
+        }
     }
+    CoverageInstance::stopChrono((void*)&e);
 }
 
 
index 8f02872..fec2466 100644 (file)
@@ -267,6 +267,11 @@ int Context::getFunctionList(std::list<Symbol>& lst, const std::wstring& _stModu
     return variables.getFunctionList(lst, _stModuleName, m_iLevel);
 }
 
+int Context::getFunctionList(std::list<types::Callable *> & lst, std::wstring _stModuleName)
+{
+    return variables.getFunctionList(lst, _stModuleName, m_iLevel);
+}
+
 int Context::getConsoleVarsName(std::list<std::wstring>& lst)
 {
     if (console)
index 77aeade..03a25f4 100644 (file)
@@ -343,6 +343,28 @@ int Variables::getFunctionList(std::list<Symbol>& lst, std::wstring _stModuleNam
     return static_cast<int>(lst.size());
 }
 
+int Variables::getFunctionList(std::list<types::Callable *>& lst, std::wstring _stModuleName, int _iLevel)
+{
+    for (auto var : vars)
+    {
+       if (var.second->empty())
+       {
+           continue;
+       }
+       
+       if ((var.second->top()->m_iLevel == _iLevel || _iLevel == 1) && var.second->top()->m_pIT->isCallable())
+       {
+           types::Callable * pCall = var.second->top()->m_pIT->getAs<types::Callable>();
+           if (_stModuleName == L"" || _stModuleName == pCall->getModule())
+           {
+               lst.push_back(pCall);
+           }
+       }
+    }
+    
+    return static_cast<int>(lst.size());
+}
+
 int Variables::getVarsToVariableBrowser(std::list<Variable*>& lst)
 {
     for (auto var : vars)
@@ -441,4 +463,4 @@ void Variables::clearAll()
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/scilab/modules/ast/src/cpp/system_env/coverage_instance.cpp b/scilab/modules/ast/src/cpp/system_env/coverage_instance.cpp
new file mode 100644 (file)
index 0000000..8257ecc
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+*  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+*  Copyright (C) 2015 - 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-en.txt
+*
+*/
+
+#include "coverage_instance.hxx"
+
+namespace ast
+{
+//coverage
+void* CoverageInstance::coverage = nullptr;
+}
\ No newline at end of file
index ad593b0..e33bfae 100644 (file)
@@ -66,7 +66,6 @@ CORE_FORTRAN_SOURCES = \
        src/fortran/read_inter.f
 
 GATEWAY_C_SOURCES = \
-       sci_gateway/c/sci_type.c \
        sci_gateway/c/sci_getdebuginfo.c
 
 GATEWAY_CPP_SOURCES = \
@@ -110,7 +109,8 @@ GATEWAY_CPP_SOURCES = \
        sci_gateway/cpp/sci_macr2tree.cpp \
        sci_gateway/cpp/sci_predef.cpp \
        sci_gateway/cpp/sci_debug.cpp \
-       sci_gateway/cpp/sci_recursionlimit.cpp
+       sci_gateway/cpp/sci_recursionlimit.cpp \
+       sci_gateway/cpp/sci_type.cpp
 
 libscicore_la_CPPFLAGS = \
     -I$(srcdir)/includes/ \
index 0eb01ca..935177b 100644 (file)
@@ -243,8 +243,7 @@ am__v_lt_1 =
 @MAINTAINER_MODE_TRUE@am_libscicore_algo_la_rpath =
 am__DEPENDENCIES_1 =
 libscicore_la_DEPENDENCIES = libscicore-algo.la $(am__DEPENDENCIES_1)
-am__objects_4 = sci_gateway/c/libscicore_la-sci_type.lo \
-       sci_gateway/c/libscicore_la-sci_getdebuginfo.lo
+am__objects_4 = sci_gateway/c/libscicore_la-sci_getdebuginfo.lo
 am__objects_5 = sci_gateway/cpp/libscicore_la-core_gw.lo \
        sci_gateway/cpp/libscicore_la-sci_getmodules.lo \
        sci_gateway/cpp/libscicore_la-sci_clear.lo \
@@ -285,7 +284,8 @@ am__objects_5 = sci_gateway/cpp/libscicore_la-core_gw.lo \
        sci_gateway/cpp/libscicore_la-sci_macr2tree.lo \
        sci_gateway/cpp/libscicore_la-sci_predef.lo \
        sci_gateway/cpp/libscicore_la-sci_debug.lo \
-       sci_gateway/cpp/libscicore_la-sci_recursionlimit.lo
+       sci_gateway/cpp/libscicore_la-sci_recursionlimit.lo \
+       sci_gateway/cpp/libscicore_la-sci_type.lo
 am_libscicore_la_OBJECTS = $(am__objects_4) $(am__objects_5)
 libscicore_la_OBJECTS = $(am_libscicore_la_OBJECTS)
 libscicore_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
@@ -739,7 +739,6 @@ CORE_FORTRAN_SOURCES = \
        src/fortran/read_inter.f
 
 GATEWAY_C_SOURCES = \
-       sci_gateway/c/sci_type.c \
        sci_gateway/c/sci_getdebuginfo.c
 
 GATEWAY_CPP_SOURCES = \
@@ -783,7 +782,8 @@ GATEWAY_CPP_SOURCES = \
        sci_gateway/cpp/sci_macr2tree.cpp \
        sci_gateway/cpp/sci_predef.cpp \
        sci_gateway/cpp/sci_debug.cpp \
-       sci_gateway/cpp/sci_recursionlimit.cpp
+       sci_gateway/cpp/sci_recursionlimit.cpp \
+       sci_gateway/cpp/sci_type.cpp
 
 libscicore_la_CPPFLAGS = -I$(srcdir)/includes/ -I$(srcdir)/src/c/ \
        -I$(srcdir)/src/cpp/ -I$(top_srcdir)/modules/ast/includes/ast/ \
@@ -1171,9 +1171,6 @@ sci_gateway/c/$(am__dirstamp):
 sci_gateway/c/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) sci_gateway/c/$(DEPDIR)
        @: > sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
-sci_gateway/c/libscicore_la-sci_type.lo:  \
-       sci_gateway/c/$(am__dirstamp) \
-       sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
 sci_gateway/c/libscicore_la-sci_getdebuginfo.lo:  \
        sci_gateway/c/$(am__dirstamp) \
        sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
@@ -1306,6 +1303,9 @@ sci_gateway/cpp/libscicore_la-sci_debug.lo:  \
 sci_gateway/cpp/libscicore_la-sci_recursionlimit.lo:  \
        sci_gateway/cpp/$(am__dirstamp) \
        sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libscicore_la-sci_type.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
 
 libscicore.la: $(libscicore_la_OBJECTS) $(libscicore_la_DEPENDENCIES) $(EXTRA_libscicore_la_DEPENDENCIES) 
        $(AM_V_CXXLD)$(libscicore_la_LINK) $(am_libscicore_la_rpath) $(libscicore_la_OBJECTS) $(libscicore_la_LIBADD) $(LIBS)
@@ -1329,7 +1329,6 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscicore_la-sci_getdebuginfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscicore_la-sci_type.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-core_gw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_abort.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_analyzeroptions.Plo@am__quote@
@@ -1365,6 +1364,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_quit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_recursionlimit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_sciargs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_type.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_typename.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_warning.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_what.Plo@am__quote@
@@ -1648,13 +1648,6 @@ src/c/libscicore_algo_la-InitializePreferences.lo: src/c/InitializePreferences.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscicore_algo_la-InitializePreferences.lo `test -f 'src/c/InitializePreferences.c' || echo '$(srcdir)/'`src/c/InitializePreferences.c
 
-sci_gateway/c/libscicore_la-sci_type.lo: sci_gateway/c/sci_type.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscicore_la-sci_type.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscicore_la-sci_type.Tpo -c -o sci_gateway/c/libscicore_la-sci_type.lo `test -f 'sci_gateway/c/sci_type.c' || echo '$(srcdir)/'`sci_gateway/c/sci_type.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscicore_la-sci_type.Tpo sci_gateway/c/$(DEPDIR)/libscicore_la-sci_type.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sci_gateway/c/sci_type.c' object='sci_gateway/c/libscicore_la-sci_type.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscicore_la-sci_type.lo `test -f 'sci_gateway/c/sci_type.c' || echo '$(srcdir)/'`sci_gateway/c/sci_type.c
-
 sci_gateway/c/libscicore_la-sci_getdebuginfo.lo: sci_gateway/c/sci_getdebuginfo.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscicore_la-sci_getdebuginfo.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscicore_la-sci_getdebuginfo.Tpo -c -o sci_gateway/c/libscicore_la-sci_getdebuginfo.lo `test -f 'sci_gateway/c/sci_getdebuginfo.c' || echo '$(srcdir)/'`sci_gateway/c/sci_getdebuginfo.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscicore_la-sci_getdebuginfo.Tpo sci_gateway/c/$(DEPDIR)/libscicore_la-sci_getdebuginfo.Plo
@@ -2057,6 +2050,13 @@ sci_gateway/cpp/libscicore_la-sci_recursionlimit.lo: sci_gateway/cpp/sci_recursi
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicore_la-sci_recursionlimit.lo `test -f 'sci_gateway/cpp/sci_recursionlimit.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_recursionlimit.cpp
 
+sci_gateway/cpp/libscicore_la-sci_type.lo: sci_gateway/cpp/sci_type.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscicore_la-sci_type.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_type.Tpo -c -o sci_gateway/cpp/libscicore_la-sci_type.lo `test -f 'sci_gateway/cpp/sci_type.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_type.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_type.Tpo sci_gateway/cpp/$(DEPDIR)/libscicore_la-sci_type.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_type.cpp' object='sci_gateway/cpp/libscicore_la-sci_type.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicore_la-sci_type.lo `test -f 'sci_gateway/cpp/sci_type.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_type.cpp
+
 .f.o:
        $(AM_V_F77)$(F77COMPILE) -c -o $@ $<
 
index b891f78..0bdc11f 100644 (file)
@@ -71,5 +71,6 @@ CPP_GATEWAY_PROTOTYPE(sci_macr2tree);
 CPP_GATEWAY_PROTOTYPE(sci_predef);
 CPP_GATEWAY_PROTOTYPE(sci_debug);
 CPP_GATEWAY_PROTOTYPE(sci_recursionlimit);
+CPP_GATEWAY_PROTOTYPE(sci_type);
 
 #endif /* __CORE_GW_HXX__ */
index 8be409b..7d39751 100644 (file)
@@ -53,7 +53,6 @@ int C2F(sci_funcprot)(char *fname, void* pvApiCtx);
 //int C2F(sci_newfun)(char *fname, void* pvApiCtx); -> C++
 
 //Scilab 6
-C_GATEWAY_PROTOTYPE(sci_type);
 C_GATEWAY_PROTOTYPE(sci_getdebuginfo);
 /*--------------------------------------------------------------------------*/
 #endif /*  __GW_CORE__ */
diff --git a/scilab/modules/core/sci_gateway/c/sci_type.c b/scilab/modules/core/sci_gateway/c/sci_type.c
deleted file mode 100644 (file)
index c90c104..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2006 - INRIA - Allan CORNET
- * 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 "gw_core.h"
-#include "api_scilab.h"
-/*--------------------------------------------------------------------------*/
-int sci_type(char *fname, void* pvApiCtx)
-{
-    SciErr sciErr;
-    int* piAddr        = NULL;
-    int iType          = 0;
-    int iRet = 0;
-
-    CheckRhs(1, 1);
-    CheckLhs(1, 1);
-
-    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        return 0;
-    }
-
-    sciErr = getVarType(pvApiCtx, piAddr, &iType);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        return 0;
-    }
-
-    iRet = createMatrixOfDoubleFromInteger(pvApiCtx, Rhs + 1, 1, 1, &iType);
-    if (iRet)
-    {
-        return 0;
-    }
-
-    LhsVar(1) = Rhs + 1;
-    PutLhsVar();
-    return 0;
-}
-/*--------------------------------------------------------------------------*/
index 575ee7f..c2e39e7 100644 (file)
     <ClCompile Include="sci_recursionlimit.cpp" />
     <ClCompile Include="sci_sciargs.cpp" />
     <ClCompile Include="..\c\sci_getdebuginfo.c" />
-    <ClCompile Include="..\c\sci_type.c" />
     <ClCompile Include="core_gw.cpp" />
     <ClCompile Include="sci_abort.cpp" />
     <ClCompile Include="sci_argn.cpp" />
     <ClCompile Include="sci_pause.cpp" />
     <ClCompile Include="sci_quit.cpp" />
     <ClCompile Include="sci_debug.cpp" />
+    <ClCompile Include="sci_type.cpp" />
     <ClCompile Include="sci_typename.cpp" />
     <ClCompile Include="sci_warning.cpp" />
     <ClCompile Include="sci_what.cpp" />
index 3e1f833..37daf7a 100644 (file)
     <ClCompile Include="sci_macr2tree.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\c\sci_type.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="sci_predef.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="sci_what.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="sci_type.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\includes\banner.hxx">
diff --git a/scilab/modules/core/sci_gateway/cpp/sci_type.cpp b/scilab/modules/core/sci_gateway/cpp/sci_type.cpp
new file mode 100644 (file)
index 0000000..8944358
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ *  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-en.txt
+ *
+ */
+
+#include "internal.hxx"
+#include "double.hxx"
+#include "core_gw.hxx"
+#include "function.hxx"
+#include "overload.hxx"
+#include "string.hxx"
+#include "context.hxx"
+
+extern "C" {
+#include "Scierror.h"
+#include "localization.h"
+#include "sci_types.h"
+}
+
+types::Function::ReturnValue sci_type(types::typed_list &in, int _iRetCount, types::typed_list &out)
+{
+    if (in.size() != 1)
+    {
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "type", 1);
+        return types::Function::Error;
+    }
+
+    int type;
+    switch (in[0]->getType())
+    {
+        case types::InternalType::ScilabDouble :
+            type = sci_matrix;
+            break;
+        case types::InternalType::ScilabPolynom :
+            type = sci_poly;
+            break;
+        case types::InternalType::ScilabBool :
+            type = sci_boolean;
+            break;
+        case types::InternalType::ScilabSparse :
+            type = sci_sparse;
+            break;
+        case types::InternalType::ScilabSparseBool :
+            type = sci_boolean_sparse;
+            break;
+        //case types::InternalType::RealMatlabSparse :
+        //    *_piType = sci_matlab_sparse;
+        //    break;
+        case types::InternalType::ScilabInt8 :
+        case types::InternalType::ScilabUInt8 :
+        case types::InternalType::ScilabInt16 :
+        case types::InternalType::ScilabUInt16 :
+        case types::InternalType::ScilabInt32 :
+        case types::InternalType::ScilabUInt32 :
+        case types::InternalType::ScilabInt64 :
+        case types::InternalType::ScilabUInt64 :
+            type = sci_ints;
+            break;
+        case types::InternalType::ScilabHandle :
+            type = sci_handles;
+            break;
+        case types::InternalType::ScilabString :
+            type = sci_strings;
+            break;
+        case types::InternalType::ScilabMacroFile :
+            type = sci_u_function;
+            break;
+        case types::InternalType::ScilabMacro :
+            type = sci_c_function;
+            break;
+        case types::InternalType::ScilabList :
+            type = sci_list;
+            break;
+        case types::InternalType::ScilabCell :
+            type = sci_mlist;
+            break;
+        case types::InternalType::ScilabTList :
+            type = sci_tlist;
+            break;
+        case types::InternalType::ScilabMList :
+            type = sci_mlist;
+            break;
+        case types::InternalType::ScilabStruct :
+            // Scilab < 6 compatibility... Struct have type 17;
+            type = sci_mlist;
+            break;
+        case types::InternalType::ScilabUserType :
+            type = sci_pointer;
+            break;
+        case types::InternalType::ScilabColon :
+        case types::InternalType::ScilabImplicitList :
+            type = sci_implicit_poly;
+            break;
+        case types::InternalType::ScilabFunction:
+            type = sci_intrinsic_function;
+            break;
+        case types::InternalType::ScilabLibrary:
+            type = sci_lib;
+            break;
+        default:
+            type = 0;
+    }
+
+    out.push_back(new types::Double((double)type));
+    return types::Function::OK;
+}
diff --git a/scilab/modules/coverage/Makefile.am b/scilab/modules/coverage/Makefile.am
new file mode 100644 (file)
index 0000000..427de79
--- /dev/null
@@ -0,0 +1,85 @@
+##
+##  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+##  Copyright (C) 2007-2008 - DIGITEO - Bruno JOFRET
+##  Copyright (C) 2007-2008 - DIGITEO - 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-en.txt
+##
+##
+
+#### Target ######
+modulename=coverage
+
+####io : init scripts ####
+libscicoverage_la_etcdir = $(mydatadir)/etc
+libscicoverage_la_etc_DATA = \
+    etc/coverage.quit \
+    etc/coverage.start
+
+include $(top_srcdir)/Makefile.incl.am
+
+COVERAGE_CXX_SOURCES = \
+    src/cpp/CoverModule.cpp \
+    src/cpp/InstrumentVisitor.cpp \
+    src/cpp/CoverResult.cpp \
+    src/cpp/CodePrinterVisitor.cpp \
+    src/cpp/CovHTMLCodePrinter.cpp \
+    src/cpp/CoverMacroInfo.cpp \
+    src/cpp/URLEncoder.cpp \
+    src/cpp/CoverModule_interface.cpp
+
+GATEWAY_CXX_SOURCES = \
+    sci_gateway/cpp/sci_covStart.cpp \
+    sci_gateway/cpp/sci_covWrite.cpp \
+    sci_gateway/cpp/sci_covStop.cpp \
+    sci_gateway/cpp/sci_covMerge.cpp
+
+libscicoverage_la_CPPFLAGS = \
+    -I$(srcdir)/includes/ \
+    -I$(srcdir)/src/cpp/ \
+    -I$(top_srcdir)/modules/ast/includes/ast/ \
+    -I$(top_srcdir)/modules/ast/includes/exps/ \
+    -I$(top_srcdir)/modules/ast/includes/analysis/ \
+    -I$(top_srcdir)/modules/ast/includes/operations/ \
+    -I$(top_srcdir)/modules/ast/includes/parse/ \
+    -I$(top_srcdir)/modules/ast/includes/symbol/ \
+    -I$(top_srcdir)/modules/ast/includes/system_env/ \
+    -I$(top_srcdir)/modules/ast/includes/types/ \
+    -I$(top_srcdir)/modules/core/includes/ \
+    -I$(top_srcdir)/modules/console/includes/ \
+    -I$(top_srcdir)/modules/api_scilab/includes/ \
+    -I$(top_srcdir)/modules/localization/includes/ \
+    -I$(top_srcdir)/modules/output_stream/includes/ \
+    -I$(top_srcdir)/modules/string/includes/ \
+    -I$(top_srcdir)/modules/fileio/includes/ \
+    -I$(top_srcdir)/modules/fileio/src/c/ \
+    -I$(top_srcdir)/modules/string/includes/ \
+    -I$(top_srcdir)/modules/dynamic_link/includes \
+    -I$(top_srcdir)/modules/threads/includes/ \
+    $(XML_FLAGS) \
+    $(COVERAGE_FLAGS) \
+    $(AM_CPPFLAGS)
+
+pkglib_LTLIBRARIES = libscicoverage.la
+noinst_LTLIBRARIES = libscicoverage-algo.la
+
+libscicoverage_algo_la_SOURCES = $(COVERAGE_CXX_SOURCES)
+libscicoverage_la_SOURCES = $(GATEWAY_CXX_SOURCES)
+libscicoverage_algo_la_CPPFLAGS = $(libscicoverage_la_CPPFLAGS)
+
+libscicoverage_la_LDFLAGS = $(AM_LDFLAGS)
+libscicoverage_la_LIBADD = libscicoverage-algo.la $(XML_LIBS)
+
+# For the code check (splint)
+INCLUDE_FLAGS = $(libscicoverage_la_CPPFLAGS)
+
+#### coverage : include files ####
+libscicoverage_la_includedir=$(pkgincludedir)
+
+#### coverage : gateway declaration ####
+libscicoverage_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscicoverage_la_sci_gateway_DATA = sci_gateway/coverage_gateway.xml
diff --git a/scilab/modules/coverage/Makefile.in b/scilab/modules/coverage/Makefile.in
new file mode 100644 (file)
index 0000000..8ac1fc1
--- /dev/null
@@ -0,0 +1,1447 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008      - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution.  The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@NEED_JAVA_TRUE@am__append_1 = java
+subdir = modules/coverage
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
+       $(top_srcdir)/m4/backtrace.m4 $(top_srcdir)/m4/compiler.m4 \
+       $(top_srcdir)/m4/curl.m4 $(top_srcdir)/m4/docbook.m4 \
+       $(top_srcdir)/m4/doxygen.m4 $(top_srcdir)/m4/eigen.m4 \
+       $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+       $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+       $(top_srcdir)/m4/intel_compiler.m4 \
+       $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+       $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+       $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+       $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+       $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+       $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+       $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+       "$(DESTDIR)$(libscicoverage_la_etcdir)" \
+       "$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libscicoverage_algo_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/cpp/libscicoverage_algo_la-CoverModule.lo \
+       src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo \
+       src/cpp/libscicoverage_algo_la-CoverResult.lo \
+       src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo \
+       src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo \
+       src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo \
+       src/cpp/libscicoverage_algo_la-URLEncoder.lo \
+       src/cpp/libscicoverage_algo_la-CoverModule_interface.lo
+am_libscicoverage_algo_la_OBJECTS = $(am__objects_1)
+libscicoverage_algo_la_OBJECTS = $(am_libscicoverage_algo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am__DEPENDENCIES_1 =
+libscicoverage_la_DEPENDENCIES = libscicoverage-algo.la \
+       $(am__DEPENDENCIES_1)
+am__objects_2 = sci_gateway/cpp/libscicoverage_la-sci_covStart.lo \
+       sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo \
+       sci_gateway/cpp/libscicoverage_la-sci_covStop.lo \
+       sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo
+am_libscicoverage_la_OBJECTS = $(am__objects_2)
+libscicoverage_la_OBJECTS = $(am_libscicoverage_la_OBJECTS)
+libscicoverage_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+       $(AM_CXXFLAGS) $(CXXFLAGS) $(libscicoverage_la_LDFLAGS) \
+       $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libscicoverage_algo_la_SOURCES) \
+       $(libscicoverage_la_SOURCES)
+DIST_SOURCES = $(libscicoverage_algo_la_SOURCES) \
+       $(libscicoverage_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(libscicoverage_la_etc_DATA) \
+       $(libscicoverage_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.incl.am \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_LINGUAS_DOC = @ALL_LINGUAS_DOC@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANT = @ANT@
+ANTLR = @ANTLR@
+AR = @AR@
+ARPACK_LIBS = @ARPACK_LIBS@
+ASM3 = @ASM3@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVALON_FRAMEWORK = @AVALON_FRAMEWORK@
+AWK = @AWK@
+BATIK = @BATIK@
+BLAS_LIBS = @BLAS_LIBS@
+CC = @CC@
+CCACHE = @CCACHE@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKSTYLE = @CHECKSTYLE@
+COBERTURA = @COBERTURA@
+COMMONS_BEANUTILS = @COMMONS_BEANUTILS@
+COMMONS_IO = @COMMONS_IO@
+COMMONS_LOGGING = @COMMONS_LOGGING@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CURL_LIBS = @CURL_LIBS@
+CURL_VERSION = @CURL_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEMOTOOLS_ENABLE = @DEMOTOOLS_ENABLE@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+DOXYGEN_BIN = @DOXYGEN_BIN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ = @ECJ@
+EGREP = @EGREP@
+EIGEN_CPPFLAGS = @EIGEN_CPPFLAGS@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTW3_LIB = @FFTW3_LIB@
+FFTW_ENABLE = @FFTW_ENABLE@
+FGREP = @FGREP@
+FLEXDOCK = @FLEXDOCK@
+FLIBS = @FLIBS@
+FOP = @FOP@
+FREEHEP_GRAPHICS2D = @FREEHEP_GRAPHICS2D@
+FREEHEP_GRAPHICSIO = @FREEHEP_GRAPHICSIO@
+FREEHEP_GRAPHICSIO_EMF = @FREEHEP_GRAPHICSIO_EMF@
+FREEHEP_IO = @FREEHEP_IO@
+FREEHEP_UTIL = @FREEHEP_UTIL@
+GENHTML = @GENHTML@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GIWS_BIN = @GIWS_BIN@
+GLUEGEN2_RT = @GLUEGEN2_RT@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GRAPHICS_ENABLE = @GRAPHICS_ENABLE@
+GREP = @GREP@
+GUI_ENABLE = @GUI_ENABLE@
+HAMCREST = @HAMCREST@
+HAVE_CXX11 = @HAVE_CXX11@
+HDF5_CFLAGS = @HDF5_CFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+HELP_ENABLE = @HELP_ENABLE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAC_DEBUG = @JAVAC_DEBUG@
+JAVADOC = @JAVADOC@
+JAVAH = @JAVAH@
+JAVASCI_ENABLE = @JAVASCI_ENABLE@
+JAVA_ENABLE = @JAVA_ENABLE@
+JAVA_G = @JAVA_G@
+JAVA_HOME = @JAVA_HOME@
+JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
+JAVA_JNI_LIBS = @JAVA_JNI_LIBS@
+JDB = @JDB@
+JEUCLID_CORE = @JEUCLID_CORE@
+JGRAPHX = @JGRAPHX@
+JHALL = @JHALL@
+JLATEXMATH = @JLATEXMATH@
+JLATEXMATH_FOP = @JLATEXMATH_FOP@
+JOGL2 = @JOGL2@
+JROSETTA_API = @JROSETTA_API@
+JROSETTA_ENGINE = @JROSETTA_ENGINE@
+JUNIT4 = @JUNIT4@
+LAPACK_LIBS = @LAPACK_LIBS@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOGGING_LEVEL = @LOGGING_LEVEL@
+LOOKS = @LOOKS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MATIO_CFLAGS = @MATIO_CFLAGS@
+MATIO_ENABLE = @MATIO_ENABLE@
+MATIO_LIBS = @MATIO_LIBS@
+MKDIR_P = @MKDIR_P@
+MPI_ENABLE = @MPI_ENABLE@
+MSGCAT = @MSGCAT@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLDEP = @OCAMLDEP@
+OCAMLLEX = @OCAMLLEX@
+OCAMLOPT = @OCAMLOPT@
+OCAMLYACC = @OCAMLYACC@
+OPENMPI_CC = @OPENMPI_CC@
+OPENMPI_CFLAGS = @OPENMPI_CFLAGS@
+OPENMPI_CXX = @OPENMPI_CXX@
+OPENMPI_CXXFLAGS = @OPENMPI_CXXFLAGS@
+OPENMPI_LIBS = @OPENMPI_LIBS@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
+OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@
+OPENMP_ENABLE = @OPENMP_ENABLE@
+OPENMP_LIBS = @OPENMP_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_CONFIG = @PCRE_CONFIG@
+PCRE_LIBS = @PCRE_LIBS@
+PCRE_VERSION = @PCRE_VERSION@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+RELOCATABLE = @RELOCATABLE@
+RT_LIB = @RT_LIB@
+SAXON = @SAXON@
+SCILAB_BINARY_VERSION = @SCILAB_BINARY_VERSION@
+SCILAB_LIBRARY_VERSION = @SCILAB_LIBRARY_VERSION@
+SCILAB_VERSION_MAINTENANCE = @SCILAB_VERSION_MAINTENANCE@
+SCILAB_VERSION_MAJOR = @SCILAB_VERSION_MAJOR@
+SCILAB_VERSION_MINOR = @SCILAB_VERSION_MINOR@
+SCIRENDERER = @SCIRENDERER@
+SCIRENDERER_CP = @SCIRENDERER_CP@
+SCI_CFLAGS = @SCI_CFLAGS@
+SCI_CXXFLAGS = @SCI_CXXFLAGS@
+SCI_FFLAGS = @SCI_FFLAGS@
+SCI_LDFLAGS = @SCI_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SET_RELOCATABLE = @SET_RELOCATABLE@
+SHELL = @SHELL@
+SKINLF = @SKINLF@
+SPLINT = @SPLINT@
+STRIP = @STRIP@
+SWIG_BIN = @SWIG_BIN@
+SWIG_JAVA = @SWIG_JAVA@
+SWIG_RUNTIME_LIBS_DIR = @SWIG_RUNTIME_LIBS_DIR@
+SWIG_SCILAB = @SWIG_SCILAB@
+TCLTK_LIBS = @TCLTK_LIBS@
+TCL_INC_PATH = @TCL_INC_PATH@
+TK_INC_PATH = @TK_INC_PATH@
+UMFPACK_CFLAGS = @UMFPACK_CFLAGS@
+UMFPACK_ENABLE = @UMFPACK_ENABLE@
+UMFPACK_LIB = @UMFPACK_LIB@
+USE_NLS = @USE_NLS@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VERSION = @VERSION@
+WITH_OCAML = @WITH_OCAML@
+WITH_TKSCI = @WITH_TKSCI@
+XCOS_ENABLE = @XCOS_ENABLE@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XMKMF = @XMKMF@
+XMLGRAPHICS_COMMONS = @XMLGRAPHICS_COMMONS@
+XML_APIS_EXT = @XML_APIS_EXT@
+XML_CONFIG = @XML_CONFIG@
+XML_FLAGS = @XML_FLAGS@
+XML_LIBS = @XML_LIBS@
+XML_VERSION = @XML_VERSION@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cxx_present = @cxx_present@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+yacc_present = @yacc_present@
+
+#### Target ######
+modulename = coverage
+
+####io : init scripts ####
+libscicoverage_la_etcdir = $(mydatadir)/etc
+libscicoverage_la_etc_DATA = \
+    etc/coverage.quit \
+    etc/coverage.start
+
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_1)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED  AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+COVERAGE_CXX_SOURCES = \
+    src/cpp/CoverModule.cpp \
+    src/cpp/InstrumentVisitor.cpp \
+    src/cpp/CoverResult.cpp \
+    src/cpp/CodePrinterVisitor.cpp \
+    src/cpp/CovHTMLCodePrinter.cpp \
+    src/cpp/CoverMacroInfo.cpp \
+    src/cpp/URLEncoder.cpp \
+    src/cpp/CoverModule_interface.cpp
+
+GATEWAY_CXX_SOURCES = \
+    sci_gateway/cpp/sci_covStart.cpp \
+    sci_gateway/cpp/sci_covWrite.cpp \
+    sci_gateway/cpp/sci_covStop.cpp \
+    sci_gateway/cpp/sci_covMerge.cpp
+
+libscicoverage_la_CPPFLAGS = \
+    -I$(srcdir)/includes/ \
+    -I$(srcdir)/src/cpp/ \
+    -I$(top_srcdir)/modules/ast/includes/ast/ \
+    -I$(top_srcdir)/modules/ast/includes/exps/ \
+    -I$(top_srcdir)/modules/ast/includes/analysis/ \
+    -I$(top_srcdir)/modules/ast/includes/operations/ \
+    -I$(top_srcdir)/modules/ast/includes/parse/ \
+    -I$(top_srcdir)/modules/ast/includes/symbol/ \
+    -I$(top_srcdir)/modules/ast/includes/system_env/ \
+    -I$(top_srcdir)/modules/ast/includes/types/ \
+    -I$(top_srcdir)/modules/core/includes/ \
+    -I$(top_srcdir)/modules/console/includes/ \
+    -I$(top_srcdir)/modules/api_scilab/includes/ \
+    -I$(top_srcdir)/modules/localization/includes/ \
+    -I$(top_srcdir)/modules/output_stream/includes/ \
+    -I$(top_srcdir)/modules/string/includes/ \
+    -I$(top_srcdir)/modules/fileio/includes/ \
+    -I$(top_srcdir)/modules/fileio/src/c/ \
+    -I$(top_srcdir)/modules/string/includes/ \
+    -I$(top_srcdir)/modules/dynamic_link/includes \
+    -I$(top_srcdir)/modules/threads/includes/ \
+    $(XML_FLAGS) \
+    $(COVERAGE_FLAGS) \
+    $(AM_CPPFLAGS)
+
+pkglib_LTLIBRARIES = libscicoverage.la
+noinst_LTLIBRARIES = libscicoverage-algo.la
+libscicoverage_algo_la_SOURCES = $(COVERAGE_CXX_SOURCES)
+libscicoverage_la_SOURCES = $(GATEWAY_CXX_SOURCES)
+libscicoverage_algo_la_CPPFLAGS = $(libscicoverage_la_CPPFLAGS)
+libscicoverage_la_LDFLAGS = $(AM_LDFLAGS)
+libscicoverage_la_LIBADD = libscicoverage-algo.la $(XML_LIBS)
+
+# For the code check (splint)
+INCLUDE_FLAGS = $(libscicoverage_la_CPPFLAGS)
+
+#### coverage : include files ####
+libscicoverage_la_includedir = $(pkgincludedir)
+
+#### coverage : gateway declaration ####
+libscicoverage_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscicoverage_la_sci_gateway_DATA = sci_gateway/coverage_gateway.xml
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/coverage/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign modules/coverage/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+$(top_srcdir)/Makefile.incl.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+       }
+
+uninstall-pkglibLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+       done
+
+clean-pkglibLTLIBRARIES:
+       -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+       @list='$(pkglib_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+src/cpp/$(am__dirstamp):
+       @$(MKDIR_P) src/cpp
+       @: > src/cpp/$(am__dirstamp)
+src/cpp/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/cpp/$(DEPDIR)
+       @: > src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CoverModule.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CoverResult.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-URLEncoder.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscicoverage_algo_la-CoverModule_interface.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+
+libscicoverage-algo.la: $(libscicoverage_algo_la_OBJECTS) $(libscicoverage_algo_la_DEPENDENCIES) $(EXTRA_libscicoverage_algo_la_DEPENDENCIES) 
+       $(AM_V_CXXLD)$(CXXLINK)  $(libscicoverage_algo_la_OBJECTS) $(libscicoverage_algo_la_LIBADD) $(LIBS)
+sci_gateway/cpp/$(am__dirstamp):
+       @$(MKDIR_P) sci_gateway/cpp
+       @: > sci_gateway/cpp/$(am__dirstamp)
+sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) sci_gateway/cpp/$(DEPDIR)
+       @: > sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libscicoverage_la-sci_covStart.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libscicoverage_la-sci_covStop.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo:  \
+       sci_gateway/cpp/$(am__dirstamp) \
+       sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+
+libscicoverage.la: $(libscicoverage_la_OBJECTS) $(libscicoverage_la_DEPENDENCIES) $(EXTRA_libscicoverage_la_DEPENDENCIES) 
+       $(AM_V_CXXLD)$(libscicoverage_la_LINK) -rpath $(pkglibdir) $(libscicoverage_la_OBJECTS) $(libscicoverage_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+       -rm -f sci_gateway/cpp/*.$(OBJEXT)
+       -rm -f sci_gateway/cpp/*.lo
+       -rm -f src/cpp/*.$(OBJEXT)
+       -rm -f src/cpp/*.lo
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covMerge.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStart.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStop.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covWrite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CodePrinterVisitor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CovHTMLCodePrinter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverMacroInfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule_interface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverResult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-InstrumentVisitor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscicoverage_algo_la-URLEncoder.Plo@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCXX_TRUE@  $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+src/cpp/libscicoverage_algo_la-CoverModule.lo: src/cpp/CoverModule.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CoverModule.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule.Tpo -c -o src/cpp/libscicoverage_algo_la-CoverModule.lo `test -f 'src/cpp/CoverModule.cpp' || echo '$(srcdir)/'`src/cpp/CoverModule.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CoverModule.cpp' object='src/cpp/libscicoverage_algo_la-CoverModule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CoverModule.lo `test -f 'src/cpp/CoverModule.cpp' || echo '$(srcdir)/'`src/cpp/CoverModule.cpp
+
+src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo: src/cpp/InstrumentVisitor.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-InstrumentVisitor.Tpo -c -o src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo `test -f 'src/cpp/InstrumentVisitor.cpp' || echo '$(srcdir)/'`src/cpp/InstrumentVisitor.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-InstrumentVisitor.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-InstrumentVisitor.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/InstrumentVisitor.cpp' object='src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-InstrumentVisitor.lo `test -f 'src/cpp/InstrumentVisitor.cpp' || echo '$(srcdir)/'`src/cpp/InstrumentVisitor.cpp
+
+src/cpp/libscicoverage_algo_la-CoverResult.lo: src/cpp/CoverResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CoverResult.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverResult.Tpo -c -o src/cpp/libscicoverage_algo_la-CoverResult.lo `test -f 'src/cpp/CoverResult.cpp' || echo '$(srcdir)/'`src/cpp/CoverResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverResult.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverResult.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CoverResult.cpp' object='src/cpp/libscicoverage_algo_la-CoverResult.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CoverResult.lo `test -f 'src/cpp/CoverResult.cpp' || echo '$(srcdir)/'`src/cpp/CoverResult.cpp
+
+src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo: src/cpp/CodePrinterVisitor.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CodePrinterVisitor.Tpo -c -o src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo `test -f 'src/cpp/CodePrinterVisitor.cpp' || echo '$(srcdir)/'`src/cpp/CodePrinterVisitor.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CodePrinterVisitor.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CodePrinterVisitor.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CodePrinterVisitor.cpp' object='src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CodePrinterVisitor.lo `test -f 'src/cpp/CodePrinterVisitor.cpp' || echo '$(srcdir)/'`src/cpp/CodePrinterVisitor.cpp
+
+src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo: src/cpp/CovHTMLCodePrinter.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CovHTMLCodePrinter.Tpo -c -o src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo `test -f 'src/cpp/CovHTMLCodePrinter.cpp' || echo '$(srcdir)/'`src/cpp/CovHTMLCodePrinter.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CovHTMLCodePrinter.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CovHTMLCodePrinter.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CovHTMLCodePrinter.cpp' object='src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CovHTMLCodePrinter.lo `test -f 'src/cpp/CovHTMLCodePrinter.cpp' || echo '$(srcdir)/'`src/cpp/CovHTMLCodePrinter.cpp
+
+src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo: src/cpp/CoverMacroInfo.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverMacroInfo.Tpo -c -o src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo `test -f 'src/cpp/CoverMacroInfo.cpp' || echo '$(srcdir)/'`src/cpp/CoverMacroInfo.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverMacroInfo.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverMacroInfo.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CoverMacroInfo.cpp' object='src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CoverMacroInfo.lo `test -f 'src/cpp/CoverMacroInfo.cpp' || echo '$(srcdir)/'`src/cpp/CoverMacroInfo.cpp
+
+src/cpp/libscicoverage_algo_la-URLEncoder.lo: src/cpp/URLEncoder.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-URLEncoder.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-URLEncoder.Tpo -c -o src/cpp/libscicoverage_algo_la-URLEncoder.lo `test -f 'src/cpp/URLEncoder.cpp' || echo '$(srcdir)/'`src/cpp/URLEncoder.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-URLEncoder.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-URLEncoder.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/URLEncoder.cpp' object='src/cpp/libscicoverage_algo_la-URLEncoder.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-URLEncoder.lo `test -f 'src/cpp/URLEncoder.cpp' || echo '$(srcdir)/'`src/cpp/URLEncoder.cpp
+
+src/cpp/libscicoverage_algo_la-CoverModule_interface.lo: src/cpp/CoverModule_interface.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscicoverage_algo_la-CoverModule_interface.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule_interface.Tpo -c -o src/cpp/libscicoverage_algo_la-CoverModule_interface.lo `test -f 'src/cpp/CoverModule_interface.cpp' || echo '$(srcdir)/'`src/cpp/CoverModule_interface.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule_interface.Tpo src/cpp/$(DEPDIR)/libscicoverage_algo_la-CoverModule_interface.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CoverModule_interface.cpp' object='src/cpp/libscicoverage_algo_la-CoverModule_interface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscicoverage_algo_la-CoverModule_interface.lo `test -f 'src/cpp/CoverModule_interface.cpp' || echo '$(srcdir)/'`src/cpp/CoverModule_interface.cpp
+
+sci_gateway/cpp/libscicoverage_la-sci_covStart.lo: sci_gateway/cpp/sci_covStart.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscicoverage_la-sci_covStart.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStart.Tpo -c -o sci_gateway/cpp/libscicoverage_la-sci_covStart.lo `test -f 'sci_gateway/cpp/sci_covStart.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covStart.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStart.Tpo sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStart.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_covStart.cpp' object='sci_gateway/cpp/libscicoverage_la-sci_covStart.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicoverage_la-sci_covStart.lo `test -f 'sci_gateway/cpp/sci_covStart.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covStart.cpp
+
+sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo: sci_gateway/cpp/sci_covWrite.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covWrite.Tpo -c -o sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo `test -f 'sci_gateway/cpp/sci_covWrite.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covWrite.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covWrite.Tpo sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covWrite.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_covWrite.cpp' object='sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicoverage_la-sci_covWrite.lo `test -f 'sci_gateway/cpp/sci_covWrite.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covWrite.cpp
+
+sci_gateway/cpp/libscicoverage_la-sci_covStop.lo: sci_gateway/cpp/sci_covStop.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscicoverage_la-sci_covStop.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStop.Tpo -c -o sci_gateway/cpp/libscicoverage_la-sci_covStop.lo `test -f 'sci_gateway/cpp/sci_covStop.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covStop.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStop.Tpo sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covStop.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_covStop.cpp' object='sci_gateway/cpp/libscicoverage_la-sci_covStop.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicoverage_la-sci_covStop.lo `test -f 'sci_gateway/cpp/sci_covStop.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covStop.cpp
+
+sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo: sci_gateway/cpp/sci_covMerge.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covMerge.Tpo -c -o sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo `test -f 'sci_gateway/cpp/sci_covMerge.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covMerge.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covMerge.Tpo sci_gateway/cpp/$(DEPDIR)/libscicoverage_la-sci_covMerge.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='sci_gateway/cpp/sci_covMerge.cpp' object='sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscicoverage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sci_gateway/cpp/libscicoverage_la-sci_covMerge.lo `test -f 'sci_gateway/cpp/sci_covMerge.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_covMerge.cpp
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+       -rm -rf sci_gateway/cpp/.libs sci_gateway/cpp/_libs
+       -rm -rf src/cpp/.libs src/cpp/_libs
+install-libscicoverage_la_etcDATA: $(libscicoverage_la_etc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(libscicoverage_la_etc_DATA)'; test -n "$(libscicoverage_la_etcdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libscicoverage_la_etcdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libscicoverage_la_etcdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscicoverage_la_etcdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(libscicoverage_la_etcdir)" || exit $$?; \
+       done
+
+uninstall-libscicoverage_la_etcDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libscicoverage_la_etc_DATA)'; test -n "$(libscicoverage_la_etcdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(libscicoverage_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscicoverage_la_sci_gatewayDATA: $(libscicoverage_la_sci_gateway_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(libscicoverage_la_sci_gateway_DATA)'; test -n "$(libscicoverage_la_sci_gatewaydir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)" || exit $$?; \
+       done
+
+uninstall-libscicoverage_la_sci_gatewayDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libscicoverage_la_sci_gateway_DATA)'; test -n "$(libscicoverage_la_sci_gatewaydir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+       for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscicoverage_la_etcdir)" "$(DESTDIR)$(libscicoverage_la_sci_gatewaydir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f sci_gateway/cpp/$(DEPDIR)/$(am__dirstamp)
+       -rm -f sci_gateway/cpp/$(am__dirstamp)
+       -rm -f src/cpp/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/cpp/$(am__dirstamp)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+       clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf sci_gateway/cpp/$(DEPDIR) src/cpp/$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-libscicoverage_la_etcDATA \
+       install-libscicoverage_la_sci_gatewayDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf sci_gateway/cpp/$(DEPDIR) src/cpp/$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscicoverage_la_etcDATA \
+       uninstall-libscicoverage_la_sci_gatewayDATA \
+       uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+       check-local clean clean-generic clean-libtool clean-local \
+       clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist-am \
+       ctags ctags-am distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-local distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-local install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-html-local install-info \
+       install-info-am install-libscicoverage_la_etcDATA \
+       install-libscicoverage_la_sci_gatewayDATA install-man \
+       install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-am uninstall uninstall-am \
+       uninstall-libscicoverage_la_etcDATA \
+       uninstall-libscicoverage_la_sci_gatewayDATA \
+       uninstall-pkglibLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+       if test -d $(mydatadir)/tests; then \
+         @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+       fi
+check-code:
+       if test -f build.xml; then \
+               $(ANT) checkstyle; \
+       fi
+       if test -x "$(SPLINT)"; then \
+               $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+       fi
+@NEED_JAVA_TRUE@java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@       @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@       if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@       if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@               $(ANT); \
+@NEED_JAVA_TRUE@       fi
+
+@NEED_JAVA_TRUE@clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@       @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@       if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@       if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@               $(ANT) clean; \
+@NEED_JAVA_TRUE@       fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@SWIG_TRUE@swig: $(SWIG_WRAPPERS)
+@SWIG_TRUE@    @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+@SWIG_TRUE@    SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+@SWIG_TRUE@    if test -n "$(SWIG_WRAPPERS)"; then \
+@SWIG_TRUE@            for file in $(SWIG_WRAPPERS) ; do \
+@SWIG_TRUE@                    echo "Swig process of $$file (Java) ..."; \
+@SWIG_TRUE@                    $(SWIG_BIN) $(SWIG_JAVA) $(SWIG_OPTIONS) -package $$SWIG_PACKAGENAME  -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@            done; \
+@SWIG_TRUE@    fi
+
+@SWIG_TRUE@swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+@SWIG_TRUE@    @SWIG_OUTDIR=src/swig/; \
+@SWIG_TRUE@    if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+@SWIG_TRUE@            for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+@SWIG_TRUE@                    echo "Swig process of $$file (Scilab) ..."; \
+@SWIG_TRUE@                    $(SWIG_BIN) $(SWIG_SCILAB) $(SWIG_OPTIONS) -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@            done; \
+@SWIG_TRUE@    fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@GIWS_TRUE@giws: $(GIWS_WRAPPERS)
+@GIWS_TRUE@    @GIWS_OUTPUTDIR=src/jni/; \
+@GIWS_TRUE@    MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+@GIWS_TRUE@    if test -n "$(GIWS_WRAPPERS)"; then \
+@GIWS_TRUE@            for file in $(GIWS_WRAPPERS) ; do \
+@GIWS_TRUE@                    echo "GIWS process of $$file ..."; \
+@GIWS_TRUE@                    if test -z "$(GIWS_OPTIONS)"; then \
+@GIWS_TRUE@                            $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@                    else \
+@GIWS_TRUE@                            echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+@GIWS_TRUE@                            $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@                    fi \
+@GIWS_TRUE@            done; \
+@GIWS_TRUE@    fi
+
+@GIWS_TRUE@giws-exception:
+@GIWS_TRUE@    @GIWS_OUTPUTDIR=src/jni/;\
+@GIWS_TRUE@    echo "GIWS: Generation of exception class ..."; \
+@GIWS_TRUE@    $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+       -@( if test ! -x $(top_builddir)/scilab-bin; then \
+               echo "Error : Cannot build $< : Scilab has not been built"; \
+       else \
+               $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+       fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+       @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+               echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+               rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+       done
+
+test:
+# More tests could be added here
+       @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+       if test -f build.xml -a $$USEANT -eq 1; then \
+               $(ANT) test; \
+       fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+       -@( if test ! -x $(top_builddir)/scilab-bin; then \
+       echo "Error : Cannot build $< : Scilab has not been build"; \
+       else \
+       echo "Creating $@"; \
+       $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+       fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+       @if test -d $(srcdir)/javadoc; then \
+               cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+       fi
+# If the user wants the help sources to be installed
+@INSTALL_HELP_XML_TRUE@        @echo "-------- Install of XML sources of help files --------"; \
+@INSTALL_HELP_XML_TRUE@        for lang in $(ALL_LINGUAS); do \
+@INSTALL_HELP_XML_TRUE@         if test -d $(srcdir)/help/$$lang; then \
+@INSTALL_HELP_XML_TRUE@          $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+@INSTALL_HELP_XML_TRUE@                if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@                  for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+@INSTALL_HELP_XML_TRUE@                    echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+@INSTALL_HELP_XML_TRUE@                $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+@INSTALL_HELP_XML_TRUE@                  done ; \
+@INSTALL_HELP_XML_TRUE@                fi; \
+@INSTALL_HELP_XML_TRUE@         fi; \
+@INSTALL_HELP_XML_TRUE@        done; \
+@INSTALL_HELP_XML_TRUE@        @echo "-------- Install of MathML sources --------"; \
+@INSTALL_HELP_XML_TRUE@         if test -d $(srcdir)/help/mml/; then \
+@INSTALL_HELP_XML_TRUE@          $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+@INSTALL_HELP_XML_TRUE@                if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@                  for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+@INSTALL_HELP_XML_TRUE@                    echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+@INSTALL_HELP_XML_TRUE@                $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+@INSTALL_HELP_XML_TRUE@                  done ; \
+@INSTALL_HELP_XML_TRUE@                fi; \
+@INSTALL_HELP_XML_TRUE@        fi
+install-data-local:
+# Install the tests
+       @echo "-------- Install tests (if any) --------"; \
+       for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+         if test -d $(srcdir)/$$dir/; then \
+           $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+                 for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+                   if test -d "$(srcdir)/$$dir/$$file"; then \
+                         echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+                         $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+                   else \
+                     echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+                 $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+                   fi \
+                 done; \
+         fi; \
+       done
+# Install the help chapter
+       @echo "-------- Install the help chapter (if any) --------"; \
+       for lang in $(HELP_CHAPTERLANG); do \
+               HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+               if test -f $$HELPFILE; then \
+                       echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+                       $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+                       echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+                       $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+               fi; \
+       done
+# Install the demos & examples
+       @echo "-------- Install demos & examples (if any) --------"; \
+       for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+         if test -d $(srcdir)/$$dir/; then \
+           $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+                 for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+                   if test -d "$(srcdir)/$$dir/$$file"; then \
+                         echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+                         $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+                   else \
+                     echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+                 $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+                   fi \
+                 done; \
+         fi; \
+       done
+# Install the macros
+       @echo "-------- Install macros (if any) --------"; \
+       for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+         $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+               if test -d $(srcdir)/$$dir/; then \
+                       FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+                       if test -n "$(MACROSSPECIALEXT)"; then \
+                               specialExtDir=""; \
+                               for specialExt in $(MACROSSPECIALEXT); do \
+                                       specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+                               done; \
+                               FILELIST="$$FILELIST $$specialExtDir"; \
+                       fi; \
+                 for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+                   echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+               $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+                 done; \
+               fi; \
+       done
+# Install java files (.jar)
+       @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+       echo "-------- Install jar files --------"; \
+    $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+         for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+                   echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+               $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+         done ; \
+       fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+@NEED_JAVA_TRUE@clean-local: clean-java
+@NEED_JAVA_FALSE@clean-local:
+
+distclean-local:
+       rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/scilab/modules/coverage/coverage.iss b/scilab/modules/coverage/coverage.iss
new file mode 100644 (file)
index 0000000..c76703e
--- /dev/null
@@ -0,0 +1,42 @@
+;
+; Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+; Copyright (C) DIGITEO - 2015 - 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
+;
+;--------------------------------------------------------------------------------------------------------------
+; Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+;
+;--------------------------------------------------------------------------------------------------------------
+; optimization module
+;--------------------------------------------------------------------------------------------------------------
+;
+#define COVERAGE "coverage"
+;
+Source: bin\{#COVERAGE}.dll; DestDir: {app}\bin; Components: {#COMPN_SCILAB}
+Source: bin\{#COVERAGE}.lib; DestDir: {app}\bin; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#COVERAGE}\data\*.*; DestDir: {app}\modules\{#COVERAGE}\data; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#COVERAGE}\sci_gateway\{#COVERAGE}_gateway.xml; DestDir: {app}\modules\{#COVERAGE}\sci_gateway; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#COVERAGE}\etc\{#COVERAGE}.quit; DestDir: {app}\modules\{#COVERAGE}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#COVERAGE}\etc\{#COVERAGE}.start; DestDir: {app}\modules\{#COVERAGE}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#COVERAGE}\etc\{#COVERAGE}.xml; DestDir: {app}\modules\{#COVERAGE}\etc; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#COVERAGE}\macros\buildmacros.sce; DestDir: {app}\modules\{#COVERAGE}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#COVERAGE}\macros\buildmacros.bat; DestDir: {app}\modules\{#COVERAGE}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#COVERAGE}\macros\cleanmacros.bat; DestDir: {app}\modules\{#COVERAGE}\macros; Components: {#COMPN_SCILAB}
+;Source: modules\{#COVERAGE}\macros\lib; DestDir: {app}\modules\{#COVERAGE}\macros;Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;Source: modules\{#COVERAGE}\macros\*.sci; DestDir: {app}\modules\{#COVERAGE}\macros;Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;Source: modules\{#COVERAGE}\macros\*.bin; DestDir: {app}\modules\{#COVERAGE}\macros;Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;
+;Source: modules\{#COVERAGE}\demos\*.*; DestDir: {app}\modules\{#COVERAGE}\demos; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#COVERAGE}\tests\*.*; DestDir: {app}\modules\{#COVERAGE}\tests; Flags: recursesubdirs; Components: {#COMPN_SCILAB}  and {#COMPN_TESTS}
+;
+;--------------------------------------------------------------------------------------------------------------
diff --git a/scilab/modules/coverage/coverage.rc b/scilab/modules/coverage/coverage.rc
new file mode 100644 (file)
index 0000000..3bd2187
--- /dev/null
@@ -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 6,0,0,0
+ PRODUCTVERSION 6,0,0,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", "coverage module"
+            VALUE "FileVersion", "6, 0, 0, 0"
+            VALUE "InternalName", "coverage module"
+            VALUE "LegalCopyright", "Copyright (C) 2015"
+            VALUE "OriginalFilename", "coverage.dll"
+            VALUE "ProductName", "coverage module"
+            VALUE "ProductVersion", "6, 0, 0, 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/scilab/modules/coverage/coverage.vcxproj b/scilab/modules/coverage/coverage.vcxproj
new file mode 100644 (file)
index 0000000..a59d27e
--- /dev/null
@@ -0,0 +1,282 @@
+<?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>{B150E4A2-2EC1-4BE0-B416-95CFEB13E2FF}</ProjectGuid>
+    <RootNamespace>coverage</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectName>coverage</ProjectName>
+  </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>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</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;../../libs/intl;../../libs/libxml2;..\threads\includes;..\ast\includes\types;..\ast\includes\ast;..\ast\includes\analysis;..\ast\includes\exps;..\ast\includes\operations;..\ast\includes\symbol;..\ast\includes\system_env;..\ast\includes\parse;../core/includes;../localization/includes;../dynamic_link/includes;../output_stream/includes;../string/includes;../console/includes;../fileio/includes;../fileio/src/c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;COVERAGE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <PreLinkEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <Link>
+      <AdditionalDependencies>%(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>
+    <PreBuildEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>includes;../../libs/intl;../../libs/libxml2;..\threads\includes;..\ast\includes\types;..\ast\includes\ast;..\ast\includes\analysis;..\ast\includes\exps;..\ast\includes\operations;..\ast\includes\symbol;..\ast\includes\system_env;..\ast\includes\parse;../core/includes;../localization/includes;../dynamic_link/includes;../output_stream/includes;../string/includes;../console/includes;../fileio/includes;../fileio/src/c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;COVERAGE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <PreLinkEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <Link>
+      <AdditionalDependencies>%(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>
+    <PreBuildEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>includes;../../libs/intl;../../libs/libxml2;..\threads\includes;..\ast\includes\types;..\ast\includes\ast;..\ast\includes\analysis;..\ast\includes\exps;..\ast\includes\operations;..\ast\includes\symbol;..\ast\includes\system_env;..\ast\includes\parse;../core/includes;../localization/includes;../dynamic_link/includes;../output_stream/includes;../string/includes;../console/includes;../fileio/includes;../fileio/src/c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;COVERAGE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <PreLinkEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <Link>
+      <AdditionalDependencies>%(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>
+    <PreBuildEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>includes;../../libs/intl;../../libs/libxml2;..\threads\includes;..\ast\includes\types;..\ast\includes\ast;..\ast\includes\analysis;..\ast\includes\exps;..\ast\includes\operations;..\ast\includes\symbol;..\ast\includes\system_env;..\ast\includes\parse;../core/includes;../localization/includes;../dynamic_link/includes;../output_stream/includes;../string/includes;../console/includes;../fileio/includes;../fileio/src/c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;COVERAGE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <PreLinkEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <Link>
+      <AdditionalDependencies>%(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>
+    <PreBuildEvent>
+      <Message>
+      </Message>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="sci_gateway\cpp\sci_covMerge.cpp" />
+    <ClCompile Include="sci_gateway\cpp\sci_covStart.cpp" />
+    <ClCompile Include="sci_gateway\cpp\sci_covStop.cpp" />
+    <ClCompile Include="sci_gateway\cpp\sci_covWrite.cpp" />
+    <ClCompile Include="src\cpp\CodePrinterVisitor.cpp" />
+    <ClCompile Include="src\cpp\CoverMacroInfo.cpp" />
+    <ClCompile Include="src\cpp\CoverModule.cpp" />
+    <ClCompile Include="src\cpp\CoverModule_interface.cpp" />
+    <ClCompile Include="src\cpp\CoverResult.cpp" />
+    <ClCompile Include="src\cpp\CovHTMLCodePrinter.cpp" />
+    <ClCompile Include="src\cpp\InstrumentVisitor.cpp" />
+    <ClCompile Include="src\cpp\URLEncoder.cpp" />
+    <ClCompile Include="src\c\DllmainCoverage.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="coverage.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="includes\CodePrinter.hxx" />
+    <ClInclude Include="includes\CodePrinterVisitor.hxx" />
+    <ClInclude Include="includes\Counter.hxx" />
+    <ClInclude Include="includes\CoverAction.hxx" />
+    <ClInclude Include="includes\coverage_gw.hxx" />
+    <ClInclude Include="includes\CoverMacroInfo.hxx" />
+    <ClInclude Include="includes\CoverModule.hxx" />
+    <ClInclude Include="includes\CoverModule_interface.h" />
+    <ClInclude Include="includes\CoverResult.hxx" />
+    <ClInclude Include="includes\cover_tools.hxx" />
+    <ClInclude Include="includes\CovHTMLCodePrinter.hxx" />
+    <ClInclude Include="includes\dynlib_coverage.h" />
+    <ClInclude Include="includes\InstrumentVisitor.hxx" />
+    <ClInclude Include="includes\MacroLoc.hxx" />
+    <ClInclude Include="includes\URLEncoder.hxx" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\ast\ast.vcxproj">
+      <Project>{0d3fa25b-8116-44ec-a45e-260789daa3d9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\core\src\c\core.vcxproj">
+      <Project>{c6e2bc17-34d8-46e4-85f3-6293cb21adcd}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\fileio\fileio.vcxproj">
+      <Project>{4fc72d4a-80ee-4b1a-8724-0201c1a35621}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\localization\src\localization.vcxproj">
+      <Project>{ecffeb0c-1eda-45ee-9a10-b18143852e17}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\output_stream\src\c\output_stream.vcxproj">
+      <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\string\src\c\string.vcxproj">
+      <Project>{8d45767a-9b03-4905-97f6-d2f3f79141ea}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Library Include="..\..\bin\libintl.lib" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/scilab/modules/coverage/coverage.vcxproj.filters b/scilab/modules/coverage/coverage.vcxproj.filters
new file mode 100644 (file)
index 0000000..f4e0790
--- /dev/null
@@ -0,0 +1,115 @@
+<?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>{d9bf83dd-1baf-45e6-9879-66f1fbeb65c1}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{d8fc54b8-74ed-4b17-9b4b-760058549a64}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>
+    </Filter>
+    <Filter Include="localization">
+      <UniqueIdentifier>{8f6c9d89-6623-4ca0-82a0-1b3f216e71bd}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{d3d6fc04-eeff-42c8-9ac1-f20fb74b6b26}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="coverage.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="src\cpp\CodePrinterVisitor.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CoverMacroInfo.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CoverModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CoverResult.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CovHTMLCodePrinter.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\InstrumentVisitor.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\URLEncoder.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="sci_gateway\cpp\sci_covMerge.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="sci_gateway\cpp\sci_covStart.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="sci_gateway\cpp\sci_covStop.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="sci_gateway\cpp\sci_covWrite.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CoverModule_interface.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\c\DllmainCoverage.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="includes\CodePrinter.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CodePrinterVisitor.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\Counter.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\cover_tools.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CoverAction.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\coverage_gw.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CoverMacroInfo.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CoverModule.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CoverResult.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CovHTMLCodePrinter.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\dynlib_coverage.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\InstrumentVisitor.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\MacroLoc.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\URLEncoder.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\CoverModule_interface.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <Library Include="..\..\bin\libintl.lib" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/scilab/modules/coverage/data/favicon.ico b/scilab/modules/coverage/data/favicon.ico
new file mode 100644 (file)
index 0000000..2c1bbb4
Binary files /dev/null and b/scilab/modules/coverage/data/favicon.ico differ
diff --git a/scilab/modules/coverage/data/mod_style.css b/scilab/modules/coverage/data/mod_style.css
new file mode 100644 (file)
index 0000000..6cd3e0c
--- /dev/null
@@ -0,0 +1,584 @@
+body {
+    color:#000000;
+    background-color:#ffffff;
+    font-family:sans-serif;
+    font-size:100%;
+    margin:5px;
+    padding:0;
+}
+
+.inline_percent {
+    font-size:10px;
+}
+
+.fullPercent {
+    display: table;
+    height: 8px;
+    width: 100%;
+    background-color: #faf3ee;
+}
+
+.filledPercent1 {
+    display: table-cell;
+    height: 8px;
+    background-color: rgba(0,0,255,0.2);
+    border: 1px solid black;
+}
+
+.filledPercent2 {
+    display: table-cell;
+    height: 8px;
+    background-color: rgba(233,0,0,0.2);
+    border: 1px solid black;
+}
+
+.filepath {
+    font-size: 14px;
+    font-style: italic;
+    text-decoration: none;
+    border-bottom:1px dotted;
+    color: #354A57;
+}
+
+.filepath:hover {
+   text-decoration: none;
+}
+
+.source tr {
+    display:table-row;
+}
+
+.source table .src {
+    background-color: transparent;
+    word-wrap: break-word;
+    word-break: break-all;
+    position: relative;
+}
+
+.source .functionStats {
+    background-color: rgba(95,151,68,1);
+    position: absolute;
+    display: none;
+    visibility: hidden;
+    height: 0px;
+    z-index: 999;
+    border-radius: 4px;
+    padding: 2px;
+    overflow: visible;
+}
+
+.source .functionInfo {
+    background-color: #ffffff;
+    width: 100%;
+    display: table;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.source .linkStats {
+    text-decoration: underline;
+    color: #b01813;
+}
+
+.source table td {
+    display: table-cell;
+    text-align: left;
+    border: 0px none;
+    padding: 3px;
+    background-color:rgba(95,151,68,0.2);
+}
+
+.source .functionStats tr {
+    background-color: #ffffff;
+}
+
+.source .functionStats td {
+    background-color: #ffffff;
+}
+
+.module {
+    background-color: #faf3ee;
+    margin-bottom: 80px;
+    padding: 20px 15px;
+    overflow: visible;
+}
+
+.builtins_stats {
+    display: table;
+    table-layout: fixed;
+    width: 100%;
+    border-collapse: collapse;
+    border-width: 40px;
+}
+
+.builtins_cell {
+    display: table-cell;
+}
+
+.macros_stats {
+    display: table;
+    table-layout: fixed;
+    width: 100%;
+    border-collapse: collapse;
+    border-width: 40px;
+}
+
+.macros_cell {
+    display: table-row;
+}
+
+.module table {
+    width: 100%;
+    border-collapse: collapse;
+    border-spacing: 0px;
+    border-width: 3px;
+}
+
+.module table td {
+    border-bottom-style: double;
+}
+
+groupButton {
+    display: inline-block;
+}
+
+.module table .altern1{
+    background-color: #ffffff;
+}
+
+.cover {
+    background-color:rgba(0,0,255,0.2);
+}
+
+.uncover {
+    background-color:rgba(233,0,0,0.2);
+}
+
+.none {
+    background-color:transparent;
+}
+
+.buttonOrderEnable:hover {
+    text-decoration:none;
+    cursor: pointer;
+}
+
+.buttonOrderDisable:hover {
+    text-decoration:none;
+    cursor: pointer;
+}
+
+.buttonOrderEnable {
+    color: #354A57;
+    border: 0px;
+    border-collapse: collapse;
+    text-decoration: none;
+}
+
+.buttonOrderDisable {
+    color: #B8B8B8;
+    border: 0px;
+    border-collapse: collapse;
+    text-decoration: none;
+}
+
+.source table .num {
+    font-size: 11px;
+    width: 30px;
+    text-align: right;
+    vertical-align: top;
+    padding: 3px 6px;
+    border-right: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+.source table .src pre {
+    font-size: 11px;
+    margin: 0px;
+    padding: 0px 0px 0px 1em;
+    border: medium none;
+    background: inherit;
+}
+
+.col_name td {
+    font-stretch: condensed;
+    font-weight: bold;
+    font-size: 20px;
+    color: #354A57;
+    line-height: 1;
+    text-transform: uppercase;
+}
+
+.stats {
+    margin: 0px;
+}
+
+.null_stats {
+    margin: 0px;
+    color: #ff0000;
+}
+
+h2.title {
+    font-stretch: condensed;
+    font-weight: bold;
+    font-size: 30px;
+    color: #354A57;
+    line-height: 1;
+    text-transform: uppercase;
+    text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5);
+    padding: 0px 0px 20px;
+}
+
+.sourceFile {
+    display: table;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.modulePath {
+    border-bottom: 2px solid #354A57;
+    border-bottom-width: 2px;
+    border-bottom-style: solid;
+    border-bottom-color: #354A57;
+    font-size: 14px;
+    font-style: italic;
+    padding: 10px 0px 5px;
+}
+
+.para {
+    padding-left: 10px;
+}
+
+.refname {
+    color: #ff6c0a;
+}
+.refpurpose {
+    font-size: 110%;
+}
+
+.synopsis {
+    border: 1px solid black;
+    width:80%;
+    padding: 0.5em;
+}
+
+.editbar {
+    text-align: right;
+}
+
+.term {
+    color:#800000;
+    font-size:100%;
+}
+
+h3 {
+    color: #000063;
+    font-weight: bold;
+    font-size:130%;
+    margin-bottom: 10px;
+}
+
+.programlisting {
+    font-family: monospace;
+    font-size: 100%;
+    background-color:#EEEEFF;
+    border-color:#CCCCCC;
+    border-style:solid;
+    border-width:2px medium;
+    width:80%;
+    color:#333333;
+    line-height:120%;
+    padding:10px;
+}
+
+.literal {
+    font-family: monospace;
+    font-size: 100%;
+}
+
+.option {
+    font-family: monospace;
+    font-style: italic;
+    font-size: 100%;
+}
+
+.command {
+    font-family: monospace;
+    font-size: 100%;
+    color: #32b9b9;
+}
+
+.function {
+    font-family: monospace;
+    font-size: 100%;
+    color: #32b9b9;
+}
+
+.varname {
+    font-family: monospace;
+    font-weight: bold;
+    font-size: 100%;
+}
+
+.constant {
+    font-family: monospace;
+    font-size: 100%;
+    color: #da70d6;
+}
+
+a {
+    color: blue;
+    text-decoration:none;
+}
+
+a:hover {
+    text-decoration:underline;
+}
+
+.itemizedlist {
+    list-style-type: disk;
+}
+
+.inline-list li {
+    display: inline;
+    list-style-type: disk;
+}
+
+.vert-list {
+    list-style-type: disk;
+}
+
+pre {
+    margin-bottom: 0px;
+    margin-top: 0px;
+}
+
+.leftpart {
+    position:absolute;
+    float:left;
+    width: 186px;
+    padding: 5px;
+    font-size: smaller;
+}
+
+.content {
+    margin-top: 100px;
+    margin-left: 196px
+}
+
+.container {
+    margin: 0 auto;
+    width:1024px;
+}
+
+ul.toc li.list-active {
+    list-style-type:disc;
+    font-weight:bold;
+}
+
+ul.toc li.parent {
+    font-size: 115%;
+    padding: 5px 0px 5px 11px;
+    border-bottom: 1px solid #cccccc;
+    margin-bottom: 5px;
+}
+
+ul.toc li.root {
+    font-size: 135%;
+    padding: 5px 0px 5px 11px;
+    border-bottom: 1px solid #cccccc;
+    margin-bottom: 5px;
+}
+
+ul.toc li {
+    font-size: 85%;
+    margin: 1px 0 1px 1px;
+    padding: 1px 0 1px 11px;
+    background-repeat: no-repeat;
+    background-position: center left;
+    list-style-type: circle;
+}
+
+.next {
+    float:right;
+    text-align: right;
+}
+
+.center {
+    text-align: center;
+}
+
+.screen {
+    font-family: monospace;
+    font-size: 100%;
+    background-color:#FFFFFF;
+    border-color:#CCCCCC;
+    border-style:solid;
+    border-width:2px medium;
+    width:80%;
+    color:#333333;
+    line-height:120%;
+    padding:10px;
+}
+
+/* Top and bottom navigation controls on manual pages --------------------- */
+div.manualnavbar {
+    background-color: #E0E0E0;
+        color: inherit;
+        padding: 4px;
+        margin-bottom: 10px;
+}
+div.manualnavbar .prev {
+        padding-right: 4px;
+}
+div.manualnavbar .next {
+    text-align: right;
+        padding-left: 4px;
+}
+
+div.manualnavbar .top {
+        text-align: center;
+            display: block;
+}
+
+div.manualnavbar hr {
+        color: #cccccc;
+        background-color: #cccccc;
+}
+
+/* Footer navigation area ------------------------------------------------- */
+
+#pagefooter {
+        position: relative;
+        font-size: 75%;
+        color: inherit;
+        background-color: #e5e5e5;
+        width: 100%;
+}
+
+#pagefooterleft {
+        top: 0px;
+        left: 0px;
+        padding: 6px;
+        margin-right: 30%;
+}
+
+#pagefooterright {
+        text-align: right;
+        margin-left: 50%;
+        padding: 6px;
+}
+#footnav {
+        color: inherit;
+        background-color: #9999cc;
+        border-width: 1px 0px;
+        border-color: #333366;
+        border-style: solid;
+        text-align: right;
+        padding-right: 6px;
+}
+
+
+
+
+                #global{
+/*                      width: 90%; */
+                        max-width: 90em;
+/*                      min-width: 850px; */
+                        margin-left: auto;
+                        margin-right: auto;
+                }
+
+                #myHeader{
+                        background-color:#000000;
+                        color:white;
+                        margin-bottom : 10px;
+    position            : relative;
+    text-align: center;
+/*    width               : 1024px;*/
+    height              : 100px;
+    padding-left        : 20px;
+    background          : url("http://atoms.scilab.org/images/homepage/cadre_head.png");
+    background-repeat   : no-repeat;
+    background-position : 0px 0px;
+
+                }
+
+                #myFooter{
+                        background-color:#E5E5E5;
+                        color:black;
+/*                      width: 90%;*/
+                        max-width: 90em;
+/*                      min-width: 850px;
+                        margin-left: 5%;
+                        margin-right: 5%;*/
+                        margin-top:10px;
+                        padding:10px;
+                }
+
+                #mainArea{
+                        width: 100%;
+                        overflow: hidden;
+                }
+
+                #myLeftArea{
+                        color:white;
+                        float: left;
+                        width: 180px;
+                        padding:5px;
+                }
+
+                #myMiddleArea{
+                        color:black;
+                        margin-left: 200px;
+                        padding: 10px 20px;
+                }
+
+                #myRightArea{
+                        color:white;
+                        float: right;
+                        width: 200px;
+                        padding: 12px 20px;
+                }
+
+
+div#cadre_head
+{
+    position            : relative;
+    text-align: center;
+/*    width               : 1024px;*/
+    height              : 100px;
+    padding-left        : 20px;
+    background          : url("/img/cadre_head.png");
+    background-repeat   : no-repeat;
+    background-position : 0px 0px;
+}
+
+
+div#slogan{
+    position: absolute;
+    top : 50px;
+    left:251px;
+    color:#0000AA;
+}
+div#cadre_help
+{
+    position: absolute;
+    top:45px;
+    right:0px;
+    font-size:0.8em;
+    color:#0000AA;
+}
+
+table.revhistory
+{ 
+  width:80%;
+  border-color:#CCCCCC;
+  border-style:solid;
+  border-width:2px medium;
+  margin-bottom: 10px;
+}
+
+table.revhistory tr.title td
+{ 
+  background-color: #9999CC;
+}
\ No newline at end of file
diff --git a/scilab/modules/coverage/data/module.js b/scilab/modules/coverage/data/module.js
new file mode 100644 (file)
index 0000000..aaffa35
--- /dev/null
@@ -0,0 +1,52 @@
+function order(id, col, ascent, bid) {
+    var link = document.getElementById(bid);
+    if (link.className == 'buttonOrderEnable') {
+       return;
+    }
+    var parent = link.parentNode;
+    var tok = bid.split("_");
+    var n = tok[1] == 1 ? 2 : 1;
+    var butid = tok[2];
+    link.setAttribute('class', 'buttonOrderEnable');
+    link = document.getElementById("but_" + n + "_" + butid);
+    link.setAttribute('class', 'buttonOrderDisable');
+
+    var gbs = parent.parentNode.parentNode.getElementsByClassName("groupButton");
+    for (var i = 0, l = gbs.length; i < l; ++i) {
+       if (gbs[i] != parent) {
+           console.log(gbs[i].children[0]);
+           gbs[i].children[0].setAttribute('class', 'buttonOrderDisable');
+           gbs[i].children[1].setAttribute('class', 'buttonOrderDisable');
+       }
+    }
+
+    var table = document.getElementById(id);
+    var rows = table.getElementsByTagName("tr");
+    rows = Array.prototype.slice.call(rows, 1);
+    var parent = rows[0].parentNode;
+    for (var i = 0, l = rows.length; i < l; ++i) {
+       parent.removeChild(rows[i]);
+    }
+    rows.sort(function (a,b) {
+       var x = a.getElementsByTagName("td")[col].getElementsByClassName("cmp")[0].textContent;  
+       var y = b.getElementsByTagName("td")[col].getElementsByClassName("cmp")[0].textContent;
+       var _x = parseFloat(x);
+       var _y = parseFloat(y);
+       if (!isNaN(_x) && !isNaN(_y)) {
+           x = _x;
+           y = _y;
+       }
+       if (x == y)
+           return 0;
+       if (x < y) {
+           return ascent ? -1 : 1;
+       }
+       return ascent ? 1 : -1;
+    });
+    var bool = true;
+    for (var i = 0, l = rows.length; i < l; ++i) {
+       rows[i].setAttribute("class", bool ? "altern2" : "altern1");
+       parent.appendChild(rows[i]);
+       bool = !bool;
+    }
+}
diff --git a/scilab/modules/coverage/data/scilab_code.css b/scilab/modules/coverage/data/scilab_code.css
new file mode 100644 (file)
index 0000000..658f42e
--- /dev/null
@@ -0,0 +1,96 @@
+.scilabcomment {
+ font-style: italic;
+ color: #01a801
+}
+
+.scilabdefault {
+ font-style: normal;
+ color: #000000
+}
+
+.scilabspecial {
+ font-style: normal;
+ color: #ffaa00
+}
+
+.scilabconstants {
+ font-style: normal;
+ color: #da70d6
+}
+
+.scilaboperator {
+ font-style: normal;
+ color: #5c5c5c
+}
+
+.scilabnumber {
+ font-style: normal;
+ color: #bc8f8f
+}
+
+.scilabfkeyword {
+ font-style: normal;
+ color: #b01813
+}
+
+.scilabskeyword {
+ font-style: normal;
+ color: #a020f0
+}
+
+.scilabckeyword {
+ font-style: normal;
+ color: #5f9ea0
+}
+
+.scilabcommand {
+ font-style: normal;
+ color: #32b9b9
+}
+
+.scilabmacro {
+ font-style: normal;
+ color: #ae5cb0
+}
+
+a.scilabcommand {
+ font-style: normal;
+ text-decoration: underline;
+ color: #32b9b9
+}
+
+a.scilabmacro {
+ font-style: normal;
+ text-decoration: underline;
+ color: #ae5cb0
+}
+
+.scilabstring {
+ font-style: normal;
+ color: #bc8f8f
+}
+
+.scilabid {
+ font-style: normal;
+ color: #000000
+}
+
+.scilabinputoutputargs {
+ font-weight: bold;
+ color: #834310
+}
+
+.scilabfunctionid {
+ font-weight: bold;
+ color: #000000
+}
+
+.scilabfield {
+ font-style: normal;
+ color: #aaaaaa
+}
+
+.scilabopenclose {
+ font-style: normal;
+ color: #4a55db
+}
diff --git a/scilab/modules/coverage/data/src_style.css b/scilab/modules/coverage/data/src_style.css
new file mode 100644 (file)
index 0000000..66312fb
--- /dev/null
@@ -0,0 +1,518 @@
+body {
+    color:#000000;
+    background-color:#ffffff;
+    font-family:sans-serif;
+    font-size:100%;
+    margin:5px;
+    padding:0;
+}
+
+.fullPercent {
+    display: table;
+    height: 8px;
+    width: 70px;
+    background-color: #faf3ee;
+}
+
+.filledPercent1 {
+    display: table-cell;
+    height: 8px;
+    background-color: rgba(0,0,255,0.2);
+}
+
+.filledPercent2 {
+    display: table-cell;
+    height: 8px;
+    background-color: rgba(233,0,0,0.2);
+}
+
+.source tr {
+    display:table-row;
+}
+
+.source table .src {
+    background-color: transparent;
+    word-wrap: break-word;
+    word-break: break-all;
+    position: relative;
+}
+
+.allmacstats {
+    border-bottom: 2px solid #354A57;
+}
+
+.source .functionStats {
+    background-color: rgba(95,151,68,1);
+    position: absolute;
+    display: none;
+    visibility: hidden;
+    height: 0px;
+    z-index: 999;
+    border-radius: 4px;
+    padding: 2px;
+    overflow: visible;
+}
+
+.functionInfo {
+    background-color: #ffffff;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.src .functionInfo {
+    background-color: #ffffff;
+    width: 450px;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.source .linkStats {
+    text-decoration: none;
+    border-bottom:1px dotted;
+    color: #b01813;
+}
+
+.source table td {
+    display: table-cell;
+    text-align: left;
+    border: 0px none;
+    padding: 3px;
+    background-color:rgba(95,151,68,0.2);
+}
+
+.source .functionStats tr {
+    background-color: #ffffff;
+}
+
+.source .functionStats td {
+    background-color: #ffffff;
+}
+
+.source table {
+    width: 100%;
+    display: table;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.source {
+    background-color: #faf3ee;
+    margin-bottom: 80px;
+    padding: 20px 15px;
+    overflow: visible;
+}
+
+.cover {
+    background-color:rgba(0,0,255,0.2);
+}
+
+.uncover {
+    background-color:rgba(233,0,0,0.2);
+}
+
+.none {
+    background-color:transparent;
+}
+
+.source table .num {
+    font-size: 11px;
+    width: 30px;
+    text-align: right;
+    vertical-align: top;
+    padding: 3px 6px;
+    border-right: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+.source table .src pre {
+    font-size: 11px;
+    margin: 0px;
+    padding: 0px 0px 0px 1em;
+    border: medium none;
+    background: inherit;
+}
+
+.source table .stats {
+    font-size: 10px;
+    margin: 0px;
+    padding: 0px 0px 0px 1em;
+    border: medium none;
+}
+
+.source table .time {
+    font-size: 10px;
+    margin: 0px;
+    padding: 0px 1em 0px 1em;
+    border: medium none;
+    background-color: #7BDB5F;
+}
+
+.source table .null_stats {
+    font-size: 10px;
+    margin: 0px;
+    padding: 0px 0px 0px 1em;
+    border: medium none;
+    color: #ff0000;
+}
+
+h2.title {
+    font-stretch: condensed;
+    font-weight: bold;
+    font-size: 30px;
+    color: #354A57;
+    line-height: 1;
+    text-transform: uppercase;
+    text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5);
+    padding: 0px 0px 20px;
+}
+
+.sourceFile {
+    display: table;
+    border-collapse: separate;
+    border-spacing: 0px;
+}
+
+.sourcePath {
+    border-bottom: 2px solid #354A57;
+    font-size: 14px;
+    font-style: italic;
+    padding: 10px 0px 5px;
+}
+
+.para {
+    padding-left: 10px;
+}
+
+.refname {
+    color: #ff6c0a;
+}
+.refpurpose {
+    font-size: 110%;
+}
+
+.synopsis {
+    border: 1px solid black;
+    width:80%;
+    padding: 0.5em;
+}
+
+.editbar {
+    text-align: right;
+}
+
+.term {
+    color:#800000;
+    font-size:100%;
+}
+
+h3 {
+    color: #000063;
+    font-weight: bold;
+    font-size:130%;
+    margin-bottom: 10px;
+}
+
+.programlisting {
+    font-family: monospace;
+    font-size: 100%;
+    background-color:#EEEEFF;
+    border-color:#CCCCCC;
+    border-style:solid;
+    border-width:2px medium;
+    width:80%;
+    color:#333333;
+    line-height:120%;
+    padding:10px;
+}
+
+.literal {
+    font-family: monospace;
+    font-size: 100%;
+}
+
+.option {
+    font-family: monospace;
+    font-style: italic;
+    font-size: 100%;
+}
+
+.command {
+    font-family: monospace;
+    font-size: 100%;
+    color: #32b9b9;
+}
+
+.function {
+    font-family: monospace;
+    font-size: 100%;
+    color: #32b9b9;
+}
+
+.varname {
+    font-family: monospace;
+    font-weight: bold;
+    font-size: 100%;
+}
+
+.constant {
+    font-family: monospace;
+    font-size: 100%;
+    color: #da70d6;
+}
+
+a {
+    color: blue;
+    text-decoration:none;
+}
+
+a:hover {
+    text-decoration:underline;
+}
+
+.itemizedlist {
+    list-style-type: disk;
+}
+
+.inline-list li {
+    display: inline;
+    list-style-type: disk;
+}
+
+.vert-list {
+    list-style-type: disk;
+}
+
+pre {
+    margin-bottom: 0px;
+    margin-top: 0px;
+}
+
+.leftpart {
+    position:absolute;
+    float:left;
+    width: 186px;
+    padding: 5px;
+    font-size: smaller;
+}
+
+.content {
+    margin-top: 100px;
+    margin-left: 196px
+}
+
+.container {
+    margin: 0 auto;
+    width:1024px;
+}
+
+ul.toc li.list-active {
+    list-style-type:disc;
+    font-weight:bold;
+}
+
+ul.toc li.parent {
+    font-size: 115%;
+    padding: 5px 0px 5px 11px;
+    border-bottom: 1px solid #cccccc;
+    margin-bottom: 5px;
+}
+
+ul.toc li.root {
+    font-size: 135%;
+    padding: 5px 0px 5px 11px;
+    border-bottom: 1px solid #cccccc;
+    margin-bottom: 5px;
+}
+
+ul.toc li {
+    font-size: 85%;
+    margin: 1px 0 1px 1px;
+    padding: 1px 0 1px 11px;
+    background-repeat: no-repeat;
+    background-position: center left;
+    list-style-type: circle;
+}
+
+.next {
+    float:right;
+    text-align: right;
+}
+
+.center {
+    text-align: center;
+}
+
+.screen {
+    font-family: monospace;
+    font-size: 100%;
+    background-color:#FFFFFF;
+    border-color:#CCCCCC;
+    border-style:solid;
+    border-width:2px medium;
+    width:80%;
+    color:#333333;
+    line-height:120%;
+    padding:10px;
+}
+
+/* Top and bottom navigation controls on manual pages --------------------- */
+div.manualnavbar {
+    background-color: #E0E0E0;
+        color: inherit;
+        padding: 4px;
+        margin-bottom: 10px;
+}
+div.manualnavbar .prev {
+        padding-right: 4px;
+}
+div.manualnavbar .next {
+    text-align: right;
+        padding-left: 4px;
+}
+
+div.manualnavbar .top {
+        text-align: center;
+            display: block;
+}
+
+div.manualnavbar hr {
+        color: #cccccc;
+        background-color: #cccccc;
+}
+
+/* Footer navigation area ------------------------------------------------- */
+
+#pagefooter {
+        position: relative;
+        font-size: 75%;
+        color: inherit;
+        background-color: #e5e5e5;
+        width: 100%;
+}
+
+#pagefooterleft {
+        top: 0px;
+        left: 0px;
+        padding: 6px;
+        margin-right: 30%;
+}
+
+#pagefooterright {
+        text-align: right;
+        margin-left: 50%;
+        padding: 6px;
+}
+#footnav {
+        color: inherit;
+        background-color: #9999cc;
+        border-width: 1px 0px;
+        border-color: #333366;
+        border-style: solid;
+        text-align: right;
+        padding-right: 6px;
+}
+
+
+
+
+                #global{
+/*                      width: 90%; */
+                        max-width: 90em;
+/*                      min-width: 850px; */
+                        margin-left: auto;
+                        margin-right: auto;
+                }
+
+                #myHeader{
+                        background-color:#000000;
+                        color:white;
+                        margin-bottom : 10px;
+    position            : relative;
+    text-align: center;
+/*    width               : 1024px;*/
+    height              : 100px;
+    padding-left        : 20px;
+    background          : url("http://atoms.scilab.org/images/homepage/cadre_head.png");
+    background-repeat   : no-repeat;
+    background-position : 0px 0px;
+
+                }
+
+                #myFooter{
+                        background-color:#E5E5E5;
+                        color:black;
+/*                      width: 90%;*/
+                        max-width: 90em;
+/*                      min-width: 850px;
+                        margin-left: 5%;
+                        margin-right: 5%;*/
+                        margin-top:10px;
+                        padding:10px;
+                }
+
+                #mainArea{
+                        width: 100%;
+                        overflow: hidden;
+                }
+
+                #myLeftArea{
+                        color:white;
+                        float: left;
+                        width: 180px;
+                        padding:5px;
+                }
+
+                #myMiddleArea{
+                        color:black;
+                        margin-left: 200px;
+                        padding: 10px 20px;
+                }
+
+                #myRightArea{
+                        color:white;
+                        float: right;
+                        width: 200px;
+                        padding: 12px 20px;
+                }
+
+
+div#cadre_head
+{
+    position            : relative;
+    text-align: center;
+/*    width               : 1024px;*/
+    height              : 100px;
+    padding-left        : 20px;
+    background          : url("/img/cadre_head.png");
+    background-repeat   : no-repeat;
+    background-position : 0px 0px;
+}
+
+
+div#slogan{
+    position: absolute;
+    top : 50px;
+    left:251px;
+    color:#0000AA;
+}
+div#cadre_help
+{
+    position: absolute;
+    top:45px;
+    right:0px;
+    font-size:0.8em;
+    color:#0000AA;
+}
+
+table.revhistory
+{ 
+  width:80%;
+  border-color:#CCCCCC;
+  border-style:solid;
+  border-width:2px medium;
+  margin-bottom: 10px;
+}
+
+table.revhistory tr.title td
+{ 
+  background-color: #9999CC;
+}
\ No newline at end of file
diff --git a/scilab/modules/coverage/etc/coverage.quit b/scilab/modules/coverage/etc/coverage.quit
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scilab/modules/coverage/etc/coverage.start b/scilab/modules/coverage/etc/coverage.start
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scilab/modules/coverage/includes/CodePrinter.hxx b/scilab/modules/coverage/includes/CodePrinter.hxx
new file mode 100644 (file)
index 0000000..6ae3539
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __CODE_PRINTER_HXX__
+#define __CODE_PRINTER_HXX__
+
+#include <string>
+
+#include "exp.hxx"
+
+namespace coverage
+{
+
+class CodePrinter
+{
+
+public:
+
+    virtual void handleDefault(const std::wstring & seq) = 0;
+    virtual void handleOperator(const std::wstring & seq) = 0;
+    virtual void handleOpenClose(const std::wstring & seq) = 0;
+    virtual void handleFunctionKwds(const std::wstring & seq) = 0;
+    virtual void handleStructureKwds(const std::wstring & seq) = 0;
+    virtual void handleControlKwds(const std::wstring & seq) = 0;
+    virtual void handleConstants(const std::wstring & seq) = 0;
+    virtual void handleCommands(const std::wstring & seq) = 0;
+    virtual void handleMacros(const std::wstring & seq) = 0;
+    virtual void handleFunctionName(const std::wstring & seq) = 0;
+    virtual void handleFunctionNameDec(const std::wstring & seq) = 0;
+    virtual void handleName(const std::wstring & seq) = 0;
+    virtual void handleInOutArgsDec(const std::wstring & seq) = 0;
+    virtual void handleInOutArgs(const std::wstring & seq) = 0;
+    virtual void handleNumber(const std::wstring & seq) = 0;
+    virtual void handleSpecial(const std::wstring & seq) = 0;
+    virtual void handleString(const std::wstring & seq) = 0;
+    virtual void handleNothing(const std::wstring & seq) = 0;
+    virtual void handleField(const std::wstring & seq) = 0;
+    virtual void handleComment(const std::wstring & seq) = 0;
+    virtual void handleNewLine() = 0;
+    virtual void handleExpStart(const ast::Exp * e) = 0;
+    virtual void handleExpEnd(const ast::Exp * e) = 0;
+    virtual unsigned int getLineCharCount() const = 0;
+    virtual std::size_t getIndentSize() const = 0;
+    virtual void incIndent() = 0;
+    virtual void decIndent() = 0;
+};
+
+} // namespace coverage
+
+
+#endif // __CODE_PRINTER_HXX__
diff --git a/scilab/modules/coverage/includes/CodePrinterVisitor.hxx b/scilab/modules/coverage/includes/CodePrinterVisitor.hxx
new file mode 100644 (file)
index 0000000..751ab42
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __CODE_PRINTER_VISITOR_HXX__
+#define __CODE_PRINTER_VISITOR_HXX__
+
+#include "visitor.hxx"
+#include "allexp.hxx"
+#include "allvar.hxx"
+#include "alldec.hxx"
+#include "token.hxx"
+#include "CodePrinter.hxx"
+
+namespace coverage
+{
+
+class CodePrinterVisitor : public ast::GenVisitor<ast::const_kind>
+{
+
+    CodePrinter & printer;
+
+public:
+
+    CodePrinterVisitor(CodePrinter & _printer) : printer(_printer) { }
+
+    CodePrinterVisitor * clone()
+       {
+           return new CodePrinterVisitor(printer);
+       }
+
+    virtual void visit(const ast::MatrixExp & e);
+    virtual void visit(const ast::MatrixLineExp & e);
+    virtual void visit(const ast::CellExp & e);
+    virtual void visit(const ast::StringExp & e);
+    virtual void visit(const ast::CommentExp & e);
+    virtual void visit(const ast::DoubleExp & e);
+    virtual void visit(const ast::BoolExp & e);
+    virtual void visit(const ast::NilExp & e);
+    virtual void visit(const ast::SimpleVar & e);
+    virtual void visit(const ast::ColonVar & e);
+    virtual void visit(const ast::DollarVar & e);
+    virtual void visit(const ast::ArrayListVar & e);
+    virtual void visit(const ast::FieldExp & e);
+    virtual void visit(const ast::OpExp & e);
+    virtual void visit(const ast::LogicalOpExp & e);
+    virtual void visit(const ast::AssignExp & e);
+    virtual void visit(const ast::CellCallExp & e);
+    virtual void visit(const ast::CallExp & e);
+    virtual void visit(const ast::IfExp & e);
+    virtual void visit(const ast::TryCatchExp & e);
+    virtual void visit(const ast::WhileExp & e);
+    virtual void visit(const ast::ForExp & e);
+    virtual void visit(const ast::BreakExp & e);
+    virtual void visit(const ast::ContinueExp & e);
+    virtual void visit(const ast::ReturnExp & e);
+    virtual void visit(const ast::SelectExp & e);
+    virtual void visit(const ast::CaseExp & e);
+    virtual void visit(const ast::SeqExp & e);
+    virtual void visit(const ast::ArrayListExp & e);
+    virtual void visit(const ast::AssignListExp & e);
+    virtual void visit(const ast::NotExp & e);
+    virtual void visit(const ast::TransposeExp & e);
+    virtual void visit(const ast::VarDec & e);
+    virtual void visit(const ast::FunctionDec & e);
+    virtual void visit(const ast::ListExp & e);
+    virtual void visit(const ast::OptimizedExp & e);
+    virtual void visit(const ast::DAXPYExp & e);
+    virtual void visit(const ast::MemfillExp & e);
+    virtual void visit(const ast::IntSelectExp & e);
+    virtual void visit(const ast::StringSelectExp & e);
+    
+};
+
+} // namespace coverage
+
+
+#endif // __CODE_PRINTER_VISITOR_HXX__
diff --git a/scilab/modules/coverage/includes/Counter.hxx b/scilab/modules/coverage/includes/Counter.hxx
new file mode 100644 (file)
index 0000000..c69dbac
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __COUNTER_HXX__
+#define __COUNTER_HXX__
+
+#include <chrono>
+
+#include "allexp.hxx"
+#include "allvar.hxx"
+#include "alltypes.hxx"
+
+namespace coverage
+{
+
+class Counter
+{
+
+    uint64_t counter;
+    uint64_t cumTime;
+    std::chrono::steady_clock::time_point start;
+    bool isRunning;
+    types::Macro * macro;
+    ast::Exp * e;
+
+public:
+
+    Counter(types::Macro * _macro, ast::Exp * _e) : counter(0), cumTime(0), macro(_macro), e(_e), isRunning(false) { }
+
+    inline void inc()
+    {
+        ++counter;
+    }
+
+    inline uint64_t get() const
+    {
+        return counter;
+    }
+
+    inline types::Macro * getMacro()
+    {
+        return macro;
+    }
+
+    inline ast::Exp * getExp()
+    {
+        return e;
+    }
+
+    inline types::Macro * getMacro() const
+    {
+        return macro;
+    }
+
+    inline ast::Exp * getExp() const
+    {
+        return e;
+    }
+
+    inline void startChrono()
+    {
+        start = std::chrono::steady_clock::now();
+        isRunning = true;
+    }
+
+    inline void stopChrono()
+    {
+        if (isRunning)
+        {
+            cumTime += std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now() - start).count();
+            isRunning = false;
+        }
+    }
+
+    inline uint64_t getNanoTime() const
+    {
+        return cumTime;
+    }
+};
+
+class CallCounter
+{
+    uint64_t counter;
+
+public:
+
+    CallCounter() : counter(0) { }
+
+    inline void inc()
+    {
+        ++counter;
+    }
+
+    inline uint64_t get() const
+    {
+        return counter;
+    }
+
+    inline uint64_t get()
+    {
+        return counter;
+    }
+};
+
+} // namespace coverage
+
+#endif // __COUNTER_HXX__
diff --git a/scilab/modules/coverage/includes/CovHTMLCodePrinter.hxx b/scilab/modules/coverage/includes/CovHTMLCodePrinter.hxx
new file mode 100644 (file)
index 0000000..9ec3430
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __COV_HTML_CODE_PRINTER_HXX__
+#define __COV_HTML_CODE_PRINTER_HXX__
+
+#include <iostream>
+#include <map>
+#include <sstream>
+#include <stack>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include "CodePrinter.hxx"
+#include "CoverResult.hxx"
+#include "URLEncoder.hxx"
+#include "MacroLoc.hxx"
+
+namespace coverage
+{
+
+    
+    class CovHTMLCodePrinter : public CodePrinter
+    {
+
+        std::wostringstream & out;
+        unsigned int indentLevel;
+        unsigned int counter;
+        unsigned lineCount;
+        bool isNewLine;
+        const ast::Exp * current;
+        const ast::Exp * last;
+        std::map<MacroLoc, CoverResult> & results;
+        std::unordered_set<std::wstring> locals;
+        std::stack<std::pair<MacroLoc, CoverResult *>> fnStack;
+        unsigned int fnId;
+
+    public:
+
+        CovHTMLCodePrinter(std::wostringstream & _out, std::map<MacroLoc, CoverResult> & _results) : out(_out), indentLevel(0), counter(0), lineCount(0), isNewLine(true), current(nullptr), last(nullptr), results(_results), fnId(0)
+            {
+            }
+
+        void handleDefault(const std::wstring & seq) override;
+        void handleOperator(const std::wstring & seq) override;
+        void handleOpenClose(const std::wstring & seq) override;
+        void handleFunctionKwds(const std::wstring & seq) override;
+        void handleStructureKwds(const std::wstring & seq) override;
+        void handleControlKwds(const std::wstring & seq) override;
+        void handleConstants(const std::wstring & seq) override;
+        void handleCommands(const std::wstring & seq) override;
+        void handleMacros(const std::wstring & seq) override;
+        void handleFunctionName(const std::wstring & seq) override;
+        void handleFunctionNameDec(const std::wstring & seq) override;
+        void handleName(const std::wstring & seq) override;
+        void handleInOutArgsDec(const std::wstring & seq) override;
+        void handleInOutArgs(const std::wstring & seq) override;
+        void handleNumber(const std::wstring & seq) override;
+        void handleSpecial(const std::wstring & seq) override;
+        void handleString(const std::wstring & seq) override;
+        void handleNothing(const std::wstring & seq) override;
+        void handleField(const std::wstring & seq) override;
+        void handleComment(const std::wstring & seq) override;
+        void handleNewLine() override;
+        void handleExpStart(const ast::Exp * e) override;
+        void handleExpEnd(const ast::Exp * e) override;
+
+        inline std::size_t getIndentSize() const
+            {
+                return indentLevel * 4;
+            }
+
+        inline void incIndent()
+            {
+                ++indentLevel;
+            }
+
+        inline void decIndent()
+            {
+                --indentLevel;
+            }
+
+        inline unsigned int getLineCharCount() const
+            {
+                return counter;
+            }
+
+        inline void close()
+            {
+                if (lineCount)
+                {
+                    out << L"</pre></td><td></td><td></td><td></td>\n</tr>\n";
+                    out.flush();
+                }
+            }
+
+        static std::wstring replaceByEntities(const std::wstring & seq);
+        static void getDivPercent(std::wostringstream & out, const unsigned int percent);
+        static std::wstring getOrderButton(const unsigned int tableid, const unsigned int id, const unsigned int col, const bool enabled);
+        static void getFunctionStats(std::wostringstream & out, const MacroLoc & ml, const CoverResult & result);
+
+    private:
+
+        void addNewLineHeader();
+
+        inline const std::wstring & getCurrentFunctionName() const
+            {
+                return fnStack.top().first.name;
+            }
+
+       inline const MacroLoc & getCurrentMacro() const
+            {
+                return fnStack.top().first;
+            }
+
+        inline CoverResult & getCurrentResult() const
+            {
+                return *fnStack.top().second;
+            }
+
+        inline bool isInsideKnownFunction() const
+            {
+                return !fnStack.empty() && fnStack.top().second != nullptr;
+            }
+
+        inline void count(const std::wstring & seq)
+            {
+                counter += seq.length();
+            }
+
+        inline static void pushEntity(std::vector<wchar_t> & buf, const wchar_t * wstr, const unsigned char len)
+            {
+                for (unsigned int i = 0; i < len; ++i)
+                {
+                    buf.push_back(wstr[i]);
+                }
+            }
+
+    };
+
+} // namespace coverage
+
+
+#endif // __COV_HTML_CODE_PRINTER_HXX__
diff --git a/scilab/modules/coverage/includes/CoverAction.hxx b/scilab/modules/coverage/includes/CoverAction.hxx
new file mode 100644 (file)
index 0000000..7ab5c93
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __COVER_ACTION_HXX__
+#define __COVER_ACTION_HXX__
+
+#include <functional>
+#include <unordered_set>
+
+#include "macro.hxx"
+#include "tools.hxx"
+
+namespace coverage
+{
+
+class CoverAction
+{
+    struct __Caller
+    {
+        const types::Macro * caller;
+        const Location & loc;
+        mutable uint64_t count;
+
+        __Caller(const types::Macro * _caller, const Location & _loc) : caller(_caller), loc(_loc), count(0) { }
+
+        inline void call() const
+        {
+            ++count;
+        }
+
+        struct Hash
+        {
+            inline std::size_t operator()(const __Caller & c) const
+            {
+                return analysis::tools::hash_combine(std::hash<const types::Macro *>()(c.caller), c.loc.first_line, c.loc.first_column, c.loc.last_line, c.loc.last_column);
+            }
+        };
+
+        struct Eq
+        {
+            inline bool operator()(const __Caller & L, const __Caller & R) const
+            {
+                return L.caller == R.caller && L.loc == R.loc;
+            }
+        };
+    };
+
+    typedef std::unordered_set<__Caller, __Caller::Hash, __Caller::Eq> SiteSet;
+    SiteSet sites;
+
+public:
+
+    CoverAction() { }
+
+    inline void call(const types::Macro * caller, const Location & loc)
+    {
+        __Caller c(caller, loc);
+        SiteSet::iterator i = sites.find(c);
+        if (i == sites.end())
+        {
+            i = sites.insert(c).first;
+        }
+        i->call();
+    }
+
+};
+
+} // namespace coverage
+
+#endif // __COVER_ACTION_HXX__
diff --git a/scilab/modules/coverage/includes/CoverMacroInfo.hxx b/scilab/modules/coverage/includes/CoverMacroInfo.hxx
new file mode 100644 (file)
index 0000000..ac6170a
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __COVER_MACRO_INFO_HXX__
+#define __COVER_MACRO_INFO_HXX__
+
+#include <iostream>
+#include <string>
+#include <cinttypes>
+
+namespace coverage
+{
+
+struct CoverMacroInfo
+{
+    const std::wstring macroModule;
+    const std::wstring macroFilePath;
+    const uint64_t instrsCount;
+    const uint64_t branchesCount;
+    const uint64_t pathsCount;
+
+    CoverMacroInfo(const std::wstring & _macroModule, const std::wstring & _macroFilePath, const uint64_t _instrsCount, const uint64_t _branchesCount, const uint64_t _pathsCount) : macroModule(_macroModule), macroFilePath(_macroFilePath), instrsCount(_instrsCount), branchesCount(_branchesCount), pathsCount(_pathsCount) { }
+
+    friend std::wostream & operator<<(std::wostream & out, const CoverMacroInfo & cmi)
+    {
+        out << L"instrs: " << cmi.instrsCount << L" branches: " << cmi.branchesCount << L" paths: " << cmi.pathsCount;
+        return out;
+    }
+
+    void toBin(std::fstream & out) const;
+    static CoverMacroInfo fromBin(std::fstream & in);
+};
+
+} // namespace coverage
+
+#endif // __COVER_MACRO_INFO_HXX__
diff --git a/scilab/modules/coverage/includes/CoverModule.hxx b/scilab/modules/coverage/includes/CoverModule.hxx
new file mode 100644 (file)
index 0000000..854ddc6
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  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-en.txt
+ *
+ */
+
+#ifndef __COVER_MODULE_HXX__
+#define __COVER_MODULE_HXX__
+
+#include <cstring>
+#include <iostream>
+#include <string>
+#include <memory>
+#include <map>
+#include <tuple>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include "Counter.hxx"
+#include "InstrumentVisitor.hxx"
+#include "CoverMacroInfo.hxx"
+#include "CoverResult.hxx"
+#include "MacroLoc.hxx"
+#include "dynlib_coverage.h"
+#include "UTF8.hxx"
+
+namespace coverage
+{
+
+class COVERAGE_IMPEXP CoverModule
+{
+
+    std::vector<Counter> counters;
+    std::unordered_map<types::Callable *, CallCounter> callCounters;
+    std::unordered_map<types::Macro *, CoverMacroInfo> macros;
+
+    // { moduleName => functions }
+    std::unordered_multimap<std::wstring, types::Callable *> functions;
+
+    // { moduleName => { macroFilename => { macroName => CoverResult } } }
+    std::unordered_map<std::wstring, std::unordered_map<std::wstring, std::map<MacroLoc, CoverResult>>> results;
+    // { moduleName => { funname => <ismacro, counter> } }
+    std::unordered_map<std::wstring, std::unordered_map<std::wstring, std::pair<bool, uint64_t>>> allCounters;
+
+    InstrumentVisitor visitor;
+
+    static CoverModule * instance;
+
+    CoverModule(const std::vector<std::pair<std::wstring, std::wstring>> & paths_mods);
+    CoverModule(const std::vector<std::wstring> & moduleNames);
+    CoverModule();
+
+    ~CoverModule();
+
+public:
+
+    inline static CoverModule * createInstance(const std::vector<std::pair<std::wstring, std::wstring>> & paths_mods)
+    {
+        delete instance;
+        instance = new CoverModule(paths_mods);
+        return instance;
+    }
+
+    inline static CoverModule * createInstance(const std::vector<std::wstring> & moduleNames)
+    {
+        delete instance;
+        instance = new CoverModule(moduleNames);
+        return instance;
+    }
+
+    inline static CoverModule * createInstance()
+    {
+        delete instance;
+        instance = new CoverModule();
+        return instance;
+    }
+
+    inline static CoverModule * getInstance()
+    {
+        return instance;
+    }
+
+    inline static void clearInstance()
+    {
+        delete instance;
+        instance = nullptr;
+    }
+
+    void add(types::Macro * macro, ast::Exp * e);
+    void invoke(types::Callable * f);
+    void invoke(const uint64_t id);
+    void print();
+    void collect();
+    void toHTML(const std::wstring & outputDir);
+    void toBin(std::fstream & out) const;
+    void save(const std::wstring & path) const;
+    void load(const std::wstring & path);
+
+    void fromBin(std::fstream & in);
+    static void fromBin(CoverModule & cm, std::fstream & in);
+    static void merge(const std::vector<std::wstring> & paths, const std::wstring & out);
+    static void toHTML(const std::wstring & inBin, const std::wstring & outDir);
+
+    inline bool isCovered(types::Callable * f) const
+    {
+        return callCounters.find(f) != callCounters.end();
+    }
+
+    inline void startChrono(const uint64_t id)
+    {
+        counters[id - 2].startChrono();
+    }
+
+    inline void stopChrono(const uint64_t id)
+    {
+        counters[id - 2].stopChrono();
+    }
+
+    inline static void invoke(const ast::Exp & e)
+    {
+        if (instance && e.getCoverId())
+        {
+            instance->invoke(e.getCoverId());
+        }
+    }
+
+    inline static void invokeAndStartChrono(const ast::Exp & e)
+    {
+        if (instance && e.getCoverId())
+        {
+            instance->invoke(e.getCoverId());
+            instance->startChrono(e.getCoverId());
+        }
+    }
+
+    inline static void startChrono(const ast::Exp & e)
+    {
+        if (instance && e.getCoverId())
+        {
+            instance->startChrono(e.getCoverId());
+        }
+    }
+
+    inline static void stopChrono(const ast::Exp & e)
+    {
+        if (instance && e.getCoverId())
+        {
+            instance->stopChrono(e.getCoverId());
+        }
+    }
+
+    inline static void write(std::fstream & out, const std::wstring & str)
+    {
+        const std::string _str = scilab::UTF8::toUTF8(str);
+        uint32_t n = _str.size();
+        out.write((char *)&n, sizeof(uint32_t));
+        out.write(_str.c_str(), sizeof(char) * n);
+    }
+
+    inline static void write(std::fstream & out, const uint64_t n)
+    {
+        out.write((char *)&n, sizeof(uint64_t));
+    }
+
+    inline static void write(std::fstream & out, const int32_t n)
+    {
+        out.write((char *)&n, sizeof(int32_t));
+    }
+
+    inline static void write(std::fstream & out, const bool n)
+    {
+        out.write((char *)&n, sizeof(bool));
+    }
+
+    inline static void write(std::fstream & out, const Location & loc)
+    {
+        write(out, loc.first_line);
+        write(out, loc.first_column);
+        write(out, loc.last_line);
+        write(out, loc.last_column);
+    }
+
+    inline static std::wstring readWstring(std::fstream & in)
+    {
+        uint32_t n;
+        in.read((char*)&n, sizeof(uint32_t));
+        char * buf = new char[n + 1];
+        buf[n] = '\0';
+        in.read(buf, n * sizeof(char));
+        wchar_t * wstr = to_wide_string(buf);
+        std::wstring str(wstr);
+        delete[] buf;
+        FREE(wstr);
+
+        return str;
+    }
+
+    inline static uint64_t readUint64_t(std::fstream & in)
+    {
+        uint64_t n;
+        in.read((char *)&n, sizeof(uint64_t));
+
+        return n;
+    }
+
+    inline static int32_t readInt32_t(std::fstream & in)
+    {
+        int32_t n;
+        in.read((char *)&n, sizeof(int32_t));
+
+        return n;
+    }
+
+    inline static bool readBool(std::fstream & in)
+    {
+        bool n;
+        in.read((char *)&n, sizeof(bool));
+
+        return n;
+    }
+
+    inline static Location readLocation(std::fstream & in)
+    {
+        const int32_t fl = readInt32_t(in);
+        const int32_t fc = readInt32_t(in);
+        const int32_t ll = readInt32_t(in);
+        const int32_t lc = readInt32_t(in);
+
+        return Location(fl, ll, fc, lc);
+    }
+
+
+    void instrumentSingleMacro(const std::wstring & module, const std::wstring & path, types::Macro * macro, bool instrumentInners);
+
+private:
+
+    void getMacros(const std::vector<std::pair<std::wstring, std::wstring>> & paths_mods);
+    void getMacros(const std::wstring & path, const std::wstring & module);
+    void getMacrosFromDir(const std::wstring & path, const std::wstring & module);
+    void getBuiltins(const std::vector<std::pair<std::wstring, std::wstring>> & paths_mods);
+    void instrumentMacro(const std::wstring & module, const std::wstring & path, types::Macro * macro);
+
+    static bool getStringFromXPath(char * filePath, const char * xpquery, std::unordered_set<std::wstring> & set);
+    static void copyDataFiles(const std::wstring & outputDir);
+    static void copyFile(const std::wstring & inDir, const std::wstring & outDir, const std::wstring & filename);
+    static void writeFile(const std::wostringstream & out, const std::wstring & outputDir, const std::wstring & filename);
+    static ast::Exp * getTree(const std::wstring