MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / KeepNode

Method KeepNode

extern/re2/re2/prefilter_tree.cc:131–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

129}
130
131bool PrefilterTree::KeepNode(Prefilter* node) const {
132 if (node == NULL)
133 return false;
134
135 switch (node->op()) {
136 default:
137 LOG(DFATAL) << "Unexpected op in KeepNode: " << node->op();
138 return false;
139
140 case Prefilter::ALL:
141 case Prefilter::NONE:
142 return false;
143
144 case Prefilter::ATOM:
145 return node->atom().size() >= static_cast<size_t>(min_atom_len_);
146
147 case Prefilter::AND: {
148 int j = 0;
149 std::vector<Prefilter*>* subs = node->subs();
150 for (size_t i = 0; i < subs->size(); i++)
151 if (KeepNode((*subs)[i]))
152 (*subs)[j++] = (*subs)[i];
153 else
154 delete (*subs)[i];
155
156 subs->resize(j);
157 return j > 0;
158 }
159
160 case Prefilter::OR:
161 for (size_t i = 0; i < node->subs()->size(); i++)
162 if (!KeepNode((*node->subs())[i]))
163 return false;
164 return true;
165 }
166}
167
168void PrefilterTree::AssignUniqueIds(NodeMap* nodes,
169 std::vector<std::string>* atom_vec) {

Callers

nothing calls this directly

Calls 4

subsMethod · 0.80
opMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected