亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? convertvisitortypemembers.cs

?? SharpDevelop2.0.0 c#開(kāi)發(fā)免費(fèi)工具
?? CS
字號(hào):
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
//     <version>$Revision: 1225 $</version>
// </file>

using System;
using System.Collections.Generic;
using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Parser.AST;
using Boo.Lang.Compiler;
using B = Boo.Lang.Compiler.Ast;

namespace NRefactoryToBooConverter
{
	partial class ConvertVisitor
	{
		public object Visit(FieldDeclaration fieldDeclaration, object data)
		{
			for (int i = 0; i < fieldDeclaration.Fields.Count; i++) {
				ConvertField(fieldDeclaration.GetTypeForField(i), fieldDeclaration.Fields[i], fieldDeclaration);
			}
			return null;
		}
		
		public object Visit(VariableDeclaration variableDeclaration, object data)
		{
			throw new ApplicationException("Visited VariableDeclaration.");
		}
		
		void ConvertField(TypeReference typeRef, VariableDeclaration variable, FieldDeclaration fieldDeclaration)
		{
			B.TypeMember m;
			if (currentType is B.EnumDefinition) {
				if (variable.Initializer.IsNull) {
					m = new B.EnumMember(GetLexicalInfo(fieldDeclaration));
				} else {
					PrimitiveExpression p = variable.Initializer as PrimitiveExpression;
					if (p == null || !(p.Value is int)) {
						AddError(fieldDeclaration, "enum member initializer must be integer value");
						return;
					}
					m = new B.EnumMember(GetLexicalInfo(fieldDeclaration), new B.IntegerLiteralExpression((int)p.Value));
				}
			} else {
				m = new B.Field(GetLexicalInfo(fieldDeclaration), ConvertTypeReference(typeRef), ConvertExpression(variable.Initializer));
				m.Modifiers = ConvertModifier(fieldDeclaration, B.TypeMemberModifiers.Private);
			}
			m.Name = variable.Name;
			ConvertAttributes(fieldDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
		}
		
		B.Block ConvertMethodBlock(BlockStatement block)
		{
			B.Block b = ConvertBlock(block);
			RenameLocalsVisitor.RenameLocals(b, nameComparer);
			return b;
		}
		
		B.ExplicitMemberInfo ConvertInterfaceImplementations(List<InterfaceImplementation> implementations, AttributedNode node, B.TypeMember targetMember)
		{
			if (implementations.Count == 0)
				return null;
			if (implementations.Count > 1) {
				AddError(node, "Multiple explicit interface implementations are not supported");
			}
			if (implementations[0].MemberName != targetMember.Name) {
				AddError(node, "Explicit interface implementation: Implementing member with different name is not supported");
			}
			if (targetMember.Modifiers == B.TypeMemberModifiers.Private) {
				targetMember.Modifiers = B.TypeMemberModifiers.None;
			} else {
				AddError(node, "Explicit interface implementation: Only private methods can explicitly implement interfaces");
			}
			B.TypeReference tr = ConvertTypeReference(implementations[0].InterfaceType);
			if (tr is B.SimpleTypeReference) {
				B.ExplicitMemberInfo explicitInfo = new B.ExplicitMemberInfo(GetLexicalInfo(node));
				explicitInfo.InterfaceType = (B.SimpleTypeReference)tr;
				return explicitInfo;
			} else {
				AddError(node, "Explicit interface implementation: invalid base type, expecting SimpleTypeReference");
				return null;
			}
		}
		
		B.Method entryPointMethod;
		
		public object Visit(MethodDeclaration methodDeclaration, object data)
		{
			B.Method m = new B.Method(GetLexicalInfo(methodDeclaration));
			m.Name = methodDeclaration.Name;
			m.Modifiers = ConvertModifier(methodDeclaration, B.TypeMemberModifiers.Private);
			ConvertAttributes(methodDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			if (methodDeclaration.HandlesClause.Count > 0) {
				// TODO: Convert handles clauses to [Handles] attribute
				AddError(methodDeclaration, "Handles-clause is not supported.");
			}
			m.ExplicitInfo = ConvertInterfaceImplementations(methodDeclaration.InterfaceImplementations, methodDeclaration, m);
			if (methodDeclaration.Templates.Count > 0) {
				AddError(methodDeclaration, "Declaring generic methods is not supported.");
			}
			ConvertParameters(methodDeclaration.Parameters, m.Parameters);
			m.EndSourceLocation = GetEndLocation((INode)methodDeclaration.Body ?? methodDeclaration);
			m.ReturnType = ConvertTypeReference(methodDeclaration.TypeReference);
			m.Body = ConvertMethodBlock(methodDeclaration.Body);
			if (m.Name == "Main" && m.IsStatic && m.Parameters.Count <= 1 &&
			    (methodDeclaration.TypeReference.SystemType == "System.Void" || methodDeclaration.TypeReference.SystemType == "System.Int32"))
			{
				entryPointMethod = m;
			}
			return m;
		}
		
		
		public object Visit(ConstructorDeclaration constructorDeclaration, object data)
		{
			B.Constructor m = new B.Constructor(GetLexicalInfo(constructorDeclaration));
			m.Modifiers = ConvertModifier(constructorDeclaration, B.TypeMemberModifiers.Private);
			ConvertAttributes(constructorDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			ConvertParameters(constructorDeclaration.Parameters, m.Parameters);
			m.EndSourceLocation = GetEndLocation((INode)constructorDeclaration.Body ?? constructorDeclaration);
			m.Body = ConvertMethodBlock(constructorDeclaration.Body);
			ConstructorInitializer ci = constructorDeclaration.ConstructorInitializer;
			if (ci != null && !ci.IsNull) {
				B.Expression initializerBase;
				if (ci.ConstructorInitializerType == ConstructorInitializerType.Base)
					initializerBase = new B.SuperLiteralExpression();
				else
					initializerBase = new B.SelfLiteralExpression();
				B.MethodInvocationExpression initializer = new B.MethodInvocationExpression(initializerBase);
				ConvertExpressions(ci.Arguments, initializer.Arguments);
				m.Body.Insert(0, new B.ExpressionStatement(initializer));
			}
			return m;
		}
		
		public object Visit(DestructorDeclaration destructorDeclaration, object data)
		{
			B.Destructor m = new B.Destructor(GetLexicalInfo(destructorDeclaration));
			ConvertAttributes(destructorDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			m.EndSourceLocation = GetLocation(destructorDeclaration.EndLocation);
			m.Body = ConvertMethodBlock(destructorDeclaration.Body);
			return m;
		}
		
		void ConvertParameters(List<ParameterDeclarationExpression> input, B.ParameterDeclarationCollection output)
		{
			bool isParams = false;
			foreach (ParameterDeclarationExpression pde in input) {
				B.ParameterDeclaration para = ConvertParameter(pde, out isParams);
				if (para != null)
					output.Add(para);
			}
			output.VariableNumber = isParams;
		}
		
		B.ParameterDeclaration ConvertParameter(ParameterDeclarationExpression pde, out bool isParams)
		{
			B.ParameterDeclaration para = new B.ParameterDeclaration(pde.ParameterName, ConvertTypeReference(pde.TypeReference));
			if ((pde.ParamModifier & ParamModifier.Optional) != 0) {
				AddError(pde, "Optional parameters are not supported.");
			}
			if ((pde.ParamModifier & ParamModifier.Out) != 0) {
				para.Modifiers |= B.ParameterModifiers.Ref;
			}
			if ((pde.ParamModifier & ParamModifier.Ref) != 0) {
				para.Modifiers |= B.ParameterModifiers.Ref;
			}
			isParams = (pde.ParamModifier & ParamModifier.Params) != 0;
			ConvertAttributes(pde.Attributes, para.Attributes);
			return para;
		}
		
		public object Visit(ParameterDeclarationExpression parameterDeclarationExpression, object data)
		{
			bool tmp;
			return ConvertParameter(parameterDeclarationExpression, out tmp);
		}
		
		public object Visit(PropertyDeclaration propertyDeclaration, object data)
		{
			B.Property m = new B.Property(GetLexicalInfo(propertyDeclaration));
			m.Name = propertyDeclaration.Name;
			m.Modifiers = ConvertModifier(propertyDeclaration, B.TypeMemberModifiers.Private);
			ConvertAttributes(propertyDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			ConvertParameters(propertyDeclaration.Parameters, m.Parameters);
			m.EndSourceLocation = GetLocation(propertyDeclaration.EndLocation);
			m.Type = ConvertTypeReference(propertyDeclaration.TypeReference);
			m.ExplicitInfo = ConvertInterfaceImplementations(propertyDeclaration.InterfaceImplementations, propertyDeclaration, m);
			if (!propertyDeclaration.IsWriteOnly) {
				m.Getter = new B.Method(GetLexicalInfo(propertyDeclaration.GetRegion));
				if (propertyDeclaration.GetRegion != null) {
					ConvertAttributes(propertyDeclaration.GetRegion.Attributes, m.Getter.Attributes);
					m.Modifiers = ConvertModifier(propertyDeclaration.GetRegion, m.Visibility);
					m.Getter.Body = ConvertMethodBlock(propertyDeclaration.GetRegion.Block);
					m.Getter.ReturnType = m.Type;
				}
			}
			if (!propertyDeclaration.IsReadOnly) {
				m.Setter = new B.Method(GetLexicalInfo(propertyDeclaration.SetRegion));
				if (propertyDeclaration.SetRegion != null) {
					ConvertAttributes(propertyDeclaration.SetRegion.Attributes, m.Setter.Attributes);
					m.Modifiers = ConvertModifier(propertyDeclaration.SetRegion, m.Visibility);
					m.Setter.Body = ConvertMethodBlock(propertyDeclaration.SetRegion.Block);
				}
			}
			return m;
		}
		
		public object Visit(IndexerDeclaration indexerDeclaration, object data)
		{
			B.Property m = new B.Property(GetLexicalInfo(indexerDeclaration));
			
			m.Modifiers = ConvertModifier(indexerDeclaration, B.TypeMemberModifiers.Private);
			ConvertAttributes(indexerDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			ConvertParameters(indexerDeclaration.Parameters, m.Parameters);
			m.EndSourceLocation = GetLocation(indexerDeclaration.EndLocation);
			m.Type = ConvertTypeReference(indexerDeclaration.TypeReference);
			m.Name = "this";
			m.ExplicitInfo = ConvertInterfaceImplementations(indexerDeclaration.InterfaceImplementations, indexerDeclaration, m);
			m.Name = "self";
			if (!indexerDeclaration.IsWriteOnly) {
				m.Getter = new B.Method(GetLexicalInfo(indexerDeclaration.GetRegion));
				if (indexerDeclaration.GetRegion != null) {
					ConvertAttributes(indexerDeclaration.GetRegion.Attributes, m.Getter.Attributes);
					m.Modifiers = ConvertModifier(indexerDeclaration.GetRegion, m.Visibility);
					m.Getter.Body = ConvertMethodBlock(indexerDeclaration.GetRegion.Block);
					m.Getter.ReturnType = m.Type;
				}
			}
			if (!indexerDeclaration.IsReadOnly) {
				m.Setter = new B.Method(GetLexicalInfo(indexerDeclaration.SetRegion));
				if (indexerDeclaration.SetRegion != null) {
					ConvertAttributes(indexerDeclaration.SetRegion.Attributes, m.Setter.Attributes);
					m.Modifiers = ConvertModifier(indexerDeclaration.SetRegion, m.Visibility);
					m.Setter.Body = ConvertMethodBlock(indexerDeclaration.SetRegion.Block);
				}
			}
			return m;
		}
		
		public object Visit(PropertyGetRegion propertyGetRegion, object data)
		{
			throw new ApplicationException("PropertyGetRegion visited.");
		}
		
		public object Visit(PropertySetRegion propertySetRegion, object data)
		{
			throw new ApplicationException("PropertySetRegion visited.");
		}
		
		public object Visit(EventDeclaration eventDeclaration, object data)
		{
			B.Event m = new B.Event(GetLexicalInfo(eventDeclaration));
			m.Name = eventDeclaration.Name;
			m.Modifiers = ConvertModifier(eventDeclaration, B.TypeMemberModifiers.Private);
			ConvertAttributes(eventDeclaration.Attributes, m.Attributes);
			if (currentType != null) currentType.Members.Add(m);
			m.EndSourceLocation = GetLocation(eventDeclaration.EndLocation);
			m.Type = ConvertTypeReference(eventDeclaration.TypeReference);
			if (eventDeclaration.InterfaceImplementations.Count > 0) {
				AddError(eventDeclaration, "Explicit interface implementation is not supported for events.");
			}
			if (eventDeclaration.Parameters.Count > 0) {
				AddError(eventDeclaration, "Events with parameters are not supported.");
			}
			if (eventDeclaration.HasAddRegion) {
				m.Add = new B.Method(GetLexicalInfo(eventDeclaration.AddRegion));
				ConvertAttributes(eventDeclaration.AddRegion.Attributes, m.Add.Attributes);
				m.Modifiers = ConvertModifier(eventDeclaration.AddRegion, m.Visibility);
				m.Add.Body = ConvertMethodBlock(eventDeclaration.AddRegion.Block);
			}
			if (eventDeclaration.HasRemoveRegion) {
				m.Remove = new B.Method(GetLexicalInfo(eventDeclaration.RemoveRegion));
				ConvertAttributes(eventDeclaration.RemoveRegion.Attributes, m.Remove.Attributes);
				m.Modifiers = ConvertModifier(eventDeclaration.RemoveRegion, m.Visibility);
				m.Remove.Body = ConvertMethodBlock(eventDeclaration.RemoveRegion.Block);
			}
			if (eventDeclaration.HasRaiseRegion) {
				m.Raise = new B.Method(GetLexicalInfo(eventDeclaration.RaiseRegion));
				ConvertAttributes(eventDeclaration.RaiseRegion.Attributes, m.Raise.Attributes);
				m.Modifiers = ConvertModifier(eventDeclaration.RaiseRegion, m.Visibility);
				m.Raise.Body = ConvertMethodBlock(eventDeclaration.RaiseRegion.Block);
			}
			return m;
		}
		
		public object Visit(EventAddRegion eventAddRegion, object data)
		{
			throw new ApplicationException("EventAddRegion visited.");
		}
		
		public object Visit(EventRemoveRegion eventRemoveRegion, object data)
		{
			throw new ApplicationException("EventRemoveRegion visited.");
		}
		
		public object Visit(EventRaiseRegion eventRaiseRegion, object data)
		{
			throw new ApplicationException("EventRaiseRegion visited.");
		}
		
		public object Visit(ConstructorInitializer constructorInitializer, object data)
		{
			throw new ApplicationException("ConstructorInitializer visited.");
		}
		
		public object Visit(OperatorDeclaration operatorDeclaration, object data)
		{
			AddError(operatorDeclaration, "Declaring operators is not supported (BOO-223).");
			return null;
		}
		
		public object Visit(DeclareDeclaration declareDeclaration, object data)
		{
			throw new NotImplementedException();
		}
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品污网站| 亚洲国产欧美在线| 亚洲国产色一区| 国产精品一二三四五| 在线亚洲+欧美+日本专区| 欧美www视频| 亚洲国产美女搞黄色| 成人综合婷婷国产精品久久蜜臀 | 亚洲色图制服诱惑| 国产在线国偷精品免费看| 欧美日韩国产综合视频在线观看| 亚洲国产岛国毛片在线| 人人爽香蕉精品| 欧美日韩国产大片| ●精品国产综合乱码久久久久| 久久国产综合精品| 欧美人动与zoxxxx乱| 一区二区久久久久| av网站免费线看精品| 精品国产电影一区二区| 蜜臀av一区二区三区| 欧美日韩www| 亚洲丶国产丶欧美一区二区三区| 99久久精品国产导航| 国产精品视频麻豆| 国产精品一品二品| 久久久精品tv| 国产激情偷乱视频一区二区三区| 日韩视频一区二区三区| 人妖欧美一区二区| 欧美一级在线观看| 蜜臀a∨国产成人精品| 欧美日韩电影一区| 偷拍与自拍一区| 91精品国产入口| 日本成人中文字幕在线视频| 欧美日韩电影在线播放| 日韩高清欧美激情| 日韩视频一区二区三区在线播放| 日本女优在线视频一区二区| 日韩视频一区二区三区| 激情另类小说区图片区视频区| 欧美一区二区三区色| 免费在线成人网| 精品国产91洋老外米糕| 国产东北露脸精品视频| 国产精品久久久久久久久图文区 | 亚洲女人****多毛耸耸8| 99国产精品一区| 亚洲精品高清在线观看| 欧美日韩一区二区三区免费看| 亚洲成人精品一区| 日韩欧美中文字幕一区| 国产制服丝袜一区| 亚洲欧洲av在线| 精品视频资源站| 狠狠色丁香久久婷婷综合_中| 国产午夜精品一区二区三区嫩草| 国产精品影音先锋| 亚洲精品视频在线观看免费| 欧美网站一区二区| 国产一区日韩二区欧美三区| 一色桃子久久精品亚洲| 欧美精品在欧美一区二区少妇| 另类人妖一区二区av| 国产精品乱码一区二区三区软件 | 国产91清纯白嫩初高中在线观看 | 日韩黄色小视频| 久久综合久久综合亚洲| 成人高清视频免费观看| 亚洲一区二区精品3399| 精品国产亚洲在线| 91久久精品一区二区二区| 免费观看日韩电影| 亚洲欧洲色图综合| 91精品国产一区二区三区| 成人黄色免费短视频| 日韩精品色哟哟| 中文字幕亚洲区| 日韩欧美精品三级| 日本高清不卡aⅴ免费网站| 激情五月激情综合网| 亚洲男人电影天堂| 中文字幕欧美日本乱码一线二线| 欧美三级欧美一级| 成人高清在线视频| 韩国女主播成人在线| 亚洲国产精品久久久男人的天堂 | 成人激情免费网站| 麻豆精品一区二区av白丝在线| 亚洲欧美国产77777| 亚洲精品一区二区精华| 91精品国产综合久久久蜜臀粉嫩 | 中文字幕一区二区在线观看| 日韩欧美国产一区二区在线播放 | 99re热视频精品| 国产精品一区在线| 久久国内精品自在自线400部| 亚洲高清中文字幕| 亚洲精品亚洲人成人网在线播放| 亚洲国产高清在线| 国产午夜精品理论片a级大结局 | 国产精品888| 麻豆91精品视频| 亚洲成年人网站在线观看| 亚洲欧美福利一区二区| 国产精品久久久久永久免费观看| 久久久久国色av免费看影院| 日韩美女一区二区三区四区| 欧美老肥妇做.爰bbww| 欧美亚洲综合久久| 色狠狠桃花综合| 日本高清成人免费播放| 一本大道久久a久久综合| 91美女在线看| 91福利在线导航| 欧洲精品在线观看| 欧美性猛交xxxx黑人交| 91官网在线观看| 欧美日韩情趣电影| 在线播放国产精品二区一二区四区 | 日本伦理一区二区| 色视频成人在线观看免| 91传媒视频在线播放| 欧美日韩一区二区三区在线| 精品视频在线免费| 日韩一级免费观看| 精品对白一区国产伦| 国产日韩欧美麻豆| 国产精品视频在线看| 中文字幕一区二区三区不卡| 亚洲欧洲综合另类| 亚洲h动漫在线| 精品一区二区三区免费| 国产成人精品午夜视频免费 | 最新国产成人在线观看| 日韩毛片精品高清免费| 亚洲一区视频在线观看视频| 丝袜美腿亚洲色图| 国产精品一级片在线观看| av在线这里只有精品| 欧美色倩网站大全免费| 日韩一区二区三区在线| 中文文精品字幕一区二区| 亚洲一区二三区| 久久99深爱久久99精品| 99国产精品视频免费观看| 欧美日韩成人综合在线一区二区| 欧美精品一区二区三区一线天视频 | 日本不卡一区二区三区高清视频| 久久99精品一区二区三区| 大美女一区二区三区| 欧美在线制服丝袜| 日韩欧美国产综合一区| 亚洲色图欧美偷拍| 日韩精品成人一区二区在线| 成人毛片在线观看| 日韩一卡二卡三卡四卡| 亚洲人一二三区| 久久国产精品99精品国产| 99国产精品一区| 久久先锋影音av| 日韩不卡免费视频| 懂色中文一区二区在线播放| 欧美人妖巨大在线| 亚洲图片另类小说| 国产美女精品在线| 在线播放日韩导航| 亚洲精品成人在线| 国产suv一区二区三区88区| 91精品在线一区二区| 亚洲欧美一区二区视频| 精品亚洲porn| 欧美妇女性影城| 一卡二卡三卡日韩欧美| 国产成人免费视频精品含羞草妖精| 欧美挠脚心视频网站| 亚洲精选一二三| 国产成人8x视频一区二区 | 日韩av中文字幕一区二区三区| bt欧美亚洲午夜电影天堂| 欧美精品一区二区不卡 | 国产成人av资源| 精品88久久久久88久久久| 午夜av一区二区三区| 欧美午夜在线一二页| 综合分类小说区另类春色亚洲小说欧美| 捆绑变态av一区二区三区| 欧美高清视频一二三区| 夜夜爽夜夜爽精品视频| 91年精品国产| ...中文天堂在线一区| 成人aaaa免费全部观看| 国产精品蜜臀av| av一区二区久久| 中文字幕在线一区免费| jiyouzz国产精品久久| 欧美极品美女视频| av亚洲精华国产精华精华| 中国色在线观看另类|