Пример #1
0
 /// <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);
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
 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;
 }
Пример #4
0
    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;
    }
Пример #5
0
 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;
 }
Пример #6
0
 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;
 }
Пример #7
0
 public override Statement VisitResourceUse(ResourceUse resourceUse)
 {
     return(resourceUse);
 }
Пример #8
0
 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;
 }       
Пример #9
0
 public virtual void VisitResourceUse(ResourceUse resourceUse)
 {
   if (resourceUse == null) return;
   this.Visit(resourceUse.ResourceAcquisition);
   this.VisitBlock(resourceUse.Body);
 }
Пример #10
0
 public override Statement VisitResourceUse(ResourceUse resourceUse)
 {
     if (resourceUse == null) return null;
     return base.VisitResourceUse((ResourceUse)resourceUse.Clone());
 }
Пример #11
0
 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;
 }
Пример #12
0
 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;
 }
Пример #13
0
 public override Statement VisitResourceUse(ResourceUse resourceUse){
   return resourceUse;
 }
Пример #14
0
 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));
 }
Пример #15
0
 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;
 }