Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- DynamicFilter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ImageClickEventArgs.cs
- FormViewRow.cs
- ParameterElement.cs
- StringUtil.cs
- SoapServerProtocol.cs
- MessageSecurityOverHttpElement.cs
- SctClaimDictionary.cs
- DocumentSequenceHighlightLayer.cs
- WindowShowOrOpenTracker.cs
- DbReferenceCollection.cs
- ProfileSettings.cs
- InheritanceContextChangedEventManager.cs
- ReadWriteControlDesigner.cs
- SqlConnection.cs
- GeometryCollection.cs
- Scalars.cs
- EncoderFallback.cs
- BookmarkList.cs
- FixedSOMGroup.cs
- LoadRetryAsyncResult.cs
- ConfigurationCollectionAttribute.cs
- DodSequenceMerge.cs
- DiscoveryExceptionDictionary.cs
- storepermission.cs
- CompositeFontParser.cs
- SafeCoTaskMem.cs
- SchemaObjectWriter.cs
- Message.cs
- XslCompiledTransform.cs
- XmlSchemaElement.cs
- FileRegion.cs
- KeyboardEventArgs.cs
- SafeNativeMethods.cs
- NativeMethods.cs
- InstanceOwner.cs
- _ListenerAsyncResult.cs
- MouseDevice.cs
- RNGCryptoServiceProvider.cs
- PeerResolverMode.cs
- SourceFileBuildProvider.cs
- InputMethod.cs
- Object.cs
- ListBindingConverter.cs
- DSASignatureDeformatter.cs
- Int32RectConverter.cs
- ThreadSafeList.cs
- ScalarOps.cs
- TrackingQuery.cs
- dataobject.cs
- ProfileEventArgs.cs
- SmiRecordBuffer.cs
- StorageFunctionMapping.cs
- Help.cs
- _Rfc2616CacheValidators.cs
- _FtpControlStream.cs
- ProviderCollection.cs
- VisualBrush.cs
- RadioButtonBaseAdapter.cs
- LinqMaximalSubtreeNominator.cs
- RTLAwareMessageBox.cs
- ReflectTypeDescriptionProvider.cs
- Activity.cs
- URLIdentityPermission.cs
- BaseConfigurationRecord.cs
- DesignerLoader.cs
- DataGridViewRowConverter.cs
- AssemblyResourceLoader.cs
- WhiteSpaceTrimStringConverter.cs
- ProfileGroupSettingsCollection.cs
- SqlConnectionHelper.cs
- CompModSwitches.cs
- Rectangle.cs
- RootBrowserWindowProxy.cs
- ResourceWriter.cs
- ReaderWriterLockWrapper.cs
- MenuCommandService.cs
- XmlBaseReader.cs
- CharacterMetricsDictionary.cs
- DbParameterHelper.cs
- CodeGeneratorOptions.cs
- DBSqlParserTableCollection.cs
- WindowsGraphicsCacheManager.cs
- ConstantProjectedSlot.cs
- RenderingBiasValidation.cs
- ThrowHelper.cs
- DataBindEngine.cs
- WindowsEditBoxRange.cs
- ColorContextHelper.cs
- MemoryStream.cs
- DesignSurfaceCollection.cs
- DefaultTraceListener.cs
- AppDomainFactory.cs
- ElementHostAutomationPeer.cs
- _SafeNetHandles.cs
- EntityDescriptor.cs
- RadioButtonPopupAdapter.cs
- SizeIndependentAnimationStorage.cs
- ZipIOLocalFileHeader.cs