License Header change: Removed the LICENSE_END before beta
[scilab.git] / scilab / modules / ast / includes / system_env / coverage_instance.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #ifndef __COVERAGE_INSTANCE_HXX__
17 #define __COVERAGE_INSTANCE_HXX__
18
19 extern "C"
20 {
21 #include "dynlib_ast.h"
22 #include "CoverModule_interface.h"
23 }
24
25 namespace types
26 {
27 class Callable;
28 }
29
30 namespace ast
31 {
32 class Exp;
33
34 class EXTERN_AST CoverageInstance
35 {
36     //coverage
37 private:
38     static void* coverage;
39 public:
40     static inline void* getCoverage()
41     {
42         return coverage;
43     }
44
45     static inline void setCoverage(void* cov)
46     {
47         coverage = cov;
48     }
49
50     static inline void invoke(const ast::Exp& exp)
51     {
52         if (coverage)
53         {
54             CoverModule_invokeExp((void*)&exp);
55         }
56     }
57
58     static inline void invoke(types::Callable* call)
59     {
60         if (coverage)
61         {
62             CoverModule_invokeCallable(call);
63         }
64     }
65
66     static inline void invokeAndStartChrono(void* exp)
67     {
68         if (coverage)
69         {
70             CoverModule_invokeAndStartChrono(exp);
71         }
72     }
73
74     static inline void stopChrono(void* exp)
75     {
76         if (coverage)
77         {
78             CoverModule_stopChrono(exp);
79         }
80     }
81 };
82 }
83 #endif /* !__COVERAGE_INSTANCE_HXX__ */