コード例 #1
0
        public void AddRange(CodeSwitchOption[] value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            for (int i = 0; i < value.Length; i++)
            {
                Add(value[i]);
            }
        }
コード例 #2
0
        public CodeSwitchStatement(CodeExpression target, CodeSwitchOption[] options, params CodeStatement[] defaultStatements)
        {
            _target = target;
            _options = new CodeSwitchOptionCollection(OptionsChanged, options);

            foreach (CodeSwitchOption option in options)
            {
                option.SetTarget(_target);
            }

            _defaultStatements = base.FalseStatements;
            _defaultStatements.AddRange(defaultStatements);
            Refresh();
        }
コード例 #3
0
        private void Refresh()
        {
            int optionCount = _options.Count;
            CodeSwitchOption firstOption = (optionCount > 0
                                                ? _options[0]
                                                : null);

            if (_firstOption != firstOption)
            {
                if (_firstOption != null)
                {
                    _firstOption.SetActualStmt(null);
                }

                _firstOption = firstOption;

                if (_firstOption != null)
                {
                    _firstOption.SetActualStmt(this);
                }
            }

            CodeStatementCollection defaultStatements = (optionCount > 1
                                                             ? ((CodeConditionStatement) _options[optionCount - 1]).FalseStatements
                                                             : base.FalseStatements);

            if (_defaultStatements != defaultStatements)
            {
                defaultStatements.Clear();

                if (_defaultStatements != null)
                {
                    defaultStatements.AddRange(_defaultStatements);
                    _defaultStatements.Clear();
                }

                _defaultStatements = defaultStatements;
            }

            CodeConditionStatement conditionStmt = this;

            foreach (CodeConditionStatement option in _options)
            {
                if (option != firstOption)
                {
                    conditionStmt.FalseStatements.Clear();
                    conditionStmt.FalseStatements.Add(option);
                    conditionStmt = option;
                }
            }

            if (conditionStmt == this)
            {
                base.Condition = new CodePrimitiveExpression(false);
            }
        }
コード例 #4
0
        private void OptionsChanged(CollectionChangeAction action, CodeSwitchOption option)
        {
            if (action == CollectionChangeAction.Add)
            {
                option.SetTarget(_target);
            }
            else if (action == CollectionChangeAction.Remove)
            {
                option.SetTarget(null);
            }

            Refresh();
        }
コード例 #5
0
 public bool Contains(CodeSwitchOption value)
 {
     return List.Contains(value);
 }
コード例 #6
0
 public int Add(CodeSwitchOption value)
 {
     return List.Add(value);
 }
コード例 #7
0
 public CodeSwitchOptionCollection(CodeSwitchOption[] value)
 {
     AddRange(value);
 }
コード例 #8
0
 public CodeSwitchOptionCollection(CollectionChanged changed, CodeSwitchOption[] value)
 {
     AddRange(value);
     _changed = changed;
 }
コード例 #9
0
 private void NotifyChanged(CollectionChangeAction action, CodeSwitchOption option)
 {
     if (_changed != null)
     {
         _changed(action, option);
     }
 }
コード例 #10
0
 public void Remove(CodeSwitchOption value)
 {
     List.Remove(value);
 }
コード例 #11
0
 public void Insert(int index, CodeSwitchOption value)
 {
     List.Insert(index, value);
 }
コード例 #12
0
 public int IndexOf(CodeSwitchOption value)
 {
     return List.IndexOf(value);
 }
コード例 #13
0
 public void CopyTo(CodeSwitchOption[] array, int index)
 {
     List.CopyTo(array, index);
 }