/// <summary> /// 插入工艺资源 /// </summary> public static void InsertResourceUse( System.Data.IDbConnection conn , System.Data.IDbTransaction tran , List <EACT_CUPRUM> CupRumList , List <TypicalSeparateResourceUseEx> tsrus ) { foreach (var item in CupRumList) { var tsru = tsrus.FirstOrDefault(u => u.TMPT_PARTID == item.TypicalPartID && u.MPT_PARTID == item.MouldPart_PartID); if (tsru == null) { throw new Exception(string.Format("插入工艺资源失败 典型工件:{0} 工件ID:{1}", item.TypicalPartID, item.MouldPart_PartID)); } var model = new ResourceUse(); model.operationID = tsru.MPT_ID; model.resourceID = tsru.resourceID; model.priorityID = tsru.priorityID; model.useUnit = tsru.useUnit; var sql = new StringBuilder(); sql.AppendLine(" insert into ResourceUse(operationID,resourceID,priorityID,useUnit)"); sql.AppendLine("values(@operationID,@resourceID,@priorityID,@useUnit)"); conn.Execute(sql.ToString(), model, tran); } }
public virtual Statement VisitResourceUse(ResourceUse resourceUse, Class scope) { if (resourceUse == null) { return(null); } Class savedScope = this.scope; this.scope = scope; LocalDeclarationsStatement locDecs = resourceUse.ResourceAcquisition as LocalDeclarationsStatement; if (locDecs != null) { locDecs.InitOnly = true; resourceUse.ResourceAcquisition = this.VisitLocalDeclarationsStatement(locDecs); } resourceUse.Body = this.VisitBlock(resourceUse.Body); this.scope = savedScope; return(resourceUse); }
public virtual Statement VisitResourceUse(ResourceUse resourceUse, ResourceUse changes, ResourceUse deletions, ResourceUse insertions){ this.UpdateSourceContext(resourceUse, changes); if (resourceUse == null) return changes; if (changes != null){ if (deletions == null || insertions == null) Debug.Assert(false); else{ } }else if (deletions != null) return null; return resourceUse; }
public virtual Differences VisitResourceUse(ResourceUse resourceUse1, ResourceUse resourceUse2){ Differences differences = new Differences(resourceUse1, resourceUse2); if (resourceUse1 == null || resourceUse2 == null){ if (resourceUse1 != resourceUse2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++; return differences; } ResourceUse changes = (ResourceUse)resourceUse2.Clone(); ResourceUse deletions = (ResourceUse)resourceUse2.Clone(); ResourceUse insertions = (ResourceUse)resourceUse2.Clone(); Differences diff = this.VisitBlock(resourceUse1.Body, resourceUse2.Body); if (diff == null){Debug.Assert(false); return differences;} changes.Body = diff.Changes as Block; deletions.Body = diff.Deletions as Block; insertions.Body = diff.Insertions as Block; Debug.Assert(diff.Changes == changes.Body && diff.Deletions == deletions.Body && diff.Insertions == insertions.Body); differences.NumberOfDifferences += diff.NumberOfDifferences; differences.NumberOfSimilarities += diff.NumberOfSimilarities; diff = this.VisitStatement(resourceUse1.ResourceAcquisition, resourceUse2.ResourceAcquisition); if (diff == null){Debug.Assert(false); return differences;} changes.ResourceAcquisition = diff.Changes as Statement; deletions.ResourceAcquisition = diff.Deletions as Statement; insertions.ResourceAcquisition = diff.Insertions as Statement; Debug.Assert(diff.Changes == changes.ResourceAcquisition && diff.Deletions == deletions.ResourceAcquisition && diff.Insertions == insertions.ResourceAcquisition); differences.NumberOfDifferences += diff.NumberOfDifferences; differences.NumberOfSimilarities += diff.NumberOfSimilarities; if (differences.NumberOfDifferences == 0){ differences.Changes = null; differences.Deletions = null; differences.Insertions = null; }else{ differences.Changes = changes; differences.Deletions = deletions; differences.Insertions = insertions; } return differences; }
public virtual Statement VisitResourceUse(ResourceUse resourceUse){ if (resourceUse == null) return null; resourceUse.ResourceAcquisition = (Statement)this.Visit(resourceUse.ResourceAcquisition); resourceUse.Body = this.VisitBlock(resourceUse.Body); return resourceUse; }
public override Statement VisitResourceUse(ResourceUse resourceUse) { if (resourceUse == null) return null; this.requireInitializer = true; resourceUse.ResourceAcquisition = (Statement)this.Visit(resourceUse.ResourceAcquisition); this.requireInitializer = false; TypeNode t; ExpressionStatement estat = resourceUse.ResourceAcquisition as ExpressionStatement; if (estat != null) { if (estat.Expression == null) return null; t = TypeNode.StripModifier(estat.Expression.Type, SystemTypes.NonNullType); } else t = TypeNode.StripModifier(((LocalDeclarationsStatement)resourceUse.ResourceAcquisition).Type, SystemTypes.NonNullType); if (t != null && !this.typeSystem.ImplicitCoercionFromTo(t, SystemTypes.IDisposable, this.TypeViewer)) this.HandleError(resourceUse.ResourceAcquisition, Error.NoImplicitCoercion, this.GetTypeName(t), this.GetTypeName(SystemTypes.IDisposable)); bool savedInsideTryBlock = this.insideTryBlock; this.insideTryBlock = true; resourceUse.Body = this.VisitBlock(resourceUse.Body); this.insideTryBlock = savedInsideTryBlock; return resourceUse; }
public override Statement VisitResourceUse(ResourceUse resourceUse) { return(resourceUse); }
public override Statement VisitResourceUse(ResourceUse resourceUse){ if (resourceUse == null) return null; LocalDeclarationsStatement locDecls = resourceUse.ResourceAcquisition as LocalDeclarationsStatement; LocalDeclarationList locDecList = locDecls == null ? null : locDecls.Declarations; int n = locDecList == null ? 0 : locDecList.Count; resourceUse.ResourceAcquisition = (Statement)this.Visit(resourceUse.ResourceAcquisition); resourceUse.Body = this.VisitBlock(resourceUse.Body); return resourceUse; }
public virtual void VisitResourceUse(ResourceUse resourceUse) { if (resourceUse == null) return; this.Visit(resourceUse.ResourceAcquisition); this.VisitBlock(resourceUse.Body); }
public override Statement VisitResourceUse(ResourceUse resourceUse) { if (resourceUse == null) return null; return base.VisitResourceUse((ResourceUse)resourceUse.Clone()); }
public virtual Statement VisitResourceUse(ResourceUse resourceUse1, ResourceUse resourceUse2) { if (resourceUse1 == null) return null; if (resourceUse2 == null) { resourceUse1.ResourceAcquisition = (Statement)this.Visit(resourceUse1.ResourceAcquisition, null); resourceUse1.Body = this.VisitBlock(resourceUse1.Body, null); } else { resourceUse1.ResourceAcquisition = (Statement)this.Visit(resourceUse1.ResourceAcquisition, resourceUse2.ResourceAcquisition); resourceUse1.Body = this.VisitBlock(resourceUse1.Body, resourceUse2.Body); } return resourceUse1; }
public virtual Statement VisitResourceUse(ResourceUse resourceUse, Class scope) { if (resourceUse == null) return null; Class savedScope = this.scope; this.scope = scope; LocalDeclarationsStatement locDecs = resourceUse.ResourceAcquisition as LocalDeclarationsStatement; if (locDecs != null){ locDecs.InitOnly = true; resourceUse.ResourceAcquisition = this.VisitLocalDeclarationsStatement(locDecs); } resourceUse.Body = this.VisitBlock(resourceUse.Body); this.scope = savedScope; return resourceUse; }
public override Statement VisitResourceUse(ResourceUse resourceUse){ return resourceUse; }
public override Statement VisitResourceUse(ResourceUse resourceUse){ if (resourceUse == null) return null; StatementList resourceReleasers = new StatementList(); ExpressionStatement eStat = resourceUse.ResourceAcquisition as ExpressionStatement; if (eStat != null){ if (eStat.Expression == null) return null; TypeNode t = eStat.Expression.Type; if (t == null) return null; Expression temp = new Local(t); BlockScope tempScope = resourceUse.ScopeForTemporaryVariable; if (tempScope.CapturedForClosure) { Identifier id = Identifier.For("usingTemp:"+resourceUse.GetHashCode()); Field f = new Field(tempScope, null, FieldFlags.CompilerControlled, id, t, null); temp = new MemberBinding(new ImplicitThis(), f); } MethodCall releaseCall = null; if (t.IsValueType && !t.ImplementsExplicitly(Runtime.IDisposableDispose)) { Method dispose = t.GetImplementingMethod(Runtime.IDisposableDispose, true); if (dispose != null) releaseCall = new MethodCall(new MemberBinding(new UnaryExpression(temp, NodeType.AddressOf), dispose), null, NodeType.Call); } AssignmentStatement aStat = new AssignmentStatement(temp, eStat.Expression); aStat.SourceContext = eStat.SourceContext; resourceUse.ResourceAcquisition = aStat; Block skipRelease = null; if (!t.IsValueType) { skipRelease = new Block(); resourceReleasers.Add(new Branch(new BinaryExpression(temp, Literal.Null, NodeType.Eq), skipRelease)); } if (releaseCall == null) { Expression ob = temp; if (t.IsValueType) ob = new BinaryExpression(temp, new MemberBinding(null, t), NodeType.Box); releaseCall = new MethodCall(new MemberBinding(ob, Runtime.IDisposableDispose), null, NodeType.Callvirt); } releaseCall.Type = SystemTypes.Void; resourceReleasers.Add(new ExpressionStatement(releaseCall)); if (skipRelease != null) resourceReleasers.Add(skipRelease); }else{ StatementList resourceAcquirers = new StatementList(); LocalDeclarationsStatement locDecs = (LocalDeclarationsStatement)resourceUse.ResourceAcquisition; LocalDeclarationList locDecList = locDecs.Declarations; for (int i = 0, n = locDecList == null ? 0 : locDecList.Count; i < n; i++){ LocalDeclaration locDec = locDecList[i]; if (locDec == null) continue; Field f = locDec.Field; if (f == null || f.Initializer == null) continue; TypeNode t = f.Type; if (t == null || !this.GetTypeView(TypeNode.StripModifiers(t)).IsAssignableTo(SystemTypes.IDisposable)) continue; f.Flags &= ~FieldFlags.InitOnly; AssignmentStatement aStat = new AssignmentStatement(new MemberBinding(new ImplicitThis(), f), locDec.InitialValue); aStat.SourceContext = locDec.InitialValue.SourceContext; resourceAcquirers.Add(aStat); Local temp = new Local(t); resourceReleasers.Add(new AssignmentStatement(temp, new MemberBinding(new ImplicitThis(), f))); StatementList stats = new StatementList(1); MethodCall releaseCall = new MethodCall(new MemberBinding(temp, Runtime.IDisposableDispose), null, NodeType.Callvirt); releaseCall.Type = SystemTypes.Void; stats.Add(new ExpressionStatement(releaseCall)); if (t.IsValueType){ Method dispose = t.GetImplementingMethod(Runtime.IDisposableDispose, true); if (!t.ImplementsExplicitly(Runtime.IDisposableDispose) && dispose != null) { ((MemberBinding)releaseCall.Callee).TargetObject = new UnaryExpression(temp, NodeType.AddressOf); ((MemberBinding)releaseCall.Callee).BoundMember = dispose; releaseCall.NodeType = NodeType.Call; } else ((MemberBinding)releaseCall.Callee).TargetObject = this.typeSystem.ExplicitCoercion(temp, SystemTypes.IDisposable, this.TypeViewer); resourceReleasers.Add(new Block(stats)); }else resourceReleasers.Add(new If(new BinaryExpression(temp, Literal.Null, NodeType.Ne), new Block(stats), null)); } resourceUse.ResourceAcquisition = new Block(resourceAcquirers); } StatementList statements = new StatementList(2); statements.Add(resourceUse.ResourceAcquisition); statements.Add(new Try(resourceUse.Body, null, null, null, new Finally(new Block(resourceReleasers)))); return this.VisitBlock(new Block(statements)); }
public override Statement VisitResourceUse(ResourceUse resourceUse){ if (resourceUse == null) return null; Scope savedScope = this.scope; Scope scope = this.scope = resourceUse.ScopeForTemporaryVariable = new BlockScope(savedScope, resourceUse.Body); this.AddToAllScopes(this.scope); Declarer declarer = new Declarer(this.ErrorHandler); declarer.VisitResourceUse(resourceUse, scope); resourceUse.ResourceAcquisition = (Statement)this.Visit(resourceUse.ResourceAcquisition); resourceUse.Body = this.VisitBlock(resourceUse.Body); this.scope = savedScope; return resourceUse; }