Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 1 / TdsRecordBufferSetter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using Microsoft.SqlServer.Server; using System; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Data.SqlTypes; // TdsRecordBufferSetter handles writing a structured value out to a TDS stream internal class TdsRecordBufferSetter : SmiRecordBuffer { #region Fields (private) private TdsValueSetter[] _fieldSetters; // setters for individual fields private TdsParserStateObject _stateObj; // target to write to private SmiMetaData _metaData; // metadata describing value #if DEBUG private const int ReadyForToken = -1; // must call new/end element next private const int EndElementsCalled = -2; // already called EndElements, can only call Close private const int Closed = -3; // closed (zombied) private int _currentField; // validate that caller sets columns in correct order. #endif #endregion #region Exposed Construct and control methods/properties internal TdsRecordBufferSetter(TdsParserStateObject stateObj, SmiMetaData md) { Debug.Assert(SqlDbType.Structured == md.SqlDbType, "Unsupported SqlDbType: " + md.SqlDbType); _fieldSetters = new TdsValueSetter[md.FieldMetaData.Count]; for(int i=0; i_currentField, "_currentField out of range for setting a column:" + _currentField); Debug.Assert(ordinal == _currentField, "Setter called out of order. Should be " + _currentField + ", but was " + ordinal); // Must not write to field with a DefaultFieldsProperty set to true Debug.Assert(!((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[ordinal], "Attempt to write to a default-valued field: " + ordinal); #endif } // Handle logic of skipping default columns [Conditional("DEBUG")] private void SkipPossibleDefaultedColumns(int targetColumn) { #if DEBUG Debug.Assert(targetColumn < _metaData.FieldMetaData.Count && targetColumn >= ReadyForToken, "TdsRecordBufferSetter.SkipPossibleDefaultedColumns: Invalid target column: " + targetColumn); // special setup for ReadyForToken as the target if (targetColumn == ReadyForToken) { if (ReadyForToken == _currentField) { return; } // Handle readyfortoken by using count of columns in the loop. targetColumn = _metaData.FieldMetaData.Count; } // Handle skipping default-valued fields while (targetColumn > _currentField) { // All intermediate fields must be default fields (i.e. have a "true" entry in SmiDefaultFieldsProperty Debug.Assert(((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[_currentField], "Skipping a field that was not default: " + _currentField); _currentField++; } if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } [Conditional("DEBUG")] internal void CheckSettingColumn(int ordinal) { #if DEBUG // Make sure target column can be written to. CheckWritingToColumn(ordinal); _currentField++; if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using Microsoft.SqlServer.Server; using System; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Data.SqlTypes; // TdsRecordBufferSetter handles writing a structured value out to a TDS stream internal class TdsRecordBufferSetter : SmiRecordBuffer { #region Fields (private) private TdsValueSetter[] _fieldSetters; // setters for individual fields private TdsParserStateObject _stateObj; // target to write to private SmiMetaData _metaData; // metadata describing value #if DEBUG private const int ReadyForToken = -1; // must call new/end element next private const int EndElementsCalled = -2; // already called EndElements, can only call Close private const int Closed = -3; // closed (zombied) private int _currentField; // validate that caller sets columns in correct order. #endif #endregion #region Exposed Construct and control methods/properties internal TdsRecordBufferSetter(TdsParserStateObject stateObj, SmiMetaData md) { Debug.Assert(SqlDbType.Structured == md.SqlDbType, "Unsupported SqlDbType: " + md.SqlDbType); _fieldSetters = new TdsValueSetter[md.FieldMetaData.Count]; for(int i=0; i_currentField, "_currentField out of range for setting a column:" + _currentField); Debug.Assert(ordinal == _currentField, "Setter called out of order. Should be " + _currentField + ", but was " + ordinal); // Must not write to field with a DefaultFieldsProperty set to true Debug.Assert(!((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[ordinal], "Attempt to write to a default-valued field: " + ordinal); #endif } // Handle logic of skipping default columns [Conditional("DEBUG")] private void SkipPossibleDefaultedColumns(int targetColumn) { #if DEBUG Debug.Assert(targetColumn < _metaData.FieldMetaData.Count && targetColumn >= ReadyForToken, "TdsRecordBufferSetter.SkipPossibleDefaultedColumns: Invalid target column: " + targetColumn); // special setup for ReadyForToken as the target if (targetColumn == ReadyForToken) { if (ReadyForToken == _currentField) { return; } // Handle readyfortoken by using count of columns in the loop. targetColumn = _metaData.FieldMetaData.Count; } // Handle skipping default-valued fields while (targetColumn > _currentField) { // All intermediate fields must be default fields (i.e. have a "true" entry in SmiDefaultFieldsProperty Debug.Assert(((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[_currentField], "Skipping a field that was not default: " + _currentField); _currentField++; } if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } [Conditional("DEBUG")] internal void CheckSettingColumn(int ordinal) { #if DEBUG // Make sure target column can be written to. CheckWritingToColumn(ordinal); _currentField++; if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } #endregion } } // 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
- PriorityQueue.cs
- WebBrowser.cs
- _ListenerAsyncResult.cs
- FormsAuthenticationTicket.cs
- DesignerAttribute.cs
- ExtensibleClassFactory.cs
- WebServiceHandler.cs
- InstancePersistenceException.cs
- DbProviderFactory.cs
- CacheHelper.cs
- EUCJPEncoding.cs
- User.cs
- DataGridRelationshipRow.cs
- DesignerForm.cs
- Module.cs
- TimerTable.cs
- TextServicesManager.cs
- SessionStateSection.cs
- IssuanceLicense.cs
- CodeAttributeDeclarationCollection.cs
- AppAction.cs
- ObjectDataProvider.cs
- MediaTimeline.cs
- COM2PropertyDescriptor.cs
- ResXResourceWriter.cs
- LazyTextWriterCreator.cs
- WebPartCollection.cs
- Screen.cs
- TableSectionStyle.cs
- HyperLinkField.cs
- DiscoveryDocument.cs
- SqlInternalConnectionTds.cs
- BoolExpression.cs
- StringReader.cs
- ListDictionaryInternal.cs
- SystemInfo.cs
- ObjectHandle.cs
- ReflectionTypeLoadException.cs
- CoreSwitches.cs
- XhtmlTextWriter.cs
- TextCharacters.cs
- TextSelectionHighlightLayer.cs
- HasCopySemanticsAttribute.cs
- LogFlushAsyncResult.cs
- NTAccount.cs
- ExpressionBuilderContext.cs
- GeometryGroup.cs
- MemberRelationshipService.cs
- NaturalLanguageHyphenator.cs
- linebase.cs
- MemberDescriptor.cs
- AdapterDictionary.cs
- NegationPusher.cs
- Section.cs
- Panel.cs
- ToolStripItemGlyph.cs
- SQLGuid.cs
- ObjectDataSourceView.cs
- MemoryResponseElement.cs
- TypeDependencyAttribute.cs
- EventSetter.cs
- LinqDataSource.cs
- FileLogRecordStream.cs
- InternalConfigEventArgs.cs
- OnOperation.cs
- BitmapEffectvisualstate.cs
- TransactionFlowBindingElement.cs
- Faults.cs
- SafeLibraryHandle.cs
- StructuredTypeEmitter.cs
- UrlAuthorizationModule.cs
- CounterSampleCalculator.cs
- QuerySetOp.cs
- ConnectionStringSettings.cs
- SamlEvidence.cs
- HyperLinkColumn.cs
- ManagedWndProcTracker.cs
- ParseChildrenAsPropertiesAttribute.cs
- TwoPhaseCommitProxy.cs
- RealizationContext.cs
- SqlMethodTransformer.cs
- XmlTextReaderImpl.cs
- TextElementCollectionHelper.cs
- ClientTargetCollection.cs
- Formatter.cs
- XmlSchemaExternal.cs
- SerializeAbsoluteContext.cs
- PhysicalAddress.cs
- AppDomainProtocolHandler.cs
- NotifyParentPropertyAttribute.cs
- Errors.cs
- UnicodeEncoding.cs
- MaskedTextBoxDesigner.cs
- PackageFilter.cs
- DashStyle.cs
- SqlUdtInfo.cs
- ErrorProvider.cs
- TemplateControlCodeDomTreeGenerator.cs
- DesignerActionVerbItem.cs
- VirtualPathProvider.cs