├── .config
└── dotnet-tools.json
├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── dependabot.yml
└── workflows
│ ├── codeql-analysis.yml
│ ├── dependabot-reviewer.yml
│ ├── docsfx.yml
│ ├── dotnet-publish.yml
│ └── dotnet-test.yml
├── .gitignore
├── .husky
├── commit-msg
├── csxScripts
│ └── commit-lint.csx
├── pre-commit
└── task-runner.json
├── .versionize
├── BigBook.Benchmarks
├── BigBook.Benchmarks.csproj
├── GlobalSuppressions.cs
├── Program.cs
└── Tests
│ ├── ActivatorCreateInstanceTests.cs
│ ├── ConcurrentDictionarySetTests.cs
│ ├── ConcurrentDictionaryTests.cs
│ ├── DynamoTests.cs
│ ├── GetPropertyTests.cs
│ ├── GetTypeInfoTests.cs
│ ├── IEnumerableTests.cs
│ ├── IsTests.cs
│ ├── ListMappingTests.cs
│ ├── NullEqualityTests.cs
│ ├── StringFormatVsStringBuilder.cs
│ ├── TestClasses
│ ├── ListMapping.cs
│ └── NewDynamo.cs
│ ├── ToRedux.cs
│ ├── TrieVsContains.cs
│ └── ValueTypeCreation.cs
├── BigBook.Example
├── BigBook.Example.csproj
├── Example1.cs
├── Example2.cs
├── Example3.cs
└── Program.cs
├── BigBook.Tests
├── BTree.cs
├── Bag.cs
├── BaseClasses
│ └── TestBaseClass.cs
├── BigBook.Tests.csproj
├── BloomFilterTests.cs
├── Comparison
│ ├── GenericComparer.cs
│ ├── GenericEqualityComparer.cs
│ ├── SimpleComparer.cs
│ └── SimpleEqualityComparer.cs
├── Data
│ ├── Testing
│ │ └── Test.txt
│ └── Web
│ │ ├── HanselmanSite.html
│ │ ├── RandomCSS.css
│ │ └── RandomJS.js
├── DateSpan.cs
├── Dynamo.cs
├── ExtensionMethods
│ ├── ArrayExtensions.cs
│ ├── ConcurrentBagExtensions.cs
│ ├── ConcurrentDictionaryExtensions.cs
│ ├── DateTimeExtensions.cs
│ ├── ExceptionExtensions.cs
│ ├── GenericObjectExtensions.cs
│ ├── ICollectionExtensions.cs
│ ├── IComparableExtensions.cs
│ ├── IDictionaryExtensions.cs
│ ├── IEnumerableExtensions.cs
│ ├── MatchCollectionExtensions.cs
│ ├── MathExtensions.cs
│ ├── PermutationExtensions.cs
│ ├── PredicateExtensions.cs
│ ├── ProcessExtensions.cs
│ ├── ReflectionExtensions.cs
│ ├── StreamExtensions.cs
│ ├── StringBuilderExtensions.cs
│ ├── StringExtensions.cs
│ ├── TaskExtensionTests.cs
│ ├── TimeSpanExtensions.cs
│ └── ValueType.cs
├── Fraction.cs
├── GlobalSuppressions.cs
├── GraphTests.cs
├── IO
│ └── BitReaderTests.cs
├── LazyAsyncTests.cs
├── ListMapping.cs
├── ManyToManyIndexTests.cs
├── Matrix.cs
├── ObservableList.cs
├── PriorityQueue.cs
├── Properties
│ └── AssemblyInfo.cs
├── Reflection
│ └── TypeCacheForTests.cs
├── RingBuffer.cs
├── Set.cs
├── Table.cs
├── TagDictionary.cs
├── TaskQueueTests.cs
├── TrieTests.cs
├── Vector3.cs
└── xunit.runner.json
├── BigBook.sln
├── BigBook
├── AsyncHelper.cs
├── Bag.cs
├── BigBook.csproj
├── BinaryTree.cs
├── BloomFilter.cs
├── CanisterModules
│ └── BigBookModule.cs
├── Comparison
│ ├── GenericComparer.cs
│ ├── GenericEqualityComparer.cs
│ ├── SimpleComparer.cs
│ └── SimpleEqualityComparer.cs
├── DateSpan.cs
├── Dynamo.cs
├── DynamoUtils
│ ├── Change.cs
│ ├── DynamoClass.cs
│ ├── DynamoData.cs
│ ├── DynamoProperties.cs
│ ├── DynamoTypes.cs
│ └── Interfaces
│ │ └── IDynamoProperties.cs
├── EventArgs
│ └── EventArgs.cs
├── ExtensionMethods
│ ├── ArrayExtensions.cs
│ ├── ConcurrentBagExtensions.cs
│ ├── ConcurrentDictionaryExtensions.cs
│ ├── DateTimeExtensions.cs
│ ├── ExceptionExtensions.cs
│ ├── GenericObjectExtensions.cs
│ ├── ICollectionExtensions.cs
│ ├── IComparableExtensions.cs
│ ├── IDictionaryExtensions.cs
│ ├── IEnumerableExtensions.cs
│ ├── MatchCollectionExtensions.cs
│ ├── MathExtensions.cs
│ ├── PermutationExtensions.cs
│ ├── PredicateExtensions.cs
│ ├── ProcessExtensions.cs
│ ├── ReflectionExtensions.cs
│ ├── StackTraceExtensions.cs
│ ├── StreamExtensions.cs
│ ├── StringBuilderExtensions.cs
│ ├── StringExtensions.cs
│ ├── TaskExtensions.cs
│ ├── TimeSpanExtensions.cs
│ ├── Utils
│ │ └── DefaultValueLookup.cs
│ └── ValueTypeExtensions.cs
├── Formatters
│ ├── GenericStringFormatter.cs
│ └── Interfaces
│ │ └── IStringFormatter.cs
├── Fraction.cs
├── GlobalSuppressions.cs
├── Graph.cs
├── IO
│ ├── BitReader.cs
│ ├── Converters
│ │ ├── BaseClasses
│ │ │ └── EndianBitConverterBase.cs
│ │ ├── BigEndianBitConverter.cs
│ │ ├── LittleEndianBitConverter.cs
│ │ └── Structs
│ │ │ └── IntFloatUnion.cs
│ ├── EndianBinaryReader.cs
│ └── EndianBinaryWriter.cs
├── LazyAsync.cs
├── ListMapping.cs
├── ManyToManyIndex.cs
├── Matrix.cs
├── ObservableList.cs
├── Patterns
│ ├── BaseClasses
│ │ ├── SafeDisposableBaseClass.cs
│ │ ├── Singleton.cs
│ │ └── StringEnumBaseClass.cs
│ ├── Factory.cs
│ └── IFluentInterface.cs
├── PriorityQueue.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Queryable
│ ├── BaseClasses
│ │ └── QueryProviderBase.cs
│ └── Query.cs
├── Reflection
│ └── TypeCacheFor.cs
├── Registration
│ └── CanisterExtensions.cs
├── RingBuffer.cs
├── Set.cs
├── Table.cs
├── TagDictionary.cs
├── TaskQueue.cs
├── Trie.cs
└── Vector3.cs
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Icon.png
├── LICENSE
├── README.md
├── SECURITY.md
├── TestSize
├── Program.cs
└── TestSize.csproj
├── docfx_project
├── .gitignore
├── api
│ ├── .gitignore
│ └── index.md
├── articles
│ ├── example2.md
│ ├── example3.md
│ ├── intro.md
│ └── toc.yml
├── docfx.json
├── images
│ └── icon.png
├── index.md
├── templates
│ └── mytemplate
│ │ └── public
│ │ └── main.css
└── toc.yml
└── setup.bat
/.config/dotnet-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "isRoot": true,
4 | "tools": {
5 | "husky": {
6 | "version": "0.7.2",
7 | "commands": [
8 | "husky"
9 | ],
10 | "rollForward": false
11 | },
12 | "versionize": {
13 | "version": "2.3.1",
14 | "commands": [
15 | "versionize"
16 | ],
17 | "rollForward": false
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: JaCraig
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **Example code**
14 | Please provide example code that produces the bug either in a gist or pull request adding a test case and link here.
15 |
16 | **Expected behavior**
17 | A clear and concise description of what you expected to happen.
18 |
19 | **Screenshots**
20 | If applicable, add screenshots to help explain your problem.
21 |
22 | **Version Information**
23 | - OS: [e.g. iOS]
24 | - .Net Version: [e.g. .Net 6]
25 | - Release Version of Library [e.g. 2.0.1]
26 |
27 | **Additional context**
28 | Add any other context about the problem here.
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "nuget" # See documentation for possible values
9 | directory: "/BigBook" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 | commit-message:
13 | prefix: "fix"
14 | groups:
15 | dependencies:
16 | patterns:
17 | - "*"
18 |
19 | - package-ecosystem: "nuget" # See documentation for possible values
20 | directory: "/BigBook.Tests/" # Location of package manifests
21 | schedule:
22 | interval: "daily"
23 | commit-message:
24 | prefix: "chore"
25 | groups:
26 | dependencies:
27 | patterns:
28 | - "*"
29 |
30 | - package-ecosystem: "nuget" # See documentation for possible values
31 | directory: "/BigBook.Benchmarks/" # Location of package manifests
32 | schedule:
33 | interval: "daily"
34 | commit-message:
35 | prefix: "chore"
36 | groups:
37 | dependencies:
38 | patterns:
39 | - "*"
40 |
41 | - package-ecosystem: "nuget" # See documentation for possible values
42 | directory: "/BigBook.Example/" # Location of package manifests
43 | schedule:
44 | interval: "daily"
45 | commit-message:
46 | prefix: "chore"
47 | groups:
48 | dependencies:
49 | patterns:
50 | - "*"
51 |
52 | - package-ecosystem: "nuget" # See documentation for possible values
53 | directory: "/TestSize/" # Location of package manifests
54 | schedule:
55 | interval: "daily"
56 | commit-message:
57 | prefix: "chore"
58 | groups:
59 | dependencies:
60 | patterns:
61 | - "*"
62 |
63 | - package-ecosystem: "github-actions"
64 | directory: "/"
65 | schedule:
66 | interval: "daily"
67 | commit-message:
68 | prefix: "chore"
69 | groups:
70 | dependencies:
71 | patterns:
72 | - "*"
73 |
--------------------------------------------------------------------------------
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: "CodeQL"
13 |
14 | on:
15 | push:
16 | branches: [ "master" ]
17 | pull_request:
18 | branches: [ "master" ]
19 | schedule:
20 | - cron: '37 18 * * 3'
21 |
22 | permissions:
23 | actions: read
24 | contents: read
25 | security-events: write
26 |
27 | jobs:
28 | analyze:
29 | uses: JaCraig/Centralized-Workflows/.github/workflows/codeql.yml@main
--------------------------------------------------------------------------------
/.github/workflows/dependabot-reviewer.yml:
--------------------------------------------------------------------------------
1 | name: Dependabot Reviewer
2 |
3 | on: pull_request_target
4 |
5 | permissions:
6 | pull-requests: write
7 | contents: write
8 |
9 | jobs:
10 | review-dependabot-pr:
11 | if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
12 | uses: JaCraig/Centralized-Workflows/.github/workflows/dependabot-reviewer.yml@main
13 | secrets:
14 | token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
--------------------------------------------------------------------------------
/.github/workflows/docsfx.yml:
--------------------------------------------------------------------------------
1 | name: Document Site Publish
2 |
3 | on:
4 | push:
5 | branches: [ "master" ]
6 |
7 | permissions:
8 | contents: write
9 |
10 | jobs:
11 | publish-docs:
12 | uses: JaCraig/Centralized-Workflows/.github/workflows/docsfx.yml@main
--------------------------------------------------------------------------------
/.github/workflows/dotnet-publish.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a .NET project
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
3 |
4 | name: .NET Publish
5 |
6 | on:
7 | push:
8 | branches: [ "master" ]
9 |
10 | jobs:
11 | build:
12 | uses: 'JaCraig/Centralized-Workflows/.github/workflows/dotnet-publish.yml@main'
13 | with:
14 | user: 'JaCraig'
15 | user-email: 'JaCraig@users.noreply.github.com'
16 | coveralls-upload: "./BigBook.Tests/TestResults-9.0.x/coverage.net8.0.info"
17 | test-filter: "BigBook.Tests"
18 | secrets:
19 | PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
20 | NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
--------------------------------------------------------------------------------
/.github/workflows/dotnet-test.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a .NET project
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
3 |
4 | name: .NET Test Pull Requests
5 |
6 | on:
7 | pull_request:
8 | branches: [ "master" ]
9 |
10 | jobs:
11 | build:
12 | uses: 'JaCraig/Centralized-Workflows/.github/workflows/dotnet-test.yml@main'
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | ## husky task runner examples -------------------
5 | ## Note : for local installation use 'dotnet' prefix. e.g. 'dotnet husky'
6 |
7 | ## run all tasks
8 | #husky run
9 |
10 | ### run all tasks with group: 'group-name'
11 | #husky run --group group-name
12 |
13 | ## run task with name: 'task-name'
14 | #husky run --name task-name
15 |
16 | ## pass hook arguments to task
17 | #husky run --args "$1" "$2"
18 |
19 | ## or put your custom commands -------------------
20 | #echo 'Husky.Net is awesome!'
21 |
22 | dotnet husky run --name "commit-message-linter" --args "$1"
23 |
--------------------------------------------------------------------------------
/.husky/csxScripts/commit-lint.csx:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 |
3 | private var pattern = @"^(?=.{1,90}$)(?:build|feat|ci|chore|docs|fix|perf|refactor|revert|style|test)(?:\(.+\))*(?::).{4,}(?:#\d+)*(?
2 |
3 |
4 | Exe
5 | net8.0;net9.0
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/BigBook.Benchmarks/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Redundancy", "RCS1132:Remove redundant overriding member.", Justification = "", Scope = "member", Target = "~M:BigBook.Benchmarks.Tests.NullEqualityTests.TestClass.ToString~System.String")]
7 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0041:Use 'is null' check", Justification = "", Scope = "member", Target = "~M:BigBook.Benchmarks.Tests.NullEqualityTests.ReferenceEquals~System.Boolean")]
--------------------------------------------------------------------------------
/BigBook.Benchmarks/Program.cs:
--------------------------------------------------------------------------------
1 | using BenchmarkDotNet.Running;
2 |
3 | namespace BigBook.Benchmarks
4 | {
5 | internal static class Program
6 | {
7 | private static void Main(string[] args) => new BenchmarkSwitcher(typeof(Program).Assembly).Run(args);
8 | }
9 | }
--------------------------------------------------------------------------------
/BigBook.Benchmarks/Tests/ActivatorCreateInstanceTests.cs:
--------------------------------------------------------------------------------
1 | using BenchmarkDotNet.Attributes;
2 | using System;
3 | using System.Reflection.Emit;
4 |
5 | namespace BigBook.Benchmarks.Tests
6 | {
7 | [RankColumn, MemoryDiagnoser]
8 | public class ActivatorCreateInstanceTests
9 | {
10 | private Func