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
- DescendantQuery.cs
- LocalizationCodeDomSerializer.cs
- InkSerializer.cs
- HostingEnvironment.cs
- ImageBrush.cs
- TextEditorThreadLocalStore.cs
- WorkflowHostingResponseContext.cs
- MediaTimeline.cs
- PathData.cs
- ObfuscateAssemblyAttribute.cs
- DPTypeDescriptorContext.cs
- GridViewSortEventArgs.cs
- DiscoveryClientBindingElement.cs
- UIElementPropertyUndoUnit.cs
- TableStyle.cs
- MimePart.cs
- DataKey.cs
- AutomationEventArgs.cs
- CodeArrayIndexerExpression.cs
- Keywords.cs
- Span.cs
- QueueProcessor.cs
- DataSourceControlBuilder.cs
- WebPartUserCapability.cs
- JournalEntryListConverter.cs
- RadioButtonFlatAdapter.cs
- ToolTipAutomationPeer.cs
- PolicyManager.cs
- SqlProcedureAttribute.cs
- ResXDataNode.cs
- CaseInsensitiveOrdinalStringComparer.cs
- XmlExpressionDumper.cs
- FindRequestContext.cs
- MenuItem.cs
- TableDetailsRow.cs
- SQLInt64.cs
- NavigationWindow.cs
- EpmContentDeSerializer.cs
- AsymmetricKeyExchangeFormatter.cs
- PersonalizationDictionary.cs
- AppModelKnownContentFactory.cs
- OracleParameterCollection.cs
- SqlOuterApplyReducer.cs
- AlignmentYValidation.cs
- DataException.cs
- DbgUtil.cs
- MenuItemBinding.cs
- ThicknessAnimationBase.cs
- PageStatePersister.cs
- WebPartMenu.cs
- XmlDocumentFragment.cs
- HebrewNumber.cs
- BackgroundWorker.cs
- Suspend.cs
- DateTimePicker.cs
- SettingsAttributes.cs
- UserInitiatedNavigationPermission.cs
- XPathParser.cs
- DependencyPropertyKind.cs
- StringArrayConverter.cs
- TemplateBaseAction.cs
- ScriptingJsonSerializationSection.cs
- TriState.cs
- LayoutTableCell.cs
- ListViewGroupConverter.cs
- CodeParameterDeclarationExpressionCollection.cs
- QilNode.cs
- GatewayIPAddressInformationCollection.cs
- DbTypeMap.cs
- DataDocumentXPathNavigator.cs
- HiddenFieldPageStatePersister.cs
- InputLanguageSource.cs
- LOSFormatter.cs
- ConfigXmlElement.cs
- DialogBaseForm.cs
- Currency.cs
- MetadataWorkspace.cs
- AccessorTable.cs
- SessionViewState.cs
- GenericIdentity.cs
- PageSetupDialog.cs
- EdmType.cs
- XmlIterators.cs
- PropertyIDSet.cs
- MessageQueueTransaction.cs
- RunInstallerAttribute.cs
- DateTimeFormat.cs
- CallbackHandler.cs
- VerbConverter.cs
- UTF8Encoding.cs
- LocatorPart.cs
- TextServicesCompartmentContext.cs
- OpCodes.cs
- LocatorPartList.cs
- SqlConnectionPoolProviderInfo.cs
- SiteMapPath.cs
- OdbcEnvironmentHandle.cs
- ExpressionLexer.cs
- MemberNameValidator.cs
- AppSecurityManager.cs