Esempio n. 1
0
        public void TestNamedCollection()
        {
            INamedList <int>       l1  = new NamedList <int>("l1", 11);
            INamedCollection <int> nc1 = new NamedCollection <int>("NamedCollection 1 ", l1);

            nc1.OnNameChanged += Nc1_OnNameChanged;
            l1.OnNameChanged  += Nc1_OnNameChanged;


            Console.WriteLine(nc1);
            Console.WriteLine(l1);

            l1.Name = "Named List #1";

            for (int i = 0; i < 11; i++)
            {
                nc1.Add(i);
            }

            nc1.Name = "NamedCollection 1";
            nc1.Name = "Collection 1, which is named.";

            Console.WriteLine(nc1);
            Console.WriteLine(l1);
        }
Esempio n. 2
0
 private void TypeToArguments(NamedCollection <IArgumentInstance> arguments, NamedCollection <IArgumentDeclaration> declarations, ILocalIdentifierScope identifiers, ArgumentSide side, Type type, FieldToInstance fields)
 {
     if (type == null)
     {
         return;
     }
     foreach (var field in type.GetRuntimeFields())
     {
         var argumentDecl = new ArgumentDeclaration {
             IsUnrolled   = field.GetCustomAttributes(typeof(ArgumentUnrolled)).Any(),
             IsAssignable = field.GetCustomAttributes(typeof(ArgumentAssignable)).Any(),
             Name         = field.Name,
             Type         = NetTypeToRebuildType(field.FieldType)
                            //Value = field.V
         };
         var argument = new ArgumentInstance {
             Argument = argumentDecl,
             Side     = side
         };
         declarations.Add(argumentDecl);
         identifiers.Add(argument);
         arguments.Add(argument);
         fields.Add(field, argument);
     }
 }
Esempio n. 3
0
        private static void LoadParameters(NamedCollection <Code.Parameter> parameters, Procedure procedure)
        {
            string parameterName;

            var procedureParameters = procedure.Parameters;

            foreach (var parameter in procedureParameters)
            {
                parameterName = provider.GetParameterName(parameter.Name);

                parameters.Add(
                    new Code.Parameter()
                {
                    Name          = parameterName.ToPascalCase(),
                    CamelCaseName = parameterName.ToCamelCase(),
                    SqlName       = parameter.Name,
                    DbType        = parameter.DbType,
                    Type          = MappingHelper.GetCommonTypeString(parameter.DbType.ToCommonType()),
                    EnumType      = DiscoverEnumType(parameter.DbType.ToCommonType(), parameterName),
                    Direction     = parameter.Direction,
                    Size          = parameter.Size,
                    Description   = parameter.Description
                });
            }
        }
        public void Initialize()
        {
            _list = new List <Person>(new Person[]
            {
                new Person()
                {
                    Name = "Unnamed",
                },
                new Customer()
                {
                    Name = "Customer#1",
                },
                new Employee()
                {
                    Name = "Employee#1",
                },
                new Employee()
                {
                    Name = "Employee#2",
                },
                new Customer()
                {
                    Name = "Customer#2",
                },
                new Customer()
                {
                    Name = "Customer#3",
                },
            });

            _customers = new NamedCollection <Customer>(_list, p => p.Name, item => item != null && item.GetType() == typeof(Customer));
            _employees = new NamedCollection <Employee>(_list, p => p.Name, item => item != null && item.GetType() == typeof(Employee));
        }
Esempio n. 5
0
        static void DeclareArguments(IFunctionDeclaration function, NamedCollection <IArgumentDeclaration> arguments, ICppScope scope, string kind)
        {
            if (arguments.IsEmpty())
            {
                return;
            }
            var typeName = GetFunctionTypeName(function.Name, kind);

            scope.Declaration.AddLine($"struct {typeName} {{");
            scope.WithDeclarationIndented(
                innerScope => {
                foreach (var argument in arguments)
                {
                    var argTypeName = GetArgumentTypeName(argument.Type);
                    var argName     = CppEscape(argument.Name);
                    if (argument.IsAssignable && kind != "Result")
                    {
                        innerScope.Declaration.AddLine($"{argTypeName}* {argName};");
                        if (arguments.Count == 1)
                        {
                            innerScope.Declaration.AddLine($"operator {argTypeName}() const {{ return *{argName}; }}");
                        }
                    }
                    else
                    {
                        innerScope.Declaration.AddLine($"{argTypeName} {argName};");
                        if (arguments.Count == 1)
                        {
                            innerScope.Declaration.AddLine($"operator {argTypeName}() const {{ return {argName}; }}");
                        }
                    }
                }
            });
            scope.Declaration.AddLine(line: "};");
        }
