IndexObject.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / IndexObject.cs / 1 / IndexObject.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{ 
    using System;
    using System.Collections.Specialized; 
    using System.Collections.Generic; 
    using System.IO;
    using System.Runtime.InteropServices; 
    using System.Threading;
    using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;

    // 
    // Summary:
    //  Internal class that unifies the location that index values are created, 
    //  and how they are created. 
    //
    // Remarks: 
    //  This class is for internal store use only.
    //
    internal class IndexObject
    { 
        object[] m_objects;
        byte[] m_compiledForm; 
 
        //
        // Summary: 
        //  Creates an instance of an IndexObject using uncompiled objects
        //
        // Remarks:
        // 
        // Parameters:
        //  objects:        the list of object that will make this index entry. 
        // 
        public IndexObject( object[] objects )
        { 
            m_objects = objects;
        }

        // 
        // Summary:
        //  Creates an instance of an IndexObject with a raw compiled form 
        // 
        // Remarks:
        // 
        // Parameters:
        //  compiledForm:       the binary of the compiled form to use.
        //
        public IndexObject( byte[] compiledForm ) 
        {
            m_compiledForm = compiledForm; 
        } 

        // 
        // Summary:
        //  Gets a bool indicating that the data is compiled
        //
        public bool IsCompiled 
        {
            get{ return null != m_compiledForm; } 
        } 

        // 
        // Summary:
        //  Gets a bool indicating if the object has data to compile
        //
        public bool CanCompile 
        {
            get{ return null != m_objects; } 
        } 

        // 
        // Summary:
        //  Gets a pointer to the raw compiled buffer
        //
        public byte[] CompiledForm 
        {
            get{ return m_compiledForm; } 
        } 

        // 
        // Summary:
        //  Gets a pointer to the uncompiled object array
        //
        public object[] ObjectList 
        {
            get{ return m_objects; } 
        } 

        // 
        // Summary:
        //  Compiles the object using the specified definintion
        //
        // Parameters: 
        //  indexDef:       The indexDef that defines how to compile this object.
        // 
        internal void Compile( SecondaryIndexDefinition indexDef ) 
        {
            if( !CanCompile ) 
            {
                throw IDT.ThrowHelperError( new InvalidOperationException(
                                    SR.GetString( SR.StoreIndexObjectCanNotBeCompiled ) ) );
            } 

            byte[] buffer = new byte[ SecondaryIndexItem.HashValueSize ]; 
 
            int index = 0;
            for( int i=0;i buffer.Length ) 
                {
                    throw IDT.ThrowHelperError( new InvalidOperationException(
                                    SR.GetString( SR.StoreIndexObjectBufferOverflow, indexDef.Name ) ) );
                } 

                Array.Copy( canonicalForm, 0, buffer, index, canonicalForm.Length ); 
 
                index += canonicalForm.Length;
            } 

            m_compiledForm = buffer;
        }
    } 
}

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


                        

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