MojErr MojDbIndex::addProp(const MojObject& propObj, bool pushFront) { LOG_TRACE("Entering function %s", __FUNCTION__); MojAssert(!isOpen()); // create extractor MojRefCountedPtr<MojDbExtractor> extractor; MojErr err = createExtractor(propObj, extractor); MojErrCheck(err); const MojString& name = extractor->name(); // check for repeats if (m_propNames.find(name) != MojInvalidSize) { MojErrThrowMsg(MojErrDbInvalidIndex, _T("db: invalid index '%s' - property '%s' repeated"), m_name.data(), name.data()); } // add to vecs if (pushFront) { err = m_propNames.insert(0, 1, name); MojErrCheck(err); err = m_props.insert(0, 1, extractor); MojErrCheck(err); } else { err = m_propNames.push(name); MojErrCheck(err); err = m_props.push(extractor); MojErrCheck(err); } return MojErrNone; }
/** * Factory Function * @param archivePath Local path of the container file. * @param extFilter Optional filter string specifying a particular type of archive. * @returns Smart pointer to a new extractor object appropriate to the container * Pointer will be NULL if an extractor is not found for this container. */ ExtractorPtr createExtractor(const std::wstring &archivePath, const std::string filter /*= ""*/) { return createExtractor(TskUtilities::toUTF8(archivePath), filter); }