Пример #1
0
        internal LlGenerator(GMacMacro baseMacro)
            : base(baseMacro.ChildScope, new GMacValueAccessProcessor())
        {
            BaseMacro = baseMacro;

            DataTable = new LlDataTable(GMacRootAst);
        }
Пример #2
0
        /// <summary>
        /// Create a copy of this table with all items marked for delete being removed
        /// </summary>
        /// <returns></returns>
        public LlDataTable Duplicate()
        {
            var llDataTable =
                new LlDataTable(GMacRootAst)
            {
                _llVarEvaluationOrder = _llVarEvaluationOrder,
                _llVarIndex           = _llVarIndex
            };

            foreach (var llDataItem in
                     _llDictionary.Where(pair => !pair.Value.IsDeleted).Select(pair => pair.Value.Duplicate())
                     )
            {
                llDataTable._llDictionary.Add(llDataItem.ItemName, llDataItem);

                if (llDataItem.AssociatedValueAccess != null)
                {
                    llDataTable._hlDictionary.Add(llDataItem.HlItemName, llDataItem);
                }
            }

            return(llDataTable);
        }