Esempio n. 6
0
            private IReadOnlyNamedCollection <DataEntityPropertyToken> CreateTokens(Type type)
            {
                var collection = new NamedCollection <DataEntityPropertyToken>(m => m.Property.Name);

                if (type == null || type == typeof(object) || Zongsoft.Common.TypeExtension.IsDictionary(type))
                {
                    foreach (var property in _entity.Properties)
                    {
                        collection.Add(new DataEntityPropertyToken(property, null));
                    }
                }
                else
                {
                    foreach (var property in _entity.Properties)
                    {
                        var member = this.FindMember(type, property.Name);

                        if (member != null)
                        {
                            collection.Add(new DataEntityPropertyToken(property, member));
                        }
                    }
                }

                return(collection);
            }
		public void Initialize()
		{
			_list = new List<Person>(new Person[]
			{
				new Person()
				{
					Name = "Unnamed",
				},
				new Customer()
				{
					Name = "Customer#1",
				},
				new Employee()
				{
					Name = "Employee#1",
				},
				new Employee()
				{
					Name = "Employee#2",
				},
				new Customer()
				{
					Name = "Customer#2",
				},
				new Customer()
				{
					Name = "Customer#3",
				},
			});

			_customers = new NamedCollection<Customer>(_list, p => p.Name, item => item != null && item.GetType() == typeof(Customer));
			_employees = new NamedCollection<Employee>(_list, p => p.Name, item => item != null && item.GetType() == typeof(Employee));
		}
Esempio n. 8
0
 private void InitCreateStoredProcedure(ISchema table, NamedCollection <Column> columns)
 {
     foreach (var column in columns)
     {
         checkedListBoxForCreate.Items.Add(column.Name, string.IsNullOrEmpty(column.Default));
     }
 }
Esempio n. 9
0
    /// <inheritdoc/>
    protected override void Execute()
    {
        Nodes  = new NamedCollection <CacheNode>();
        _feeds = _feedCache.GetAll();

        foreach (var feed in _feeds)
        {
            Add(GetFeedNode(feed));
        }

        foreach (var digest in _implementationStore.ListAll())
        {
            var node = GetImplementationNode(digest);
            if (node != null)
            {
                TotalSize += node.Size;
                Add(node);
            }
        }

        foreach (string path in _implementationStore.ListAllTemp())
        {
            Add(GetTempNode(path));
        }
    }
Esempio n. 10
0
        static string BuildArgumentValues(
            IFunctionInstance function,
            NamedCollection <IArgumentDeclaration> arguments,
            INamedExpressionTuple expressions,
            ICppScope scope,
            string kind)
        {
            if (arguments.IsEmpty())
            {
                return(string.Empty);
            }
            var name     = scope.MakeLocalName();
            var typeName = GetFunctionTypeName(function.Name, kind);

            scope.Runtime.AddLine($"{typeName} {name};");
            var argN = 0;

            foreach (var expression in expressions.Tuple)
            {
                var argument = arguments[argN];
                argN++;
                var value = Dynamic((dynamic)expression.Expression, scope);
                if (argument.IsAssignable)
                {
                    scope.Runtime.AddLine($"{name}.{CppEscape(argument.Name)} = &{value};");
                }
                else
                {
                    scope.Runtime.AddLine($"{name}.{CppEscape(argument.Name)} = {value};");
                }
            }
            return(name);
        }
