Skip to content

Commit 6ca9153

Browse files
committed
Add a predicate for identifying any name in a standard
1 parent 384b245 commit 6ca9153

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

cpp/common/src/codingstandards/cpp/StandardLibraryNames.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ extensible predicate libraryMemberVariableModel(
4141
signature module StandardLibrary {
4242
string getName();
4343

44+
/**
45+
* Holds if this standard declares `name` in `header`.
46+
*/
47+
default predicate hasName(string header, string name) {
48+
hasMacroName(header, name, _) or
49+
hasTypeName(header, _, name) or
50+
hasObjectName(header, _, name, _, _) or
51+
hasFunctionName(header, _, _, name, _, _, _) or
52+
hasMemberVariableName(header, _, _, name, _)
53+
}
54+
4455
default predicate hasMacroName(string header, string name, string parameters) {
4556
libraryMacroModel(getName(), header, name, parameters)
4657
}
@@ -68,6 +79,8 @@ signature module StandardLibrary {
6879
) {
6980
libraryMemberVariableModel(getName(), header, namespace, declaringType, name, type)
7081
}
82+
83+
default string getAHeader() { hasName(result, _) }
7184
}
7285

7386
module CStandardLibrary {

0 commit comments

Comments
 (0)