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
- SmiMetaData.cs
- DropAnimation.xaml.cs
- X509CertificateChain.cs
- ActivityDesignerResources.cs
- TypefaceMetricsCache.cs
- DateTimeOffset.cs
- ContractNamespaceAttribute.cs
- wmiprovider.cs
- CacheModeValueSerializer.cs
- SocketElement.cs
- ObjectSet.cs
- InertiaTranslationBehavior.cs
- ItemList.cs
- QueryOpeningEnumerator.cs
- _IPv6Address.cs
- ToolBar.cs
- IPHostEntry.cs
- OdbcErrorCollection.cs
- _AutoWebProxyScriptWrapper.cs
- StyleXamlTreeBuilder.cs
- InteropBitmapSource.cs
- NullRuntimeConfig.cs
- ContractMapping.cs
- Pkcs9Attribute.cs
- XMLUtil.cs
- SHA1CryptoServiceProvider.cs
- SQLGuid.cs
- OpenTypeCommon.cs
- EnumDataContract.cs
- XmlSchemaAll.cs
- DocumentXPathNavigator.cs
- BackEase.cs
- StringResourceManager.cs
- Point3D.cs
- RSAPKCS1SignatureFormatter.cs
- CanonicalXml.cs
- TakeOrSkipQueryOperator.cs
- ProjectionPath.cs
- ColorInterpolationModeValidation.cs
- SubMenuStyleCollection.cs
- DataComponentGenerator.cs
- XmlQualifiedNameTest.cs
- XmlProcessingInstruction.cs
- PeerDuplexChannel.cs
- GridViewUpdatedEventArgs.cs
- FirstMatchCodeGroup.cs
- ReaderWriterLock.cs
- XmlWhitespace.cs
- EdmItemCollection.OcAssemblyCache.cs
- ContentPlaceHolderDesigner.cs
- DataBoundControl.cs
- MimeMultiPart.cs
- SSmlParser.cs
- TaskCanceledException.cs
- ApplicationFileCodeDomTreeGenerator.cs
- RegexGroup.cs
- GlobalizationSection.cs
- DetailsView.cs
- UnsignedPublishLicense.cs
- CanExecuteRoutedEventArgs.cs
- RawStylusSystemGestureInputReport.cs
- FlowDocumentView.cs
- PrintDocument.cs
- WebPartEventArgs.cs
- PropertyToken.cs
- WeakReferenceKey.cs
- FamilyTypefaceCollection.cs
- ExpressionVisitor.cs
- XmlSequenceWriter.cs
- HtmlTableCell.cs
- PolygonHotSpot.cs
- ScriptServiceAttribute.cs
- InternalException.cs
- OdbcConnectionFactory.cs
- WebReferencesBuildProvider.cs
- SqlWebEventProvider.cs
- RemoteAsymmetricSignatureFormatter.cs
- NavigationExpr.cs
- SetterBaseCollection.cs
- CompoundFileReference.cs
- XmlHierarchyData.cs
- SqlDataSource.cs
- TextBlock.cs
- TTSVoice.cs
- followingsibling.cs
- FieldAccessException.cs
- NotifyIcon.cs
- LockCookie.cs
- PauseStoryboard.cs
- XmlLanguageConverter.cs
- ValidationError.cs
- DesignerUtility.cs
- DataServiceExpressionVisitor.cs
- CellQuery.cs
- ProcessHostServerConfig.cs
- CustomAttributeBuilder.cs
- UpdatableGenericsFeature.cs
- Calendar.cs
- BindingRestrictions.cs
- AsymmetricCryptoHandle.cs