Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / UnSafeCharBuffer.cs / 1 / UnSafeCharBuffer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; public UnSafeCharBuffer( char *buffer, int bufferSize) { BCLDebug.Assert( buffer != null, "buffer pointer can't be null." ); BCLDebug.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; BCLDebug.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; public UnSafeCharBuffer( char *buffer, int bufferSize) { BCLDebug.Assert( buffer != null, "buffer pointer can't be null." ); BCLDebug.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; BCLDebug.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // 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
- GlyphShapingProperties.cs
- Vector.cs
- WeakEventManager.cs
- DocumentViewerAutomationPeer.cs
- StorageMappingFragment.cs
- BindStream.cs
- WrapPanel.cs
- Classification.cs
- ScrollContentPresenter.cs
- DataObjectSettingDataEventArgs.cs
- QuotedPrintableStream.cs
- SqlSelectClauseBuilder.cs
- OutputCacheSettings.cs
- BroadcastEventHelper.cs
- QueryCacheKey.cs
- EncoderFallback.cs
- FrameworkTextComposition.cs
- InputManager.cs
- InvalidAsynchronousStateException.cs
- TreeSet.cs
- XmlCodeExporter.cs
- FlowDocumentView.cs
- XmlDesigner.cs
- DataGridBoundColumn.cs
- GridSplitterAutomationPeer.cs
- SafeFreeMibTable.cs
- Vector3dCollection.cs
- StatementContext.cs
- Icon.cs
- BaseAsyncResult.cs
- Baml6ConstructorInfo.cs
- OpCopier.cs
- PathTooLongException.cs
- SelectionRange.cs
- RelationalExpressions.cs
- DiagnosticsConfiguration.cs
- TextDecorationUnitValidation.cs
- AppSecurityManager.cs
- HostExecutionContextManager.cs
- InputBindingCollection.cs
- Int32CollectionValueSerializer.cs
- ConstraintCollection.cs
- ExtensionSimplifierMarkupObject.cs
- MobileControl.cs
- TextEditorSpelling.cs
- BackgroundFormatInfo.cs
- Model3DGroup.cs
- Validator.cs
- TraceContextRecord.cs
- DefinitionUpdate.cs
- DesignTableCollection.cs
- RegisteredExpandoAttribute.cs
- CodeMemberMethod.cs
- PointCollection.cs
- WebPartConnectionsEventArgs.cs
- ResourceContainer.cs
- Rect3DValueSerializer.cs
- ThousandthOfEmRealDoubles.cs
- TimeSpan.cs
- ResolveMatches11.cs
- CodeMemberMethod.cs
- CallSiteHelpers.cs
- DataReceivedEventArgs.cs
- BStrWrapper.cs
- WebSysDefaultValueAttribute.cs
- PreservationFileReader.cs
- ZipPackage.cs
- BitmapEncoder.cs
- ComponentCommands.cs
- EntityDataSourceContextCreatingEventArgs.cs
- BinaryObjectWriter.cs
- latinshape.cs
- nulltextcontainer.cs
- SafeCryptoHandles.cs
- SponsorHelper.cs
- PairComparer.cs
- RoleManagerSection.cs
- ImmutablePropertyDescriptorGridEntry.cs
- DetailsViewUpdateEventArgs.cs
- DataGridViewHitTestInfo.cs
- WindowsToolbarItemAsMenuItem.cs
- PersonalizationProvider.cs
- AnnotationComponentChooser.cs
- VerificationAttribute.cs
- backend.cs
- DataGridViewCell.cs
- StrongNameUtility.cs
- Stream.cs
- Events.cs
- CodeObjectCreateExpression.cs
- _FixedSizeReader.cs
- CleanUpVirtualizedItemEventArgs.cs
- DesignerToolStripControlHost.cs
- BuildProviderInstallComponent.cs
- ErrorRuntimeConfig.cs
- CapabilitiesState.cs
- InnerItemCollectionView.cs
- TimeStampChecker.cs
- ByteRangeDownloader.cs
- CodeDomLoader.cs