Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
IdentityEncoder.cs
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 using System;
19 using System.Text;
20 using Lucene.Net.Index;
21 
22 namespace Lucene.Net.Analysis.Payloads
23 {
24  /// <summary>
25  /// Does nothing other than convert the char array to a byte array using the specified encoding.
26  /// </summary>
28  {
29 
30  protected internal Encoding encoding = Encoding.UTF8;
31  protected internal String encodingName = "UTF-8"; //argh, stupid 1.4
32 
33  public IdentityEncoder()
34  {
35  }
36 
37  public IdentityEncoder(Encoding encoding)
38  {
39  this.encoding = encoding;
40  encodingName = encoding.EncodingName;
41  }
42 
43 
44  public override Payload Encode(char[] buffer, int offset, int length)
45  {
46  //what's the most efficient way to get a byte [] from a char[] array
47  //Do we have to go through String?
48  String tmp = new String(buffer, offset, length);
49  Payload result = null;//Can we avoid allocating by knowing where using the new API?
50  try
51  {
52  result = new Payload(encoding.GetBytes(tmp));
53  }
54  catch (EncoderFallbackException)
55  {
56  //should never hit this, since we get the name from the Charset
57  }
58 
59  return result;
60  }
61  }
62 }