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
- X509Certificate2.cs
- ProxyBuilder.cs
- SqlLiftWhereClauses.cs
- OutputCacheProviderCollection.cs
- BridgeDataRecord.cs
- wmiprovider.cs
- SHA384Cng.cs
- DocumentEventArgs.cs
- Token.cs
- FixedSOMLineRanges.cs
- AutomationEvent.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- Viewport3DAutomationPeer.cs
- ContextConfiguration.cs
- XmlUtil.cs
- ExtensionFile.cs
- ProcessInfo.cs
- Item.cs
- ConfigurationSettings.cs
- mediapermission.cs
- PasswordPropertyTextAttribute.cs
- ListBindableAttribute.cs
- IPPacketInformation.cs
- CoreChannel.cs
- EndpointDispatcher.cs
- PrinterSettings.cs
- ExtendedPropertyCollection.cs
- ViewLoader.cs
- DrawTreeNodeEventArgs.cs
- ProgressiveCrcCalculatingStream.cs
- OpCellTreeNode.cs
- EtwTrace.cs
- AbsoluteQuery.cs
- SoapSchemaImporter.cs
- StatusBarPanelClickEvent.cs
- ScaleTransform.cs
- ExclusiveTcpTransportManager.cs
- QueryStringParameter.cs
- MinimizableAttributeTypeConverter.cs
- MessageSecurityOverTcp.cs
- DocumentViewerHelper.cs
- TraceListeners.cs
- CompoundFileStorageReference.cs
- PropertyGridView.cs
- CodeDelegateCreateExpression.cs
- VisualStyleTypesAndProperties.cs
- CompilerGeneratedAttribute.cs
- GeometryValueSerializer.cs
- RegexCompilationInfo.cs
- FormsAuthenticationUserCollection.cs
- HostedTransportConfigurationBase.cs
- TextParagraphView.cs
- Tokenizer.cs
- SuppressIldasmAttribute.cs
- _UncName.cs
- BitmapFrame.cs
- ConfigXmlAttribute.cs
- PersistencePipeline.cs
- TransactionInformation.cs
- MetadataItem_Static.cs
- RelatedView.cs
- EditorBrowsableAttribute.cs
- ViewSimplifier.cs
- SHA1CryptoServiceProvider.cs
- ClientRuntimeConfig.cs
- PtsCache.cs
- MetafileEditor.cs
- cryptoapiTransform.cs
- ElementProxy.cs
- SoapElementAttribute.cs
- StatusStrip.cs
- EntityEntry.cs
- ScalarOps.cs
- FirstMatchCodeGroup.cs
- XmlException.cs
- EditCommandColumn.cs
- Opcode.cs
- OleDbConnectionFactory.cs
- WebServicesDescriptionAttribute.cs
- QuadTree.cs
- TypeConverterValueSerializer.cs
- XPathScanner.cs
- InOutArgumentConverter.cs
- SimpleExpression.cs
- WsdlHelpGeneratorElement.cs
- SerializableAttribute.cs
- AxHost.cs
- FileEnumerator.cs
- TrackBar.cs
- ReachSerializer.cs
- VariableQuery.cs
- ScrollProperties.cs
- EqualityArray.cs
- WebReferencesBuildProvider.cs
- DateTimeFormatInfoScanner.cs
- ShaderEffect.cs
- TriggerCollection.cs
- ConfigurationErrorsException.cs
- __Filters.cs
- PresentationTraceSources.cs