Пример #1
0
        /// <summary>
        /// Register created program points with given handler
        /// </summary>
        /// <param name="programPoints">Created program points</param>
        /// <param name="onPointCreated">Registering handler</param>
        private static void registerCreatedPoints(ProgramPointBase[] programPoints, OnPointCreated onPointCreated)
        {
            var pointSet = new HashSet <ProgramPointBase>(programPoints);

            foreach (var point in pointSet)
            {
                onPointCreated(point);
            }
        }
Пример #2
0
        /// <summary>
        /// Expand given statement into program point chain
        /// </summary>
        /// <param name="statement">Expanded statement</param>
        /// <param name="onPointCreated">Handler called for every created program point</param>
        /// <returns>Created program poitn chain</returns>
        public static ProgramPointBase[] ExpandStatement(LangElement statement,
                                                         OnPointCreated onPointCreated)
        {
            var expander = new ElementExpander();

            expander.Expand(statement);

            var expandedChain = expander.createPointsChain().ToArray();

            registerCreatedPoints(expandedChain, onPointCreated);

            return(expandedChain);
        }