CodePageEncoding.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Text / CodePageEncoding.cs / 1305376 / CodePageEncoding.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 

// WARNING: 
// 
// This is just an IObjectReference proxy for the Code Page Encodings.
namespace System.Text 
{
    using System;
    using System.Runtime.Serialization;
    using System.Security.Permissions; 
    using System.Diagnostics.Contracts;
 
    /*=================================CodePageEncoding================================== 
    ** This class is here only to deserialize the Code Page classes from Everett (V1.1) into
    ** Appropriate Whidbey (V2.0) objects.  We also serialize the Whidbey classes 
    ** using this proxy since we pretty much need one anyway and that solves Whidbey
    ** to Everett compatibility as well.
    ==============================================================================*/
 
    [Serializable]
    internal sealed class CodePageEncoding : ISerializable, IObjectReference 
    { 
        // Temp stuff
        [NonSerialized] 
        private int m_codePage;
        [NonSerialized]
        private bool m_isReadOnly;
        [NonSerialized] 
        private bool m_deserializedFromEverett = false;
 
        [NonSerialized] 
        private EncoderFallback encoderFallback = null;
        [NonSerialized] 
        private DecoderFallback decoderFallback = null;

        // Might need this when GetRealObjecting
        [NonSerialized] 
        private Encoding realEncoding = null;
 
        // Constructor called by serialization. 
        internal CodePageEncoding(SerializationInfo info, StreamingContext context)
        { 
            // Any info?
            if (info==null) throw new ArgumentNullException("info");
            Contract.EndContractBlock();
 
            // All versions have a code page
            this.m_codePage = (int)info.GetValue("m_codePage", typeof(int)); 
 
            // See if we have a code page
            try 
            {
                //
                // Try Whidbey V2.0 Fields
                // 
                this.m_isReadOnly = (bool)info.GetValue("m_isReadOnly", typeof(bool));
 
                this.encoderFallback = (EncoderFallback)info.GetValue("encoderFallback", typeof(EncoderFallback)); 
                this.decoderFallback = (DecoderFallback)info.GetValue("decoderFallback", typeof(DecoderFallback));
            } 
            catch (SerializationException)
            {
                //
                // Didn't have Whidbey things, must be Everett 
                //
                this.m_deserializedFromEverett = true; 
 
                // May as well be read only
                this.m_isReadOnly = true; 
            }
        }

        // Just get it from GetEncoding 
        [System.Security.SecurityCritical]  // auto-generated
        public Object GetRealObject(StreamingContext context) 
        { 
            // Get our encoding (Note: This has default fallbacks for readonly and everett cases)
            this.realEncoding = Encoding.GetEncoding(this.m_codePage); 

            // If its read only then it uses default fallbacks, otherwise pick up the new ones
            // Otherwise we want to leave the new one read only
            if (!this.m_deserializedFromEverett && !this.m_isReadOnly) 
            {
                this.realEncoding = (Encoding)this.realEncoding.Clone(); 
                this.realEncoding.EncoderFallback = this.encoderFallback; 
                this.realEncoding.DecoderFallback = this.decoderFallback;
            } 

            return this.realEncoding;
        }
 
#if FEATURE_SERIALIZATION
        // ISerializable implementation 
        [System.Security.SecurityCritical]  // auto-generated_required 
        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
        { 
            // We cannot ever call this.
            Contract.Assert(false, "Didn't expect to make it to CodePageEncoding ISerializable.GetObjectData");
            throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
        } 
#endif
 
        // Same problem with the Decoder, this only happens with Everett Decoders 
        [Serializable]
        internal sealed class Decoder : ISerializable, IObjectReference 
        {
            // Might need this when GetRealObjecting
            [NonSerialized]
            private Encoding realEncoding = null; 

            // Constructor called by serialization, have to handle deserializing from Everett 
            internal Decoder(SerializationInfo info, StreamingContext context) 
            {
                // Any info? 
                if (info==null) throw new ArgumentNullException("info");
                Contract.EndContractBlock();

                this.realEncoding = (Encoding)info.GetValue("encoding", typeof(Encoding)); 
            }
 
            // Just get it from GetDecider 
            [System.Security.SecurityCritical]  // auto-generated
            public Object GetRealObject(StreamingContext context) 
            {
                return this.realEncoding.GetDecoder();
            }
 
#if FEATURE_SERIALIZATION
            // ISerializable implementation, get data for this object 
            [System.Security.SecurityCritical]  // auto-generated_required 
            void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
            { 
                // We cannot ever call this.
                Contract.Assert(false, "Didn't expect to make it to CodePageEncoding.Decoder.GetObjectData");
                throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
            } 
#endif
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 

// WARNING: 
// 
// This is just an IObjectReference proxy for the Code Page Encodings.
namespace System.Text 
{
    using System;
    using System.Runtime.Serialization;
    using System.Security.Permissions; 
    using System.Diagnostics.Contracts;
 
