// -----------------------------------------------------------------------
//
//
// 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 a char[].
///
internal class CharArrayCharSequenceWrapper : ICharSequence
{
private readonly char[] value;
///
/// Initializes a new instance of the class.
///
/// The value.
public CharArrayCharSequenceWrapper(char[] value)
{
this.value = value;
}
///
/// Gets the length.
///
/// The length.
public int Length
{
get { return this.value.Length; }
}
///
/// 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)
{
char[] copy = new char[end - start];
Array.Copy(this.value, start, copy, 0, end);
return new CharArrayCharSequenceWrapper(copy);
}
///
/// Returns a that represents this instance.
///
///
/// A that represents this instance.
///
public override string ToString()
{
return new string(this.value);
}
}
}