12345678910111213141516171819202122 |
- #pragma once
- #include <library/cpp/archive/yarchive.h>
- #include <util/generic/string.h>
- #include <util/generic/ptr.h>
- #include <util/generic/yexception.h>
- #include <util/memory/blob.h>
- template <class TrieType, size_t N>
- TrieType LoadTrieFromArchive(const TString& key,
- const unsigned char (&data)[N],
- bool ignoreErrors = false) {
- TArchiveReader archive(TBlob::NoCopy(data, sizeof(data)));
- if (archive.Has(key)) {
- TAutoPtr<IInputStream> trie = archive.ObjectByKey(key);
- return TrieType(TBlob::FromStream(*trie));
- }
- if (!ignoreErrors) {
- ythrow yexception() << "Resource " << key << " not found";
- }
- return TrieType();
- }
|