MojErr MojObjectFilter::init(const StringSet& selectProps) { MojAssert(m_root.get() == NULL); //create the root node m_root.reset(new Node(MojString())); MojAllocCheck(m_root.get()); for (StringSet::ConstIterator i = selectProps.begin(); i != selectProps.end(); i++) { MojVector<MojString> parts; MojErr err = i->split(_T('.'), parts); MojErrCheck(err); Node* curNode = m_root.get(); for (MojVector<MojString>::ConstIterator pi = parts.begin(); pi != parts.end(); ++pi) { Node* child = curNode->find(*pi); if (child) { if (child->m_children.empty()) { break; } else { curNode = child; } } else { MojAutoPtr<Node> node(new Node(*pi)); MojAllocCheck(node.get()); Node* nextNode = node.get(); MojErr err = curNode->addChild(node); MojErrCheck(err); curNode = nextNode; } } } return MojErrNone; }
MojErr MojDbIndexTest::indexFromObject(MojDbIndex& index, const MojChar* json) { MojObject obj; MojErr err = obj.fromJson(json); MojErrCheck(err); err = index.fromObject(obj, MojString()); MojErrCheck(err); return MojErrNone; }