mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 23:29:22 +00:00
YAMLParser: get rid of global ctors & dtors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155907 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7c4ce30ea6
commit
34df1600e0
@ -513,37 +513,44 @@ private:
|
||||
/// @brief Iterator abstraction for Documents over a Stream.
|
||||
class document_iterator {
|
||||
public:
|
||||
document_iterator() : Doc(NullDoc) {}
|
||||
document_iterator(OwningPtr<Document> &D) : Doc(D) {}
|
||||
document_iterator() : Doc(0) {}
|
||||
document_iterator(OwningPtr<Document> &D) : Doc(&D) {}
|
||||
|
||||
bool operator ==(const document_iterator &Other) {
|
||||
return Doc == Other.Doc;
|
||||
if (isAtEnd() || Other.isAtEnd())
|
||||
return isAtEnd() && Other.isAtEnd();
|
||||
|
||||
return *Doc == *Other.Doc;
|
||||
}
|
||||
bool operator !=(const document_iterator &Other) {
|
||||
return !(*this == Other);
|
||||
}
|
||||
|
||||
document_iterator operator ++() {
|
||||
if (!Doc->skip()) {
|
||||
Doc.reset(0);
|
||||
assert(Doc != 0 && "incrementing iterator past the end.");
|
||||
if (!(*Doc)->skip()) {
|
||||
Doc->reset(0);
|
||||
} else {
|
||||
Stream &S = Doc->stream;
|
||||
Doc.reset(new Document(S));
|
||||
Stream &S = (*Doc)->stream;
|
||||
Doc->reset(new Document(S));
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Document &operator *() {
|
||||
return *Doc;
|
||||
return *Doc->get();
|
||||
}
|
||||
|
||||
OwningPtr<Document> &operator ->() {
|
||||
return Doc;
|
||||
return *Doc;
|
||||
}
|
||||
|
||||
private:
|
||||
static OwningPtr<Document> NullDoc;
|
||||
OwningPtr<Document> &Doc;
|
||||
bool isAtEnd() const {
|
||||
return Doc == 0 || *Doc == 0;
|
||||
}
|
||||
|
||||
OwningPtr<Document> *Doc;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -2125,5 +2125,3 @@ bool Document::expectToken(int TK) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
OwningPtr<Document> document_iterator::NullDoc;
|
||||
|
Loading…
Reference in New Issue
Block a user