func (s *session) setOptions(o *opt.Options) { s.o = &opt.Options{} if o != nil { *s.o = *o } // Alternative filters. if filters := o.GetAltFilters(); len(filters) > 0 { s.o.AltFilters = make([]filter.Filter, len(filters)) for i, filter := range filters { s.o.AltFilters[i] = &iFilter{filter} } } // Block cache. switch o.GetBlockCache() { case nil: s.o.BlockCache = cache.NewLRUCache(opt.DefaultBlockCacheSize) case opt.NoCache: s.o.BlockCache = nil } // Comparer. s.cmp = &iComparer{o.GetComparer()} s.o.Comparer = s.cmp // Filter. if filter := o.GetFilter(); filter != nil { s.o.Filter = &iFilter{filter} } }
func (s *session) setOptions(o *opt.Options) { no := dupOptions(o) // Alternative filters. if filters := o.GetAltFilters(); len(filters) > 0 { no.AltFilters = make([]filter.Filter, len(filters)) for i, filter := range filters { no.AltFilters[i] = &iFilter{filter} } } // Block cache. switch o.GetBlockCache() { case nil: no.BlockCache = cache.NewLRUCache(o.GetBlockCacheSize()) case opt.NoCache: no.BlockCache = nil } // Comparer. s.icmp = &iComparer{o.GetComparer()} no.Comparer = s.icmp // Filter. if filter := o.GetFilter(); filter != nil { no.Filter = &iFilter{filter} } s.o = &cachedOptions{Options: no} s.o.cache() }