    /*=================================CodePageEncoding================================== 
    ** This class is here only to deserialize the Code Page classes from Everett (V1.1) into
    ** Appropriate Whidbey (V2.0) objects.  We also serialize the Whidbey classes 
    ** using this proxy since we pretty much need one anyway and that solves Whidbey
    ** to Everett compatibility as well.
    ==============================================================================*/
 
    [Serializable]
    internal sealed class CodePageEncoding : ISerializable, IObjectReference 
    { 
        // Temp stuff
        [NonSerialized] 
        private int m_codePage;
        [NonSerialized]
        private bool m_isReadOnly;
        [NonSerialized] 
        private bool m_deserializedFromEverett = false;
 
        [NonSerialized] 
        private EncoderFallback encoderFallback = null;
        [NonSerialized] 
        private DecoderFallback decoderFallback = null;

        // Might need this when GetRealObjecting
        [NonSerialized] 
        private Encoding realEncoding = null;
 
        // Constructor called by serialization. 
        internal CodePageEncoding(SerializationInfo info, StreamingContext context)
        { 
            // Any info?
            if (info==null) throw new ArgumentNullException("info");
            Contract.EndContractBlock();
 
            // All versions have a code page
            this.m_codePage = (int)info.GetValue("m_codePage", typeof(int)); 
 
            // See if we have a code page
            try 
            {
                //
                // Try Whidbey V2.0 Fields
                // 
                this.m_isReadOnly = (bool)info.GetValue("m_isReadOnly", typeof(bool));
 
                this.encoderFallback = (EncoderFallback)info.GetValue("encoderFallback", typeof(EncoderFallback)); 
                this.decoderFallback = (DecoderFallback)info.GetValue("decoderFallback", typeof(DecoderFallback));
            } 
            catch (SerializationException)
            {
                //
                // Didn't have Whidbey things, must be Everett 
                //
                this.m_deserializedFromEverett = true; 
 
                // May as well be read only
                this.m_isReadOnly = true; 
            }
        }

        // Just get it from GetEncoding 
        [System.Security.SecurityCritical]  // auto-generated
        public Object GetRealObject(StreamingContext context) 
        { 
            // Get our encoding (Note: This has default fallbacks for readonly and everett cases)
            this.realEncoding = Encoding.GetEncoding(this.m_codePage); 

            // If its read only then it uses default fallbacks, otherwise pick up the new ones
            // Otherwise we want to leave the new one read only
            if (!this.m_deserializedFromEverett && !this.m_isReadOnly) 
            {
                this.realEncoding = (Encoding)this.realEncoding.Clone(); 
                this.realEncoding.EncoderFallback = this.encoderFallback; 
                this.realEncoding.DecoderFallback = this.decoderFallback;
            } 

            return this.realEncoding;
        }
 
#if FEATURE_SERIALIZATION
        // ISerializable implementation 
        [System.Security.SecurityCritical]  // auto-generated_required 
        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
        { 
            // We cannot ever call this.
            Contract.Assert(false, "Didn't expect to make it to CodePageEncoding ISerializable.GetObjectData");
            throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
        } 
#endif
 
        // Same problem with the Decoder, this only happens with Everett Decoders 
        [Serializable]
        internal sealed class Decoder : ISerializable, IObjectReference 
        {
            // Might need this when GetRealObjecting
            [NonSerialized]
            private Encoding realEncoding = null; 

            // Constructor called by serialization, have to handle deserializing from Everett 
            internal Decoder(SerializationInfo info, StreamingContext context) 
            {
                // Any info? 
                if (info==null) throw new ArgumentNullException("info");
                Contract.EndContractBlock();

                this.realEncoding = (Encoding)info.GetValue("encoding", typeof(Encoding)); 
            }
 
            // Just get it from GetDecider 
            [System.Security.SecurityCritical]  // auto-generated
            public Object GetRealObject(StreamingContext context) 
            {
                return this.realEncoding.GetDecoder();
            }
 
#if FEATURE_SERIALIZATION
            // ISerializable implementation, get data for this object 
            [System.Security.SecurityCritical]  // auto-generated_required 
            void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
            { 
                // We cannot ever call this.
                Contract.Assert(false, "Didn't expect to make it to CodePageEncoding.Decoder.GetObjectData");
                throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
            } 
#endif
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK