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
- CompareInfo.cs
- GPPOINT.cs
- EventLogPermissionEntry.cs
- PointHitTestParameters.cs
- SspiHelper.cs
- CompilationRelaxations.cs
- DesignRelation.cs
- EntityEntry.cs
- FixedStringLookup.cs
- StateRuntime.cs
- FlagsAttribute.cs
- LayoutTable.cs
- PolicyStatement.cs
- InternalDispatchObject.cs
- PriorityBinding.cs
- unsafenativemethodsother.cs
- XmlNode.cs
- UnmanagedMarshal.cs
- RuleElement.cs
- ManipulationVelocities.cs
- SkewTransform.cs
- EpmCustomContentSerializer.cs
- RegexCode.cs
- IdentityValidationException.cs
- TextEndOfParagraph.cs
- RegexFCD.cs
- ManipulationDeltaEventArgs.cs
- ContextMenu.cs
- ProjectionAnalyzer.cs
- SchemaNamespaceManager.cs
- KoreanCalendar.cs
- BaseParagraph.cs
- RequestCachingSection.cs
- WinEventQueueItem.cs
- RelationshipSet.cs
- DbgCompiler.cs
- MoveSizeWinEventHandler.cs
- TriggerActionCollection.cs
- SkewTransform.cs
- CommonGetThemePartSize.cs
- SocketAddress.cs
- UriTemplateLiteralPathSegment.cs
- DataSourceHelper.cs
- mediapermission.cs
- Debug.cs
- MorphHelper.cs
- ColumnMapCopier.cs
- MsmqTransportSecurity.cs
- TcpConnectionPoolSettings.cs
- DelayedRegex.cs
- PropertyItem.cs
- TextWriterEngine.cs
- PersonalizableTypeEntry.cs
- NoPersistHandle.cs
- HtmlInputPassword.cs
- WindowsSolidBrush.cs
- CatalogZone.cs
- HierarchicalDataSourceControl.cs
- DataGridViewRowStateChangedEventArgs.cs
- ParserHooks.cs
- SingleStorage.cs
- GatewayDefinition.cs
- MimeMapping.cs
- EarlyBoundInfo.cs
- Binding.cs
- FindResponse.cs
- InputReferenceExpression.cs
- CompositeFontParser.cs
- CookieProtection.cs
- CultureSpecificStringDictionary.cs
- CharacterBuffer.cs
- BrushValueSerializer.cs
- WebBrowserNavigatingEventHandler.cs
- SecurityContext.cs
- Image.cs
- GlyphRun.cs
- MemberDescriptor.cs
- PartialCachingControl.cs
- ExtensionFile.cs
- EventLogConfiguration.cs
- AlignmentXValidation.cs
- SubstitutionResponseElement.cs
- ProtectedConfigurationProviderCollection.cs
- ParentQuery.cs
- KerberosRequestorSecurityToken.cs
- ScrollViewerAutomationPeer.cs
- ListView.cs
- MemberMaps.cs
- WebPartHeaderCloseVerb.cs
- SoapSchemaExporter.cs
- AuthStoreRoleProvider.cs
- Documentation.cs
- GPRECTF.cs
- DataBindingExpressionBuilder.cs
- LogAppendAsyncResult.cs
- EntityCommand.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- ReliableMessagingHelpers.cs
- StsCommunicationException.cs
- TextElementCollection.cs