10
10
* external/misra/obligation/required
11
11
*/
12
12
13
- import cpp
14
- import codingstandards.c.misra
15
-
16
- class SetJmp extends Locatable {
17
- string name ;
18
-
19
- SetJmp ( ) {
20
- this .getFile ( ) .getAbsolutePath ( ) .matches ( "%setjmp.h" ) and
21
- name = [ this .( Macro ) .getName ( ) , this .( Function ) .getName ( ) ] and
22
- name = [ "setjmp" , "longjmp" ]
23
- }
24
-
25
- Locatable getAnInvocation ( ) {
26
- result = this .( Macro ) .getAnInvocation ( ) or
27
- result = this .( Function ) .getACallToThisFunction ( )
28
- }
29
-
30
- string getName ( ) { result = name }
31
- }
32
-
33
- from Locatable use , string name
34
- where
35
- not isExcluded ( use , BannedPackage:: standardHeaderFileUsedSetjmphQuery ( ) ) and
36
- exists ( SetJmp jmp |
37
- use = jmp .getAnInvocation ( ) and
38
- name = jmp .getName ( )
39
- )
40
- select use , "Use of " + name + "."
41
-
13
+ import cpp
14
+ import codingstandards.c.misra
15
+
16
+ abstract class Jmp extends Locatable {
17
+ string name ;
18
+
19
+ Jmp ( ) {
20
+ this .getFile ( ) .getAbsolutePath ( ) .matches ( "%setjmp.h" ) and
21
+ name = [ this .( Macro ) .getName ( ) , this .( Function ) .getName ( ) ]
22
+ }
23
+
24
+ Locatable getAnInvocation ( ) {
25
+ result = this .( Macro ) .getAnInvocation ( ) or
26
+ result = this .( Function ) .getACallToThisFunction ( )
27
+ }
28
+
29
+ string getName ( ) { result = name }
30
+ }
31
+
32
+ class SetJmp extends Jmp {
33
+ SetJmp ( ) {
34
+ name = "setjmp" and
35
+ this .( Macro ) .getName ( ) = name
36
+ }
37
+ }
38
+
39
+ class LongJmp extends Jmp {
40
+ LongJmp ( ) {
41
+ name = "longjmp" and
42
+ [ this .( Macro ) .getName ( ) , this .( Function ) .getName ( ) ] = name
43
+ }
44
+ }
45
+
46
+ from Locatable use , string name
47
+ where
48
+ not isExcluded ( use , BannedPackage:: standardHeaderFileUsedSetjmphQuery ( ) ) and
49
+ exists ( Jmp jmp |
50
+ use = jmp .getAnInvocation ( ) and
51
+ name = jmp .getName ( )
52
+ )
53
+ select use , "Use of " + name + "."
0 commit comments