Esempio n. 11
0
        public void ConstructorSetsStringComparerToOrdinalIgnoreCaseWhenNotSpecified()
        {
            var values = new[] { new Foo("bar") };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.StringComparer.Should().BeSameAs(StringComparer.OrdinalIgnoreCase);
        }
Esempio n. 12
0
        public void ConstructorSetsStringComparer()
        {
            var values = new[] { new Foo("bar") };

            var collection = new NamedCollection <Foo>(values, f => f.Name, StringComparer.InvariantCulture);

            collection.StringComparer.Should().BeSameAs(StringComparer.InvariantCulture);
        }
Esempio n. 13
0
        public void ConstructorSetsDefaultNameToDefaultWhenNotSpecified()
        {
            var values = new[] { new Foo("bar") };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.DefaultName.Should().Be("default");
        }
Esempio n. 14
0
 void AssertArguments(NamedCollection <IArgumentDeclaration> expected, NamedCollection <IArgumentDeclaration> actual, string name)
 {
     Assert.AreEqual(expected.Count, actual.Count, $"{name}Arguments.Count");
     for (var i = 0; i < expected.Count; i++)
     {
         AssertArgument(expected[i], actual[i], name: $"{name}Arguments[{i}]");
     }
 }
Esempio n. 15
0
        public void DefaultValuePropertyIsNullWhenNoValueHasADefaultName()
        {
            var values = new[] { new Foo("bar") };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.DefaultValue.Should().BeNull();
        }
Esempio n. 16
0
        /// <summary>
        /// Default constructor for ViewBase
        /// </summary>
        public ViewBase()
        {
            Inputs  = new NamedCollection <IInput>();
            Outputs = new NamedCollection <IOutput>();

            BackColor   = SystemColors.ControlLight;
            BorderStyle = BorderStyle.FixedSingle;
        }
Esempio n. 17
0
            // Fills in the ProcessStartInfo object that belongs to this node using the Variables collection.
            public ProcessStartInfo GetPsi(NamedCollection Variables)
            {
                ProcessStartInfo ret = this.Psi;

                ret.FileName  = this.BuildCommandString(Variables);
                ret.Arguments = this.BuildArgumentsString(Variables);

                return(ret);
            }
Esempio n. 18
0
        public void DefaultValuePropertyIsTheValueWithANameEqualToDefaultNameProperty()
        {
            var defaultFoo = new Foo("default");
            var values     = new[] { new Foo("bar"), defaultFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.DefaultValue.Should().BeSameAs(defaultFoo);
        }
Esempio n. 19
0
        public void NamedValuesPropertyContainsTheValuesWithANonDefaultName()
        {
            var barFoo = new Foo("bar");
            var bazFoo = new Foo("baz");
            var values = new[] { barFoo, bazFoo, new Foo("default") };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.NamedValues.Should().BeEquivalentTo(new[] { barFoo, bazFoo });
        }
Esempio n. 20
0
        public void ContainsMethodReturnsTrueWhenGivenADefaultNameAndThereIsADefaultValue(string name)
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.Contains(name).Should().Be(true);
        }
Esempio n. 21
0
        public static i32 Main(String[] args)
        {
            // Default argument values.
            // NB: these are strings ONLY, conversion to appropriate types is done ad hoc.
            var dic = new Dictionary <String, String> {
                ["target"]          = null,
                ["filename"]        = "makefile.xml",
                ["redirect"]        = "false",
                ["cancel-on-error"] = "true",
                ["var-str"]         = ""
            };

            if (args.Length == 1 && args[0].Equals("love"))
            {
                Program.WriteLine("Not war");
            }
            Program.ParseArguments(args, dic);

            String filename = dic["filename"];

            if (!File.Exists(filename))
            {
                return(Program.ExitMessage(1, "ERROR - file not found: {0}", filename));
            }
            String target = dic["target"];

            // Prepare XBOSS for Makefile type and its dependencies.
            Array <Node <String> > .RegisterType();

            NamedCollection.RegisterType();
            Makefile.RegisterType();

            // Parse the file
            Document d    = Document.FromFile(filename);
            var      file = (Makefile)d.Root;

            file.AddVariables(Program.ToNamedCollection(dic["var-str"]));

            if (String.IsNullOrWhiteSpace(target))
            {
                target = file.DefaultTarget;
                Program.WriteLine($"No target specified; defaulting to {target}");
            }             // if

            if (!file.Commands.ContainsKey(target))
            {
                return(Program.ExitMessage(2, "ERROR - command not found: {0}", target));
            }
            Program.CacheDirectory = Program.FindCacheDirectory();
            bool redirect = dic["redirect"].Equals("true");

            //bool cancel_on_error = dic["cancel-on-error"].Equals("true");

            (ProcessStartInfo, bool)[] res = file.MakeCommands(target);
Esempio n. 22
0
        public void ContainsMethodReturnsFalseWhenGivenANonDefaultNameThatIsNotFound()
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.Contains("qux").Should().Be(false);
        }
