FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
codeql/cpp/ql/lib/semmle/code/cpp/Include.qll at codeql-cli/v2.27.1 · github/codeql · GitHub
github
codeql
Repository navigation
Code
Issues
1k
(1k)
Pull requests
481
(481)
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
codeql
/
cpp
/
ql
/
lib
/
semmle
/
code
/
cpp
/
Include.qll
Copy path
More file actions
More file actions
Latest commit
History
History
History
80 lines (71 loc) · 2.36 KB
Breadcrumbs
codeql
/
cpp
/
ql
/
lib
/
semmle
/
code
/
cpp
/
Include.qll
Copy path
File metadata and controls
80 lines (71 loc) · 2.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
* Provides classes representing C/C++ `#include`, `#include_next`, and `#import` preprocessor
* directives.
*/
import
semmle.code.cpp.Preprocessor
/**
* A C/C++ `#include`, `#include_next`, or `#import` preprocessor
* directive. The following example contains four different `Include`
* directives:
* ```
* #include "header.h"
* #include <string>
* #include_next <header2.h>
* #import <header3.h>
* ```
*/
class
Include
extends
PreprocessorDirective
,
@ppd_include
{
override
string
toString
(
)
{
result
=
"#include "
+
this
.
getIncludeText
(
)
}
/**
* Gets the token which occurs after `#include`, for example `"filename"`
* or `<filename>`.
*/
string
getIncludeText
(
)
{
result
=
this
.
getHead
(
)
}
/** Gets the file directly included by this `#include`. */
File
getIncludedFile
(
)
{
includes
(
underlyingElement
(
this
)
,
unresolveElement
(
result
)
)
}
/**
* Gets a file which might be transitively included by this `#include`.
*
* Note that as this isn't computed within the context of a particular
* translation unit, it is often a slight over-approximation.
*/
predicate
provides
(
File
l
)
{
exists
(
Include
i
|
this
.
getAnInclude
*
(
)
=
i
and
i
.
getIncludedFile
(
)
=
l
)
}
/**
* A `#include` which appears in the file directly included by this
* `#include`.
*/
Include
getAnInclude
(
)
{
this
.
getIncludedFile
(
)
=
result
.
getFile
(
)
}
}
/**
* A `#include_next` preprocessor directive (a non-standard extension to
* C/C++). For example the following code contains one `IncludeNext` directive:
* ```
* #include_next <header2.h>
* ```
*/
class
IncludeNext
extends
Include
,
@ppd_include_next
{
override
string
toString
(
)
{
result
=
"#include_next "
+
this
.
getIncludeText
(
)
}
}
/**
* An Objective C `#import` preprocessor directive (supported by GCC as
* an extension in C). For example the following code contains one `Import`
* directive:
* ```
* #import <header3.h>
* ```
*/
class
Import
extends
Include
,
@ppd_objc_import
{
override
string
toString
(
)
{
result
=
"#import "
+
this
.
getIncludeText
(
)
}
}
/**
* A Microsoft `#import` preprocessor directive for importing a type library.
* For example the following code contains one `TypeLibraryImport` directive:
* ```
* #import "library.tlb"
* ```
*/
class
TypeLibraryImport
extends
Include
,
@ppd_ms_import
{
override
string
toString
(
)
{
result
=
"#import "
+
this
.
getIncludeText
(
)
}
}
Back
|
FazBrowse Home
|
New Git URL