Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / ByteStack.cs / 1305376 / ByteStack.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; namespace System.Xml { // This stack is designed to minimize object creation for the // objects being stored in the stack by allowing them to be // re-used over time. It basically pushes the objects creating // a high water mark then as Pop() is called they are not removed // so that next time Push() is called it simply returns the last // object that was already on the stack. internal class ByteStack { private byte[] stack; private int growthRate; private int top; private int size; public ByteStack(int growthRate) { this.growthRate = growthRate; top = 0; stack = new byte[growthRate]; size = growthRate; } public void Push(byte data) { if (size == top) { byte[] newstack = new byte[size + growthRate]; if (top > 0) { Buffer.BlockCopy(stack, 0, newstack, 0, top); } stack = newstack; size += growthRate; } stack[top++] = data; } public byte Pop() { if (top > 0) { return stack[--top]; } else { return 0; } } public byte Peek() { if (top > 0) { return stack[top - 1]; } else { return 0; } } public int Length { get { return top; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; namespace System.Xml { // This stack is designed to minimize object creation for the // objects being stored in the stack by allowing them to be // re-used over time. It basically pushes the objects creating // a high water mark then as Pop() is called they are not removed // so that next time Push() is called it simply returns the last // object that was already on the stack. internal class ByteStack { private byte[] stack; private int growthRate; private int top; private int size; public ByteStack(int growthRate) { this.growthRate = growthRate; top = 0; stack = new byte[growthRate]; size = growthRate; } public void Push(byte data) { if (size == top) { byte[] newstack = new byte[size + growthRate]; if (top > 0) { Buffer.BlockCopy(stack, 0, newstack, 0, top); } stack = newstack; size += growthRate; } stack[top++] = data; } public byte Pop() { if (top > 0) { return stack[--top]; } else { return 0; } } public byte Peek() { if (top > 0) { return stack[top - 1]; } else { return 0; } } public int Length { get { return top; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConnectionManagementSection.cs
- FigureHelper.cs
- WebPartEventArgs.cs
- MenuAutomationPeer.cs
- MTConfigUtil.cs
- AccessibleObject.cs
- SqlTypeSystemProvider.cs
- TextClipboardData.cs
- FilterRepeater.cs
- CustomCredentialPolicy.cs
- CodeParameterDeclarationExpression.cs
- ValueUnavailableException.cs
- Cell.cs
- CodeExporter.cs
- ToolStripDropDownMenu.cs
- DateTimeStorage.cs
- StateWorkerRequest.cs
- PixelFormatConverter.cs
- PackageRelationshipCollection.cs
- EntityDataSourceContextDisposingEventArgs.cs
- MILUtilities.cs
- BinaryReader.cs
- DataGridViewComboBoxColumn.cs
- BamlMapTable.cs
- SqlConnection.cs
- XmlSchemaValidationException.cs
- TextBox.cs
- ManagementNamedValueCollection.cs
- SqlDataReader.cs
- CompressionTracing.cs
- FormViewRow.cs
- WorkflowRuntimeSection.cs
- WmlTextViewAdapter.cs
- StyleBamlTreeBuilder.cs
- xamlnodes.cs
- TextAction.cs
- FolderBrowserDialogDesigner.cs
- DataGridViewToolTip.cs
- InheritanceAttribute.cs
- EntityConnectionStringBuilderItem.cs
- CodeNamespaceCollection.cs
- CssStyleCollection.cs
- __Filters.cs
- Quaternion.cs
- ConstantExpression.cs
- JavaScriptString.cs
- StrokeCollectionConverter.cs
- DockProviderWrapper.cs
- ImplicitInputBrush.cs
- PenLineJoinValidation.cs
- RtfControls.cs
- NavigationPropertyEmitter.cs
- DrawingImage.cs
- SetStoryboardSpeedRatio.cs
- MethodAccessException.cs
- SQLDecimalStorage.cs
- CodeAccessPermission.cs
- FlowLayoutPanelDesigner.cs
- DataColumnPropertyDescriptor.cs
- FrameworkElementFactory.cs
- GridViewColumnCollectionChangedEventArgs.cs
- ReadOnlyDataSourceView.cs
- Helper.cs
- SqlDataSourceStatusEventArgs.cs
- MergablePropertyAttribute.cs
- EventRouteFactory.cs
- EntityContainer.cs
- FixedPageProcessor.cs
- GlyphRun.cs
- FormsIdentity.cs
- CapabilitiesState.cs
- TextRangeEditTables.cs
- PenContext.cs
- IndexOutOfRangeException.cs
- StructuralType.cs
- ListView.cs
- XmlSerializerSection.cs
- NavigatorOutput.cs
- SmtpReplyReaderFactory.cs
- HierarchicalDataBoundControl.cs
- SoapEnumAttribute.cs
- SqlDataSourceCustomCommandPanel.cs
- DataGridViewTopLeftHeaderCell.cs
- WebPartVerbsEventArgs.cs
- XmlnsDictionary.cs
- Point3DCollectionConverter.cs
- UpdateExpressionVisitor.cs
- QilInvoke.cs
- Int64Storage.cs
- AutomationProperty.cs
- Gdiplus.cs
- CqlGenerator.cs
- GiveFeedbackEventArgs.cs
- TCEAdapterGenerator.cs
- CheckBoxFlatAdapter.cs
- StoreItemCollection.Loader.cs
- ComponentCollection.cs
- CodeGenerator.cs
- DBPropSet.cs
- EntityKeyElement.cs