Esempio n. 23
0
        public void TryGetValueMethodRetrievesTheDefaultValueWhenGivenADefaultName(string name)
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.TryGetValue(name, out var value).Should().Be(true);
            value.Should().BeSameAs(defaultFoo);
        }
Esempio n. 24
0
        public void ContainsMethodReturnsTrueWhenGivenAMatchingName()
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            collection.Contains("bar").Should().Be(true);

            collection.Contains("baz").Should().Be(true);
        }
Esempio n. 25
0
        public void IndexerRetrievesTheDefaultValueWhenGivenADefaultName(string name)
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            var value = collection[name];

            value.Should().BeSameAs(defaultFoo);
        }
Esempio n. 26
0
        public void ContainsMethodReturnsFalseWhenGivenADefaultNameAndThereIsNoDefaultValue()
        {
            var barFoo = new Foo("bar");
            var bazFoo = new Foo("baz");
            var values = new[] { barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            foreach (var defaultName in new[] { "default", null, "" })
            {
                collection.Contains(defaultName).Should().Be(false);
            }
        }
Esempio n. 27
0
 private static void LoadEnumMembers(NamedCollection <EnumMember> members, Enumeration enumeration)
 {
     foreach (var enumerationMember in enumeration.Members)
     {
         members.Add(
             new EnumMember
         {
             Name        = enumerationMember.Name,
             Value       = enumerationMember.Value,
             Description = enumerationMember.Description
         });
     }
 }
Esempio n. 28
0
        private static void LoadResults(NamedCollection <Result> results, string modelName, Method method, StoredProcedure procedure)
        {
            Match matchResults = regexResults.Match(procedure.Definition);

            int length = matchResults.Groups["Name"].Captures.Count;

            if (length == 0 && method.MethodType == MethodType.ExecuteReader)
            {
                string typePostfix = regexGetList.IsMatch(method.Name) ? "Collection" : "Item";

                string modelNameWithSchema = GetModelForMethod(procedure.Schema, modelName);
                // TODO: Conflict Names.
                results.Add(
                    new Result
                {
                    Name              = modelName + typePostfix,
                    CommonType        = modelNameWithSchema + typePostfix,
                    Description       = string.Empty,
                    IsOutputParameter = false
                });
            }
            else
            {
                for (int i = 0; i < length; i++)
                {
                    results.Add(
                        new Result
                    {
                        Name              = MappingHelper.GetPascalCase(matchResults.Groups["Name"].Captures[i].Value),
                        CommonType        = matchResults.Groups["Type"].Captures[i].Value,
                        Description       = string.Empty,
                        IsOutputParameter = false
                    });
                }
            }

            foreach (var parameter in method.Parameters)
            {
                if (parameter.Direction != ParameterDirection.Input)
                {
                    results.Add(
                        new Result
                    {
                        Name              = parameter.Name,
                        CommonType        = parameter.Name == "ReturnResult" ? "ReturnResult" : MappingHelper.GetCommonTypeString(parameter.Type),
                        Description       = parameter.Description,
                        IsOutputParameter = true
                    });
                }
            }
        }
Esempio n. 29
0
        /// <summary>
        /// Creates <see cref="TrustNode"/> representations for all entries in a <see cref="TrustDB"/>.
        /// </summary>
        public static NamedCollection<TrustNode> ToNodes([NotNull] this TrustDB trustDB)
        {
            #region Sanity checks
            if (trustDB == null) throw new ArgumentNullException("trustDB");
            #endregion

            var nodes = new NamedCollection<TrustNode>();
            foreach (var key in trustDB.Keys)
            {
                foreach (var domain in key.Domains)
                    nodes.Add(new TrustNode(key.Fingerprint, domain));
            }
            return nodes;
        }
Esempio n. 30
0
        static INamedExpressionTuple AssignArguments(NamedCollection <IArgumentInstance> instances, INamedExpressionTuple arguments)
        {
            var result = new NamedExpressionTuple();
            var o      = arguments.Tuple.Count - instances.Count;

            foreach (var instance in instances)
            {
                // TODO: check that conversion exists
                result.Tuple.Add(arguments.Tuple[o]);
                arguments.Tuple.RemoveAt(o);
            }
            // TODO: check that enough arguments are given
            return(result);
        }
Esempio n. 31
0
        public void IndexerThrowsWhenGivenANonDefaultNameThatIsNotFound()
        {
            var defaultFoo = new Foo("default");
            var barFoo     = new Foo("bar");
            var bazFoo     = new Foo("baz");
            var values     = new[] { defaultFoo, barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            Action action = () => { var dummy = collection["qux"]; };

            action.Should().ThrowExactly <KeyNotFoundException>()
            .WithMessage("The given name was not present in the named collection: qux.");
        }
Esempio n. 32
0
        /// <inheritdoc/>
        protected override void Execute()
        {
            Nodes = new NamedCollection<CacheNode>();
            _feeds = _feedCache.GetAll();

            foreach (var feed in _feeds)
            {
                feed.Normalize(feed.Uri);
                Add(feed);
            }
            foreach (var digest in _store.ListAll()) Add(digest);
            foreach (string path in _store.ListAllTemp()) Add(path);

            State = TaskState.Complete;
        }
Esempio n. 33
0
        public void IndexerThrowsWhenGivenADefaultNameAndThereIsNoDefaultValue()
        {
            var barFoo = new Foo("bar");
            var bazFoo = new Foo("baz");
            var values = new[] { barFoo, bazFoo };

            var collection = new NamedCollection <Foo>(values, f => f.Name);

            foreach (var defaultName in new[] { "default", null, "" })
            {
                Action action = () => { var dummy = collection[defaultName]; };
                action.Should().ThrowExactly <KeyNotFoundException>()
                .WithMessage("The named collection does not have a default value.");
            }
        }
Esempio n. 34
0
        /// <summary>
        /// Adds a specific file to the <paramref name="files"/> list.
        /// </summary>
        /// <param name="files">The collection to add the file to.</param>
        /// <param name="type">The type-subdirectory the file belongs to.</param>
        /// <param name="name">The file name to be added to the list.</param>
        /// <param name="flagAsMod">Set to <c>true</c> when handling mod files to detect added and changed files.</param>
        private static void AddFileToList(NamedCollection<FileEntry> files, string type, string name, bool flagAsMod)
        {
            if (flagAsMod)
            {
                // Detect whether this is a new file or a replacement for an existing one
                if (files.Contains(name))
                {
                    var previousEntry = files[name];

                    // Only mark as modified if the pre-existing file isn't already a mod file itself
                    if (previousEntry.EntryType == FileEntryType.Normal)
                    {
                        files.Remove(previousEntry);
                        files.Add(new FileEntry(type, name, FileEntryType.Modified));
                    }
                }
                else files.Add(new FileEntry(type, name, FileEntryType.Added));
            }
            else
            {
                // Prevent duplicate entries
                if (!files.Contains(name)) files.Add(new FileEntry(type, name));
            }
        }
Esempio n. 35
0
        /// <summary>
        /// Recursively finds all files in <paramref name="directory"/> ending with <paramref name="extension"/> and adds them to the <paramref name="files"/> list.
        /// </summary>
        /// <param name="files">The collection to add the found files to.</param>
        /// <param name="type">The type-subdirectory the files belong to.</param>
        /// <param name="extension">The file extension to look for.</param>
        /// <param name="directory">The directory to look in.</param>
        /// <param name="prefix">A prefix to add before the file name in the list (used to indicate current sub-directory).</param>
        /// <param name="flagAsMod">Set to <c>true</c> when handling mod files to detect added and changed files.</param>
        private static void AddDirectoryToList(NamedCollection<FileEntry> files, string type, string extension, DirectoryInfo directory, string prefix, bool flagAsMod)
        {
            // Add the files in this directory to the list
            foreach (FileInfo file in directory.GetFiles("*" + extension))
                AddFileToList(files, type, prefix + file.Name, flagAsMod);

            // Recursively call this method for all sub-directories
            foreach (DirectoryInfo subDir in directory.GetDirectories()
                // Don't add dot directories (e.g. .svn)
                .Where(subDir => !subDir.Name.StartsWith(".")))
                AddDirectoryToList(files, type, extension, subDir, prefix + subDir.Name + Path.DirectorySeparatorChar, flagAsMod);
        }
Esempio n. 36
0
 /// <summary>
 /// Finds all files in <paramref name="archiveData"/> ending with <paramref name="extension"/> and adds them to the <paramref name="files"/> collection
 /// </summary>
 /// <param name="files">The collection to add the found files to.</param>
 /// <param name="extension">The file extension to look for.</param>
 /// <param name="type">The type-subdirectory to look in.</param>
 /// <param name="archiveData">The archive data list to look in.</param>
 /// <param name="flagAsMod">Set to <c>true</c> when handling mod files to detect added and changed files.</param>
 private static void AddArchivesToList(NamedCollection<FileEntry> files, string type, string extension, IEnumerable<KeyValuePair<string, ContentArchiveEntry>> archiveData, bool flagAsMod)
 {
     foreach (var pair in archiveData
         .Where(pair => pair.Key.StartsWith(type, StringComparison.OrdinalIgnoreCase) &&
                        pair.Key.EndsWith(extension, StringComparison.OrdinalIgnoreCase)))
     {
         // Cut away the type part of the path
         AddFileToList(files, type, pair.Key.Substring(type.Length + 1), flagAsMod);
     }
 }
Esempio n. 37
0
        /// <summary>
        /// Gets a list of all files of a certain type
        /// </summary>
        /// <param name="type">The type of files you want (e.g. Textures, Sounds, ...)</param>
        /// <param name="extension">The file extension to so search for</param>
        /// <returns>An collection of strings with file IDs</returns>
        public static NamedCollection<FileEntry> GetFileList([NotNull, Localizable(false)] string type, [NotNull, Localizable(false)] string extension)
        {
            #region Sanity checks
            if (string.IsNullOrEmpty(type)) throw new ArgumentNullException(nameof(type));
            if (string.IsNullOrEmpty(extension)) throw new ArgumentNullException(nameof(extension));
            #endregion

            type = FileUtils.UnifySlashes(type);

            // Create an alphabetical list of files without duplicates
            var files = new NamedCollection<FileEntry>();

            #region Find all base files
            // Find real files
            if (Directory.Exists(Path.Combine(BaseDir.FullName, type)))
            {
                AddDirectoryToList(files, type, extension,
                    new DirectoryInfo(Path.Combine(BaseDir.FullName, type)), "", false);
            }

            // Find files in archives
            AddArchivesToList(files, type, extension, _baseArchiveEntries, false);
            #endregion

            if (ModDir != null)
            {
                #region Find all mod files
                // Find real files
                if (Directory.Exists(Path.Combine(ModDir.FullName, type)))
                {
                    AddDirectoryToList(files, type, extension,
                        new DirectoryInfo(Path.Combine(ModDir.FullName, type)), "", true);
                }

                // Find files in archives
                AddArchivesToList(files, type, extension, _modArchiveEntries, true);
                #endregion
            }

            return files;
        }