internal Enumerator(MultiValueDictionary <TKey, TValue> multiValueDictionary)
 {
     this._multiValueDictionary = multiValueDictionary;
     this._version    = multiValueDictionary._version;
     this._enumerator = multiValueDictionary._dictionary.GetEnumerator();
     this._state      = EnumerationState.BeforeFirst;
     this.Current     = default;
 }
Example #2
0
 private string GenerateNamespace(EnumerationState state, string dirname)
 {
     dirname = fs.GetFileName(dirname)
               .Replace('-', '_')
               .Replace('.', '_');
     return(string.Format(
                state.Namespace.Length > 0 ? "{0}.{1}" : "{1}",
                state.Namespace,
                dirname));
 }
        /// <summary>
        /// Throws exception if <see cref="IsDisposed"/> is true or <see cref="EnumerationState"/> is not equals <see cref="DataSourceEnumerationState.Enumerable"/>.
        /// </summary>
        protected void EnsureEnumerate()
        {
            if (IsDisposed)
            {
                throw new ObjectDisposedException("The data source has been disposed and can not be enumerated again");
            }

            if (!EnumerationState.HasFlag(DataSourceEnumerationState.Enumerable))
            {
                throw new InvalidOperationException("The data source has been already enumerated");
            }
        }
Example #4
0
 public void ProcessDirectoryFiles(EnumerationState state)
 {
     foreach (var file in fs.GetFiles(state.DirectoryName, "*.py", SearchOption.TopDirectoryOnly))
     {
         var xlator = new Translator(
             state.Namespace,
             fs.GetFileNameWithoutExtension(file),
             new FileSystem(),
             new ConsoleLogger());
         xlator.TranslateFile(file, file + ".cs");
     }
 }
Example #5
0
 public void ProcessDirectoryFiles(EnumerationState state)
 {
     foreach (var file in Directory.GetFiles(state.DirectoryName, "*.py", SearchOption.TopDirectoryOnly))
     {
         var xlator = new Translator(
             state.Namespace,
             Path.GetFileNameWithoutExtension(file),
             new FileSystem(),
             new ConsoleLogger());
         xlator.TranslateFile(file, file + ".cs");
     }
 }
        public void SkipThisNode()
        {
            switch (myState)
            {
            case EnumerationState.EnumerateThis:
                myState = EnumerationState.StopNextTime;
                break;

            case EnumerationState.EnumerateDescendants:
                myState = myCurrent == myRoot
            ? EnumerationState.StopNextTime
            : EnumerationState.EnumerateNextSibling;
                break;
            }
        }
        public bool MoveNext()
        {
            var treeNode = myCurrent;

            if (treeNode == null)
            {
                return(false);
            }

            switch (myState)
            {
            case EnumerationState.EnumerateThis:
                myState = (treeNode.FirstChild != null)
            ? EnumerationState.EnumerateDescendants
            : EnumerationState.StopNextTime;
                return(true);

            case EnumerationState.EnumerateDescendants:
                var firstChild = (TreeElement)treeNode.FirstChild;
                if (firstChild != null)
                {
                    myCurrent = firstChild;
                    return(true);
                }

                goto case EnumerationState.EnumerateNextSibling;

            case EnumerationState.EnumerateNextSibling:
                var nextSibling = treeNode.nextSibling;
                if (nextSibling != null)
                {
                    myCurrent = nextSibling;
                    myState   = EnumerationState.EnumerateDescendants;
                    return(true);
                }

                break;

            case EnumerationState.StopNextTime:
                return(false);
            }

            while (true)
            {
                myCurrent = treeNode.parent;
                treeNode  = myCurrent;

                if (treeNode == myRoot | treeNode == null) // yes, |
                {
                    return(false);
                }

                var nextSibling = treeNode.nextSibling;
                if (nextSibling != null)
                {
                    myCurrent = nextSibling;
                    // FIX: This line is missing in the SDK version
                    myState = EnumerationState.EnumerateDescendants;
                    return(true);
                }
            }
        }
 internal FixedThisAndDescendantsEnumerator([CanBeNull] ITreeNode root)
 {
     myRoot    = (TreeElement)root;
     myCurrent = (TreeElement)root;
     myState   = EnumerationState.EnumerateThis;
 }
Example #9
0
 private static string GenerateNamespace(EnumerationState state, string dirname)
 {
     dirname = Path.GetFileName(dirname)
         .Replace('-', '_')
         .Replace('.', '_');
     return string.Format(
         state.Namespace.Length > 0 ? "{0}.{1}" : "{1}",
         state.Namespace,
         dirname);
 }