// ----------------------------------------------------------------------- // // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // // ----------------------------------------------------------------------- namespace Lucene.Net.Support { using System; using System.Collections.Generic; using System.Linq; using System.Text; /// /// Creates a wrapper for . /// public class CharListCharSequenceWrapper : ICharSequence { private readonly IList value; /// /// Initializes a new instance of the class. /// /// The value. public CharListCharSequenceWrapper(IList value) { this.value = value; } /// /// Gets the length. /// /// The length. public int Length { get { return this.value.Count; } } /// /// Finds the at the specified index. /// /// The index. /// An instance of . public char CharAt(int index) { return this.value[index]; } /// /// Determines whether the specified is equal to this instance. /// /// The to compare with this instance. /// /// true if the specified is equal to this instance; otherwise, false. /// public override bool Equals(object obj) { return CharSequenceExtensions.IsCharSequenceEqual(this, obj); } /// /// Returns a hash code for this instance. /// /// /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. /// public override int GetHashCode() { return CharSequenceExtensions.CreateHashCode(this); } /// /// Gets the subset sequence of characters from the current sequence. /// /// The start. /// The end. /// /// An instance of . /// public ICharSequence SubSequence(int start, int end) { var list = this.value.Skip(start).Take(end - start).ToList(); return new CharListCharSequenceWrapper(list); } /// /// Returns a that represents this instance. /// /// /// A that represents this instance. /// public override string ToString() { return new string(this.value.ToArray()); } } }