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
- Line.cs
- OracleColumn.cs
- X509UI.cs
- XslAst.cs
- DescriptionAttribute.cs
- LinqDataSourceDeleteEventArgs.cs
- DesignerView.xaml.cs
- ListItemsCollectionEditor.cs
- CollectionType.cs
- ReaderOutput.cs
- FixedSOMPageElement.cs
- Page.cs
- SwitchElementsCollection.cs
- EntityDataSourceEntitySetNameItem.cs
- StatusBarItemAutomationPeer.cs
- ExceptionNotification.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- DbProviderManifest.cs
- InvalidProgramException.cs
- _AutoWebProxyScriptEngine.cs
- PrintPreviewControl.cs
- FuncCompletionCallbackWrapper.cs
- AbstractExpressions.cs
- Rect3D.cs
- SimpleHandlerFactory.cs
- VerificationAttribute.cs
- BasicViewGenerator.cs
- AssemblyInfo.cs
- WebColorConverter.cs
- HttpAsyncResult.cs
- TableSectionStyle.cs
- SystemIPv6InterfaceProperties.cs
- Helper.cs
- GroupByExpressionRewriter.cs
- GridViewCancelEditEventArgs.cs
- ResourceWriter.cs
- XPathPatternParser.cs
- HScrollBar.cs
- SendParametersContent.cs
- LinkedResource.cs
- ConditionalAttribute.cs
- PageVisual.cs
- OperationAbortedException.cs
- KnownTypesProvider.cs
- ReferencedCollectionType.cs
- GestureRecognitionResult.cs
- ToolStripDropDownButton.cs
- ExcludePathInfo.cs
- OdbcCommandBuilder.cs
- PerformanceCounterPermissionEntry.cs
- AnnotationDocumentPaginator.cs
- ValidationException.cs
- NoPersistProperty.cs
- RequestStatusBarUpdateEventArgs.cs
- ReflectionUtil.cs
- PerformanceCounterPermissionEntry.cs
- XPathAncestorIterator.cs
- EntityDataSourceColumn.cs
- BrowserCapabilitiesCodeGenerator.cs
- ConfigXmlComment.cs
- LostFocusEventManager.cs
- DetailsViewUpdateEventArgs.cs
- AuthenticationModuleElementCollection.cs
- TypeConverterValueSerializer.cs
- GridViewSortEventArgs.cs
- ManagementClass.cs
- ProviderException.cs
- SubMenuStyle.cs
- WindowManager.cs
- ParserContext.cs
- ByteFacetDescriptionElement.cs
- AdapterUtil.cs
- Attributes.cs
- IndicCharClassifier.cs
- ADMembershipProvider.cs
- AppSecurityManager.cs
- MD5.cs
- ContainerFilterService.cs
- TextSimpleMarkerProperties.cs
- TransformerTypeCollection.cs
- InstanceContextMode.cs
- ToolStripGrip.cs
- XmlAnyElementAttributes.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- SoapConverter.cs
- Win32.cs
- SqlMethodAttribute.cs
- Semaphore.cs
- ManualResetEventSlim.cs
- ContractSearchPattern.cs
- PropertyRecord.cs
- RegistrySecurity.cs
- Configuration.cs
- DataGridDesigner.cs
- WaitingCursor.cs
- ADConnectionHelper.cs
- CodeGenerator.cs
- SelectionWordBreaker.cs
- LZCodec.cs
- Dictionary.cs