summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-05-08 14:09:37 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-05-08 14:09:37 +0000
commit89e4b526a8a95017e1833d69da50908a84516636 (patch)
treea87a2905656053f31e4b58d4a04fdd2c949487d2 /searchlib
parentadefed58438494c8dbd07542eaf6fdf900db74fa (diff)
Instantiate templates in a common location, so that they get consistent visibility independent of optimization level.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.cpp195
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.h185
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstorebase.cpp93
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstorebase.h90
4 files changed, 196 insertions, 367 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
index ef50a2c5327..6914376ae0a 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
@@ -1,6 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "enumstore.h"
#include "enumstore.hpp"
#include <iomanip>
@@ -146,210 +145,34 @@ EnumStoreT<StringEntryType>::deserialize(const void *src,
++_nextEnum;
if (idx.valid()) {
- assert(ComparatorType::compare(getValue(idx),
- Entry(dst).getValue()) < 0);
+ assert(ComparatorType::compare(getValue(idx), Entry(dst).getValue()) < 0);
}
idx = newIdx;
return sz;
}
-template
-class btree::BTreeNodeDataWrap<btree::BTreeNoLeafData,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeNodeDataWrap<datastore::EntryRef,
- EnumTreeTraits::LEAF_SLOTS>;
-
-#if 0
-template
-class btree::BTreeKeyData<EnumStoreBase::Index,
- btree::BTreeNoLeafData>;
-
-template
-class btree::BTreeKeyData<EnumStoreBase::Index,
- datastore::EntryRef>;
-#endif
-
-template
-class btree::BTreeNodeT<EnumStoreBase::Index,
- EnumTreeTraits::INTERNAL_SLOTS>;
-
#if 0
template
-class btree::BTreeNodeT<EnumStoreBase::Index,
- EnumTreeTraits::LEAF_SLOTS>;
-#endif
+class btree::BTreeKeyData<EnumStoreBase::Index, btree::BTreeNoLeafData>;
template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS>;
+class btree::BTreeKeyData<EnumStoreBase::Index, datastore::EntryRef>;
template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeNodeT<EnumStoreBase::Index, EnumTreeTraits::LEAF_SLOTS>;
-#if 0
template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeNodeTT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
#endif
template
-class btree::BTreeInternalNode<EnumStoreBase::Index,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS>;
-
-template
-class btree::BTreeLeafNode<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeLeafNode<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeLeafNodeTemp<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeLeafNodeTemp<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeNodeStore<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeNodeStore<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeIteratorBase<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS,
- EnumTreeTraits::PATH_SIZE>;
-template
-class btree::BTreeIteratorBase<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS,
- EnumTreeTraits::PATH_SIZE>;
-template
-class btree::BTreeIterator<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTreeIterator<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTree<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTree<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTreeRoot<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-
-template
-class btree::BTreeRoot<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTreeRootT<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-
-template
-class btree::BTreeRootT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-template
-class btree::BTreeRootBase<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeRootBase<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeNodeAllocator<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeNodeAllocator<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-template
-class btree::BTreeBuilder<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeBuilder<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
template
-class btree::BTreeBuilder<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeBuilder<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
template class EnumStoreT< StringEntryType >;
template class EnumStoreT<NumericEntryType<int8_t> >;
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.h b/searchlib/src/vespa/searchlib/attribute/enumstore.h
index 2539f2472e2..fd075504916 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.h
@@ -258,197 +258,28 @@ template <>
void
EnumStoreT<StringEntryType>::printValue(vespalib::asciistream & os, Type value) const;
-extern template
-class btree::BTreeNodeDataWrap<btree::BTreeNoLeafData,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeNodeDataWrap<datastore::EntryRef,
- EnumTreeTraits::LEAF_SLOTS>;
#if 0
extern template
-class btree::BTreeKeyData<EnumStoreBase::Index,
- btree::BTreeNoLeafData>;
+class btree::BTreeKeyData<EnumStoreBase::Index, btree::BTreeNoLeafData>;
extern template
-class btree::BTreeKeyData<EnumStoreBase::Index,
- datastore::EntryRef>;
-#endif
+class btree::BTreeKeyData<EnumStoreBase::Index, datastore::EntryRef>;
extern template
-class btree::BTreeNodeT<EnumStoreBase::Index,
- EnumTreeTraits::INTERNAL_SLOTS>;
+class btree::BTreeNodeT<EnumStoreBase::Index, EnumTreeTraits::LEAF_SLOTS>;
-#if 0
extern template
-class btree::BTreeNodeT<EnumStoreBase::Index,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeNodeTT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
#endif
-extern template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS>;
-
-extern template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-#if 0
-extern template
-class btree::BTreeNodeTT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-#endif
-
-extern template
-class btree::BTreeInternalNode<EnumStoreBase::Index,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS>;
-
-extern template
-class btree::BTreeLeafNode<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeLeafNode<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeLeafNodeTemp<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeLeafNodeTemp<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeNodeStore<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeNodeStore<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeIteratorBase<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS,
- EnumTreeTraits::PATH_SIZE>;
-extern template
-class btree::BTreeIteratorBase<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS,
- EnumTreeTraits::PATH_SIZE>;
-extern template
-class btree::BTreeIterator<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeIterator<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTree<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTree<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeRoot<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeRoot<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeRootT<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeRootT<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- const EnumStoreComparatorWrapper,
- EnumTreeTraits>;
-extern template
-class btree::BTreeRootBase<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-extern template
-class btree::BTreeRootBase<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-
-extern template
-class btree::BTreeNodeAllocator<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
-extern template
-class btree::BTreeNodeAllocator<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
extern template
-class btree::BTreeBuilder<EnumStoreBase::Index,
- btree::BTreeNoLeafData,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeBuilder<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
extern template
-class btree::BTreeBuilder<EnumStoreBase::Index,
- datastore::EntryRef,
- btree::NoAggregated,
- EnumTreeTraits::INTERNAL_SLOTS,
- EnumTreeTraits::LEAF_SLOTS>;
+class btree::BTreeBuilder<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
extern template class EnumStoreT< StringEntryType >;
extern template class EnumStoreT<NumericEntryType<int8_t> >;
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstorebase.cpp b/searchlib/src/vespa/searchlib/attribute/enumstorebase.cpp
index 9b159fadd78..9f3e8bb73c7 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstorebase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstorebase.cpp
@@ -3,8 +3,11 @@
#include "enumstorebase.h"
#include "enumstore.h"
#include <vespa/searchlib/datastore/datastore.hpp>
+#include <vespa/searchlib/btree/btree.hpp>
#include <vespa/searchlib/btree/btreeiterator.hpp>
#include <vespa/searchlib/btree/btreenode.hpp>
+#include <vespa/searchlib/btree/btreenodeallocator.hpp>
+#include <vespa/searchlib/btree/btreeroot.hpp>
#include <vespa/searchlib/util/bufferwriter.h>
#include <vespa/searchlib/common/rcuvector.hpp>
#include <vespa/vespalib/util/exceptions.h>
@@ -63,8 +66,7 @@ EnumStoreBase::EnumBufferType::calcArraysToAlloc(uint32_t bufferId, size_t sizeN
return 0;
}
-EnumStoreBase::EnumStoreBase(uint64_t initBufferSize,
- bool hasPostings)
+EnumStoreBase::EnumStoreBase(uint64_t initBufferSize, bool hasPostings)
: _enumDict(nullptr),
_store(),
_type(),
@@ -634,6 +636,93 @@ namespace attribute {
template class RcuVectorBase<EnumStoreIndex>;
}
+template
+class btree::BTreeNodeT<EnumStoreBase::Index, EnumTreeTraits::INTERNAL_SLOTS>;
+
+template
+class btree::BTreeNodeTT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::INTERNAL_SLOTS>;
+
+template
+class btree::BTreeNodeTT<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeInternalNode<EnumStoreBase::Index, btree::NoAggregated, EnumTreeTraits::INTERNAL_SLOTS>;
+
+template
+class btree::BTreeLeafNode<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeLeafNode<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeLeafNodeTemp<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeLeafNodeTemp<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeNodeStore<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeNodeStore<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+
+template
+class btree::BTreeRoot<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+template
+class btree::BTreeRoot<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+template
+class btree::BTreeRootT<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+template
+class btree::BTreeRootT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+template
+class btree::BTreeRootBase<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeRootBase<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeNodeAllocator<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeNodeAllocator<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+template
+class btree::BTreeIteratorBase<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS, EnumTreeTraits::PATH_SIZE>;
+template
+class btree::BTreeIteratorBase<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS, EnumTreeTraits::PATH_SIZE>;
+
+template
+class btree::BTreeIterator<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+template
+class btree::BTreeIterator<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+template
+class btree::BTree<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+template
+class btree::BTree<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+
}
VESPALIB_HASH_MAP_INSTANTIATE_H_E_M(search::EnumStoreIndex, search::EnumStoreIndex,
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstorebase.h b/searchlib/src/vespa/searchlib/attribute/enumstorebase.h
index 51503422335..c7bba5dd3c6 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstorebase.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumstorebase.h
@@ -392,7 +392,93 @@ public:
}
};
-extern template class
-datastore::DataStoreT<datastore::AlignedEntryRefT<31, 4> >;
+extern template
+class datastore::DataStoreT<datastore::AlignedEntryRefT<31, 4> >;
+
+extern template
+class btree::BTreeNodeT<EnumStoreBase::Index, EnumTreeTraits::INTERNAL_SLOTS>;
+
+extern template
+class btree::BTreeNodeTT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::INTERNAL_SLOTS>;
+
+extern template
+class btree::BTreeNodeTT<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeInternalNode<EnumStoreBase::Index, btree::NoAggregated, EnumTreeTraits::INTERNAL_SLOTS>;
+
+extern template
+class btree::BTreeLeafNode<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeLeafNode<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeLeafNodeTemp<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeLeafNodeTemp<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeNodeStore<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeNodeStore<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeRoot<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+extern template
+class btree::BTreeRoot<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+extern template
+class btree::BTreeRootT<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+extern template
+class btree::BTreeRootT<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+extern template
+class btree::BTreeRootBase<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeRootBase<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeNodeAllocator<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+extern template
+class btree::BTreeNodeAllocator<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS>;
+
+
+extern template
+class btree::BTreeIteratorBase<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS, EnumTreeTraits::PATH_SIZE>;
+extern template
+class btree::BTreeIteratorBase<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ EnumTreeTraits::INTERNAL_SLOTS, EnumTreeTraits::LEAF_SLOTS, EnumTreeTraits::PATH_SIZE>;
+
+extern template
+class btree::BTreeIterator<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+extern template
+class btree::BTreeIterator<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+
+extern template
+class btree::BTree<EnumStoreBase::Index, btree::BTreeNoLeafData, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
+extern template
+class btree::BTree<EnumStoreBase::Index, datastore::EntryRef, btree::NoAggregated,
+ const EnumStoreComparatorWrapper, EnumTreeTraits>;
}