Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c9f846e

Browse files
committed
C++: Give Iterator a proper interface.
1 parent b5326b3 commit c9f846e

6 files changed

Lines changed: 14 additions & 7 deletions

File tree

cpp/ql/src/semmle/code/cpp/models/implementations/Iterator.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ private class StdIterator extends Class {
4848
}
4949

5050
/**
51-
* A type which can be used as an iterator
51+
* Implements `Iterator`.
5252
*/
53-
class Iterator extends Type {
54-
Iterator() {
53+
private class IteratorImpl extends Iterator {
54+
IteratorImpl() {
5555
this instanceof IteratorByTypedefs or
5656
exists(IteratorTraits it | it.getIteratorType() = this) or
5757
this instanceof StdIterator

cpp/ql/src/semmle/code/cpp/models/implementations/StdContainer.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import semmle.code.cpp.models.interfaces.Taint
6-
import semmle.code.cpp.models.implementations.Iterator
6+
import semmle.code.cpp.models.interfaces.Iterator
77

88
/**
99
* Additional model for standard container constructors that reference the

cpp/ql/src/semmle/code/cpp/models/implementations/StdMap.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import semmle.code.cpp.models.interfaces.Taint
6-
import semmle.code.cpp.models.implementations.Iterator
6+
import semmle.code.cpp.models.interfaces.Iterator
77

88
/**
99
* Additional model for map constructors using iterator inputs.

cpp/ql/src/semmle/code/cpp/models/implementations/StdSet.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import semmle.code.cpp.models.interfaces.Taint
6-
import semmle.code.cpp.models.implementations.Iterator
6+
import semmle.code.cpp.models.interfaces.Iterator
77

88
/**
99
* Additional model for set constructors using iterator inputs.

cpp/ql/src/semmle/code/cpp/models/implementations/StdString.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
*/
66

77
import semmle.code.cpp.models.interfaces.Taint
8-
import semmle.code.cpp.models.implementations.Iterator
8+
import semmle.code.cpp.models.interfaces.Iterator
9+
import semmle.code.cpp.models.interfaces.DataFlow
910

1011
/**
1112
* The `std::basic_string` template class.

cpp/ql/src/semmle/code/cpp/models/interfaces/Iterator.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,9 @@ abstract class GetIteratorFunction extends Function {
2626
*/
2727
abstract predicate getsIterator(FunctionInput input, FunctionOutput output);
2828
}
29+
30+
/**
31+
* A type which can be used as an iterator.
32+
*/
33+
abstract class Iterator extends Type {
34+
}

0 commit comments

Comments
 (0)