コード例 #1
0
        public ModuleInterpreter Clone()
        {
            var interpreter = new ModuleInterpreter(_scene, _modules, _parent, Report)
            {
                InputState     = InputState.Clone(),
                OutputState    = OutputState.Clone(),
                Position       = Position,
                Running        = Running,
                UsedCharacters = new HashSet <Character>(UsedCharacters),
                UsedPoses      = new HashSet <Pose>(UsedPoses),
                UsedVariables  = new HashSet <Variable>(UsedVariables)
            };

            return(interpreter);
        }
コード例 #2
0
        public static async Task <Module> FromScene(Scene analysisTarget, ConcurrentDictionary <Scene, Module> modules, ProjectReport report)
        {
            Module module = new Module();

            module.States = new ReadOnlyDictionary <ModuleState, HashSet <ModuleState> >(module._states);
            var startInterpreter = new ModuleInterpreter(analysisTarget, modules, module, report);

            module.AddInterpreter(startInterpreter);

            await Task.WhenAll(module._interpreterTasks);

            module.ReduceStates();

            return(module);
        }
コード例 #3
0
 public void AddInterpreter(ModuleInterpreter interpreter)
 {
     _interpreters.Add(interpreter);
     _interpreterTasks.Add(Task.Run(async() => await interpreter.Interpret()));
 }