NonAllocFlagGenerator 1.4.0
dotnet add package NonAllocFlagGenerator --version 1.4.0
NuGet\Install-Package NonAllocFlagGenerator -Version 1.4.0
<PackageReference Include="NonAllocFlagGenerator" Version="1.4.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="NonAllocFlagGenerator" Version="1.4.0" />
<PackageReference Include="NonAllocFlagGenerator"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add NonAllocFlagGenerator --version 1.4.0
#r "nuget: NonAllocFlagGenerator, 1.4.0"
#:package NonAllocFlagGenerator@1.4.0
#addin nuget:?package=NonAllocFlagGenerator&version=1.4.0
#tool nuget:?package=NonAllocFlagGenerator&version=1.4.0
NonAllocFlagGenerator
An efficient solution for flag checking in C# and Unity
Benefits of NonAllocFlagGenerator
- Solves the boxing issue of the default
HasFlagmethod - Improves performance by minimizing garbage generation
- Easy to use
Installation
NuGet
- Open the NuGet Package Manager in your IDE (e.g., Visual Studio)
- Search for
NonAllocFlagGeneratorin the NuGet Gallery - Install the package
- Open the terminal in your IDE
- Run the following command to install the package:
dotnet add package NonAllocFlagGenerator --version 1.3.1
Unity Package Manager
- Open the Package Manager in Unity (Window > Package Manager)
- Add the NonAllocFlagGenerator package using the following Git URL:
https://github.com/KBluePurple/NonAllocFlagGenerator.git?path=/Plugins#master
How It Works
NonAllocFlagGenerator uses C# Source Generators to automatically generate efficient extension methods for enums marked with the [Flags] attribute. Here's a detailed breakdown of the process:
Source Generation: At compile time, the generator scans your codebase for any enum types decorated with the [Flags] attribute.
Extension Method Creation: For each flagged enum it finds, the generator automatically creates specialized extension methods that perform flag checking operations without allocating memory on the heap.
Compile-Time Processing: All the code generation happens during compilation, which means:
- There's no runtime overhead for generating the methods
- The generated code is type-safe and checked by the compiler
- You get IDE support like IntelliSense for the generated methods
Zero Allocation Design: The generated extension methods use bitwise operations instead of boxing/unboxing, ensuring that no garbage is generated during flag checks.
Usage Example
[Flags]
public enum PlayerState
{
None = 0,
Idle = 1 << 0,
Walking = 1 << 1,
Running = 1 << 2,
Jumping = 1 << 3,
All = ~0
}
var currentState = PlayerState.Idle | PlayerState.Walking;
// Efficient flag checking using NonAllocFlagGenerator
if (currentState.HasFlagNonAlloc(PlayerState.Idle))
{
// Handle Idle state
}
if (currentState.HasFlagNonAlloc(PlayerState.Walking))
{
// Handle Walking state
}
With NonAllocFlagGenerator, you can easily check flags while writing readable code without compromising performance. Apply NonAllocFlagGenerator to your project today and experience efficient flag checking!
Star History
<a href="https://www.star-history.com/#KBluePurple/NonAllocFlagGenerator&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=KBluePurple/NonAllocFlagGenerator&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=KBluePurple/NonAllocFlagGenerator&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=KBluePurple/NonAllocFlagGenerator&type=Date" /> </picture> </a>
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.