Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Scheduling.JSSP/CopyVariableFromSubScope.cs @ 106

Last change on this file since 106 was 77, checked in by swagner, 17 years ago

Fixed ticket #67

  • adapted accessing of variables in operators due to changes of variable lookup and the new name aliasing mechanism (actual/formal name translations should not be done directly anymore; instead the new method Scope.TranslateName should be used)
File size: 2.2 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.Text;
25using HeuristicLab.Core;
26using HeuristicLab.Data;
27
28namespace HeuristicLab.Scheduling.JSSP {
29  public class CopyVariableFromSubScope : OperatorBase {
30    public override string Description {
31      get { return @"TODO\r\nOperator description still missing ..."; }
32    }
33
34    public CopyVariableFromSubScope()
35      : base() {
36      AddVariableInfo(new VariableInfo("Variable", "Variable to move.", typeof(IItem), VariableKind.In | VariableKind.New | VariableKind.Out));
37      AddVariableInfo(new VariableInfo("SubScope", "Index of the subscope.", typeof(IntData), VariableKind.In));
38      GetVariableInfo("SubScope").Local = true;
39      AddVariable(new Variable("SubScope", new IntData(0)));
40    }
41
42    public override IOperation Apply(IScope scope) {
43      int scopeIndex = GetVariableValue<IntData>("SubScope", scope, false).Data;
44      if(scope.SubScopes.Count >= scopeIndex + 1) {
45        IScope s = scope.SubScopes[scopeIndex];
46        IItem var = GetVariableValue<IItem>("Variable", s, false);
47        if(var != null) {
48          if(scope.GetVariable(scope.TranslateName("Variable")) != null) {
49            scope.RemoveVariable(scope.TranslateName("Variable"));
50          }
51          scope.AddVariable(new Variable(scope.TranslateName("Variable"), var));
52          return null;
53        }
54      }
55      return null;
56    }
57  }
58}
Note: See TracBrowser for help on using the repository browser.