//
// The LLVM Compiler Infrastructure
//
-// This file was developed by Anton Korobeynikov and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
typedef typename NodeVectorType::const_iterator const_iterator;
private:
- typedef enum {
+ enum QueryResult {
Same = -3,
StringIsPrefix = -2,
LabelIsPrefix = -1,
DontMatch = 0,
HaveCommonPart
- } QueryResult;
+ };
struct NodeCmp {
bool operator() (Node* N1, Node* N2) {
inline const Node* &front() const { return Children.front(); }
inline Node* &front() { return Children.front(); }
inline const Node* &back() const { return Children.back(); }
- inline Node* &back() { return Children.back(); }
+ inline Node* &back() { return Children.back(); }
};
template<class Payload>
struct GraphTraits<Trie<Payload> > {
- typedef typename Trie<Payload>::Node NodeType;
- typedef typename Trie<Payload>::Node::iterator ChildIteratorType;
+ typedef Trie<Payload> TrieType;
+ typedef typename TrieType::Node NodeType;
+ typedef typename NodeType::iterator ChildIteratorType;
- static inline NodeType *getEntryNode(const Trie<Payload>& T) {
+ static inline NodeType *getEntryNode(const TrieType& T) {
return T.getRoot();
}
static inline ChildIteratorType child_begin(NodeType *N) {
return N->begin();
}
- static inline ChildIteratorType child_end(NodeType *N) {
- return N->end();
- }
+ static inline ChildIteratorType child_end(NodeType *N) { return N->end(); }
typedef typename std::vector<NodeType*>::const_iterator nodes_iterator;
- static inline nodes_iterator nodes_begin(const Trie<Payload>& G) {
+ static inline nodes_iterator nodes_begin(const TrieType& G) {
return G.Nodes.begin();
}
- static inline nodes_iterator nodes_end(const Trie<Payload>& G) {
+ static inline nodes_iterator nodes_end(const TrieType& G) {
return G.Nodes.end();
}