Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / Serialization / CodeMethodMap.cs / 1 / CodeMethodMap.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.ComponentModel.Design.Serialization {
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Design;
using System.Diagnostics;
///
/// This structure is used by IntegrateStatements to put statements in the right place.
///
internal class CodeMethodMap {
private CodeStatementCollection _container;
private CodeStatementCollection _begin;
private CodeStatementCollection _end;
private CodeStatementCollection _statements;
private CodeStatementCollection _locals;
private CodeStatementCollection _fields;
private CodeStatementCollection _variables;
private CodeStatementCollection _targetStatements;
private CodeMemberMethod _method;
internal CodeMethodMap(CodeMemberMethod method) : this(null, method){
}
internal CodeMethodMap(CodeStatementCollection targetStatements, CodeMemberMethod method) {
_method = method;
if (targetStatements != null) {
_targetStatements = targetStatements;
}
else {
_targetStatements = _method.Statements;
}
}
internal CodeStatementCollection BeginStatements {
get {
if (_begin == null) _begin = new CodeStatementCollection();
return _begin;
}
}
internal CodeStatementCollection EndStatements {
get {
if (_end == null) _end = new CodeStatementCollection();
return _end;
}
}
internal CodeStatementCollection ContainerStatements {
get {
if (_container == null) _container = new CodeStatementCollection();
return _container;
}
}
internal CodeMemberMethod Method {
get {
return _method;
}
}
internal CodeStatementCollection Statements {
get {
if (_statements == null) _statements = new CodeStatementCollection();
return _statements;
}
}
internal CodeStatementCollection LocalVariables {
get {
if (_locals == null) _locals = new CodeStatementCollection();
return _locals;
}
}
internal CodeStatementCollection FieldAssignments {
get {
if (_fields == null) _fields = new CodeStatementCollection();
return _fields;
}
}
//
internal CodeStatementCollection VariableAssignments {
get {
if (_variables == null) _variables = new CodeStatementCollection();
return _variables;
}
}
internal void Add(CodeStatementCollection statements) {
foreach (CodeStatement statement in statements) {
string isContainer = statement.UserData["IContainer"] as string;
if (isContainer != null && isContainer == "IContainer") {
ContainerStatements.Add(statement);
}
else if (statement is CodeAssignStatement && ((CodeAssignStatement)statement).Left is CodeFieldReferenceExpression) {
FieldAssignments.Add(statement);
}
else if (statement is CodeAssignStatement && ((CodeAssignStatement)statement).Left is CodeVariableReferenceExpression) {
VariableAssignments.Add(statement);
}
else if (statement is CodeVariableDeclarationStatement) {
LocalVariables.Add(statement);
}
else {
string order = statement.UserData["statement-ordering"] as string;
if (order != null) {
switch (order) {
case "begin":
BeginStatements.Add(statement);
break;
case "end":
EndStatements.Add(statement);
break;
case "default":
default:
Statements.Add(statement);
break;
}
}
else {
Statements.Add(statement);
}
}
}
}
internal void Combine() {
if (_container != null) _targetStatements.AddRange(_container);
if (_locals != null) _targetStatements.AddRange(_locals);
if (_fields != null) _targetStatements.AddRange(_fields);
if (_variables != null) _targetStatements.AddRange(_variables);
if (_begin != null) _targetStatements.AddRange(_begin);
if (_statements != null) _targetStatements.AddRange(_statements);
if (_end != null) _targetStatements.AddRange(_end);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Timer.cs
- WebPartDisplayModeEventArgs.cs
- Accessible.cs
- AttributeEmitter.cs
- _UncName.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- SystemUdpStatistics.cs
- Not.cs
- SoapSchemaImporter.cs
- TypeHelper.cs
- httpserverutility.cs
- GenerateScriptTypeAttribute.cs
- VSWCFServiceContractGenerator.cs
- VisualCollection.cs
- Nullable.cs
- LoginCancelEventArgs.cs
- FunctionImportElement.cs
- NetDataContractSerializer.cs
- DataGridColumnHeader.cs
- Simplifier.cs
- TranslateTransform.cs
- DescendantOverDescendantQuery.cs
- SerializerProvider.cs
- WebContext.cs
- CultureInfoConverter.cs
- Int32.cs
- Int32CAMarshaler.cs
- ListControlConvertEventArgs.cs
- DataGridDetailsPresenter.cs
- UpdateProgress.cs
- _AutoWebProxyScriptHelper.cs
- TextDataBindingHandler.cs
- TypeTypeConverter.cs
- EdmScalarPropertyAttribute.cs
- RepeaterItem.cs
- XamlTypeMapper.cs
- DataGridViewCheckBoxColumn.cs
- ProfileSection.cs
- CorrelationTokenTypeConvertor.cs
- BindUriHelper.cs
- UiaCoreProviderApi.cs
- Win32NamedPipes.cs
- DataControlFieldHeaderCell.cs
- OptionUsage.cs
- PolicyLevel.cs
- TypeTypeConverter.cs
- HttpDebugHandler.cs
- LifetimeServices.cs
- ReceiveContextCollection.cs
- ChannelServices.cs
- SaveWorkflowCommand.cs
- OleDbRowUpdatedEvent.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- AssemblyResolver.cs
- KeyValuePair.cs
- ToolStripItemCollection.cs
- BitmapEffectGroup.cs
- InitializingNewItemEventArgs.cs
- handlecollector.cs
- TransactionsSectionGroup.cs
- ReadOnlyAttribute.cs
- ThicknessAnimationBase.cs
- DetailsViewInsertEventArgs.cs
- PerformanceCounter.cs
- StaticExtension.cs
- CodeDirectiveCollection.cs
- FontUnit.cs
- SourceInterpreter.cs
- Grammar.cs
- __ConsoleStream.cs
- WebPartConnection.cs
- ZipIOBlockManager.cs
- PointHitTestResult.cs
- ListViewDeleteEventArgs.cs
- AnimationStorage.cs
- TemplateContainer.cs
- MappingSource.cs
- UInt32.cs
- _LocalDataStore.cs
- X509WindowsSecurityToken.cs
- XPathNavigatorReader.cs
- WebPartVerb.cs
- EventHandlingScope.cs
- TextEncodedRawTextWriter.cs
- ConstraintStruct.cs
- ObjectDataSourceSelectingEventArgs.cs
- TypeDependencyAttribute.cs
- TemplateKey.cs
- AsyncCompletedEventArgs.cs
- CheckBoxRenderer.cs
- RequestCacheValidator.cs
- ScriptRef.cs
- DecoderReplacementFallback.cs
- BeginStoryboard.cs
- DeobfuscatingStream.cs
- DesignerActionListCollection.cs
- DesignTimeType.cs
- UserPersonalizationStateInfo.cs
- InputBuffer.cs
- StickyNoteAnnotations.cs