#define COSMOSDEBUG
using System.Text;
using Cosmos.Debug.Kernel;
namespace Cosmos.System.ExtendedASCII
{
///
/// CosmosEncodingProvider class. Used to provide , by using its name or codepage. See also: .
///
public class CosmosEncodingProvider : EncodingProvider
{
///
/// Encoding provider.
///
private static readonly EncodingProvider s_singleton = new CosmosEncodingProvider();
///
/// Debugger inctanse of the "System" ring with the "CosmosEncodingProvider" tag.
///
private static Debugger myDebugger = new Debugger("System", "CosmosEncodingProvider");
///
/// Create new inctanse of the class.
///
internal CosmosEncodingProvider() { }
///
/// Get CosmosEncodingProvider instance. Returns EncodingProvider.
///
public static EncodingProvider Instance
{
get { return s_singleton; }
}
///
/// Get encoding, using its codepage.
///
/// Codepage.
/// Encoding value.
public override Encoding GetEncoding(int codepage)
{
myDebugger.SendInternal($"Getting Encoding for codepage {codepage}");
if (codepage < 0 || codepage > 65535)
return null;
/* Let's check on our EncodingTable, if codepage is not found null is returned */
return EncodingTable.GetEncoding(codepage);
}
///
/// Get encoding, using its name.
///
/// Name.
/// Encoding value.
public override Encoding GetEncoding(string name)
{
myDebugger.SendInternal($"Getting Encoding for codepage with name {name}");
int codepage = EncodingTable.GetCodePageFromDesc(name);
if (codepage == -1)
return null;
return GetEncoding(codepage);
}
}
}