C++: Give Iterator a proper interface.

This commit is contained in:
Geoffrey White
2020-11-05 10:34:59 +00:00
parent b5326b3937
commit c9f846e0d2
6 changed files with 14 additions and 7 deletions

View File

@@ -48,10 +48,10 @@ private class StdIterator extends Class {
}
/**
* A type which can be used as an iterator
* Implements `Iterator`.
*/
class Iterator extends Type {
Iterator() {
private class IteratorImpl extends Iterator {
IteratorImpl() {
this instanceof IteratorByTypedefs or
exists(IteratorTraits it | it.getIteratorType() = this) or
this instanceof StdIterator

View File

@@ -3,7 +3,7 @@
*/
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.implementations.Iterator
import semmle.code.cpp.models.interfaces.Iterator
/**
* Additional model for standard container constructors that reference the

View File

@@ -3,7 +3,7 @@
*/
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.implementations.Iterator
import semmle.code.cpp.models.interfaces.Iterator
/**
* Additional model for map constructors using iterator inputs.

View File

@@ -3,7 +3,7 @@
*/
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.implementations.Iterator
import semmle.code.cpp.models.interfaces.Iterator
/**
* Additional model for set constructors using iterator inputs.

View File

@@ -5,7 +5,8 @@
*/
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.implementations.Iterator
import semmle.code.cpp.models.interfaces.Iterator
import semmle.code.cpp.models.interfaces.DataFlow
/**
* The `std::basic_string` template class.

View File

@@ -26,3 +26,9 @@ abstract class GetIteratorFunction extends Function {
*/
abstract predicate getsIterator(FunctionInput input, FunctionOutput output);
}
/**
* A type which can be used as an iterator.
*/
abstract class Iterator extends Type {
}