BplusDotNet.BufferFile.Store C# (CSharp) Method

Store() public static method

public static Store ( int TheInt, byte ToArray, int atIndex ) : void
TheInt int
ToArray byte
atIndex int
return void
        public static void Store(int TheInt, byte[] ToArray, int atIndex)
        {
            int limit=INTSTORAGE;
            if (atIndex+limit>ToArray.Length)
            {
                throw new BufferFileException("can't access beyond end of array");
            }
            for (int i=0; i<limit; i++)
            {
                byte thebyte = (byte) (TheInt & 0xff);
                ToArray[atIndex+i] = thebyte;
                TheInt = TheInt>>8;
            }
        }

Same methods

BufferFile::Store ( long TheLong, byte ToArray, int atIndex ) : void
BufferFile::Store ( short TheShort, byte ToArray, int atIndex ) : void

Usage Example

示例#1
0
        public long StoreNewChunk(byte[] fromArray, int startingAt, int length)
        {
            // get the first buffer as result value
            long currentBufferNumber = this.AllocateBuffer();
            //System.Diagnostics.Debug.WriteLine(" allocating chunk starting at "+currentBufferNumber);
            long result = currentBufferNumber;

            if (length < 0 || startingAt < 0)
            {
                throw new LinkedFileException("cannot store negative length chunk (" + startingAt + "," + length + ")");
            }
            int endingAt = startingAt + length;

            // special case: zero length chunk
            if (endingAt > fromArray.Length)
            {
                throw new LinkedFileException("array doesn't have this much data: " + endingAt);
            }
            int index = startingAt;

            // store header with length information
            byte[] buffer = new byte[this.buffersize];
            BufferFile.Store(length, buffer, 0);
            int fromIndex   = startingAt;
            int firstLength = this.buffersize - BufferFile.INTSTORAGE;
            int stored      = 0;

            if (firstLength > length)
            {
                firstLength = length;
            }
            Array.Copy(fromArray, fromIndex, buffer, BufferFile.INTSTORAGE, firstLength);
            stored    += firstLength;
            fromIndex += firstLength;
            byte CurrentBufferType = HEAD;

            // store any remaining buffers (no length info)
            while (stored < length)
            {
                // store current buffer and get next block number
                long nextBufferNumber = this.AllocateBuffer();
                this.SetBuffer(currentBufferNumber, CurrentBufferType, buffer, 0, buffer.Length, nextBufferNumber);
                currentBufferNumber = nextBufferNumber;
                CurrentBufferType   = BODY;
                int nextLength = this.buffersize;
                if (stored + nextLength > length)
                {
                    nextLength = length - stored;
                }
                Array.Copy(fromArray, fromIndex, buffer, 0, nextLength);
                stored    += nextLength;
                fromIndex += nextLength;
            }
            // store final buffer
            this.SetBuffer(currentBufferNumber, CurrentBufferType, buffer, 0, buffer.Length, NULLBUFFERPOINTER);
            return(result);
        }
All Usage Examples Of BplusDotNet.BufferFile::Store