2 using System.Collections.Generic;
8 protected internal IDictionary<int, InputProgram> programs;
9 protected internal IDictionary<int, OptionDescriptor> options;
13 programs =
new Dictionary<int, InputProgram>();
14 options =
new Dictionary<int, OptionDescriptor>();
19 int last_index = options.Count;
20 int current_value = last_index;
21 options[last_index++] = o;
27 int last_index = programs.Count;
28 int current_value = last_index;
29 programs[last_index++] = program;
33 protected internal virtual IList<OptionDescriptor> CollectOptions(IList<int> option_index)
35 IList<OptionDescriptor> input_option =
new List<OptionDescriptor>();
37 if (option_index ==
null)
38 foreach (KeyValuePair<int, OptionDescriptor> option
in options)
39 input_option.Add(options[option.Key]);
41 foreach (
int index
in option_index)
42 input_option.Add(options[index]);
46 protected internal virtual IList<InputProgram> CollectPrograms(IList<int> program_index)
48 IList<InputProgram> input_programs =
new List<InputProgram>();
50 if (program_index ==
null)
51 foreach (KeyValuePair<int, InputProgram> program
in programs)
52 input_programs.Add(programs[program.Key]);
54 foreach (
int index
in program_index)
55 input_programs.Add(programs[index]);
56 return input_programs;
59 public virtual InputProgram GetInputProgram(
int key) => programs[key];
61 public virtual OptionDescriptor GetOptionDescriptor(
int key) => options[key];
63 public virtual void RemoveAll()
69 public virtual void RemoveOption(
int option_id) => options.Remove(option_id);
74 foreach (KeyValuePair<int, OptionDescriptor> entry
in options)
75 if (entry.Value.Equals(o))
77 options.Remove(entry.Key);
86 foreach (KeyValuePair<int, InputProgram> entry
in programs)
87 if (entry.Value.Equals(p))
89 programs.Remove(entry.Key);
95 public virtual void RemoveProgram(
int program_id) => programs.Remove(program_id);
97 public virtual void StartAsync(
ICallback c) => StartAsync(c, (IList<int>)
null, (IList<int>)
null);
99 public virtual void StartAsync(
ICallback c, IList<int> program_index, IList<int> option_index) { }
101 public virtual Output StartSync() => StartSync((IList<int>)
null, (IList<int>)
null);
103 public virtual Output StartSync(IList<int> program_index, IList<int> option_index) =>
null;