// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "attributefactory.h" #include "predicate_attribute.h" #include "singlesmallnumericattribute.h" #include "reference_attribute.h" #include "singlestringattribute.h" #include "singleboolattribute.h" #include "singlenumericattribute.h" #include "single_raw_attribute.h" #include #include #include #include namespace search { using attribute::BasicType; AttributeVector::SP AttributeFactory::createSingleStd(stringref name, const Config & info) { assert(info.collectionType().type() == attribute::CollectionType::SINGLE); switch(info.basicType().type()) { case BasicType::BOOL: return std::make_shared(name, info.getGrowStrategy(), info.paged()); case BasicType::UINT2: return std::make_shared(name, info.getGrowStrategy()); case BasicType::UINT4: return std::make_shared(name, info.getGrowStrategy()); case BasicType::INT8: return std::make_shared>>(name, info); case BasicType::INT16: // XXX: Unneeded since we don't have short document fields in java. return std::make_shared>>(name, info); case BasicType::INT32: return std::make_shared>>(name, info); case BasicType::INT64: return std::make_shared>>(name, info); case BasicType::FLOAT: return std::make_shared>>(name, info); case BasicType::DOUBLE: return std::make_shared>>(name, info); case BasicType::STRING: return std::make_shared(name, info); case BasicType::PREDICATE: return std::make_shared(name, info); case BasicType::TENSOR: if (info.tensorType().is_dense()) { return std::make_shared(name, info); } else { return std::make_shared(name, info); } case BasicType::REFERENCE: return std::make_shared(name, info); case BasicType::RAW: return std::make_shared(name, info); default: break; } return AttributeVector::SP(); } }