Changeset 15189 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/Extensions.cs
- Timestamp:
- 07/10/17 21:36:03 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Interpreter/Extensions.cs
r15017 r15189 25 25 26 26 public static Type GetStackEntryType(this StackTypes stackType) { 27 if (StackProperties.ContainsKey(stackType) && 28 StackProperties[stackType].PropertyType.IsGenericType) { 29 var genericTypeDef = StackProperties[stackType].PropertyType.GetGenericTypeDefinition(); 30 if (genericTypeDef == typeof(IPushStack<>)) 31 return genericTypeDef.GetGenericArguments()[0]; 32 } 33 27 34 return StackProperties.ContainsKey(stackType) 28 ? StackProperties[stackType].PropertyType.GetGenericArguments().Single() 35 ? StackProperties[stackType] 36 .PropertyType 37 .GetInterfaces() 38 .First(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IPushStack<>)) 39 .GetGenericArguments() 40 .First() 29 41 : null; 30 42 } 31 43 32 44 public static void PrintStacks(this IPushInterpreter interpreter) { 33 var stackTypesType = typeof(StackTypes); 34 35 foreach (StackTypes type in Enum.GetValues(stackTypesType)) { 36 if (!interpreter.Stacks.ContainsKey(type)) continue; 37 38 var stackName = Enum.GetName(stackTypesType, type); 39 var stack = interpreter.Stacks[type]; 45 foreach (var pair in interpreter.Stacks) { 46 var stackName = pair.Key.ToString(); 47 var stack = interpreter.Stacks[pair.Key]; 40 48 41 49 if (stack.IsEmpty || !stack.IsEnabled) continue; 42 50 43 var stackString = string.Join(" ", interpreter.StringifyStack( type).Reverse());51 var stackString = string.Join(" ", interpreter.StringifyStack(pair.Key).Reverse()); 44 52 Console.WriteLine("--------- {0} ---------\n{1}\n", stackName, stackString); 45 53 }
Note: See TracChangeset
for help on using the changeset viewer.