SiddiqSoft.RunOnEnd 1.2.0

There is a newer version of this package available.
See the version list below for details.
Install-Package SiddiqSoft.RunOnEnd -Version 1.2.0
dotnet add package SiddiqSoft.RunOnEnd --version 1.2.0
<PackageReference Include="SiddiqSoft.RunOnEnd" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SiddiqSoft.RunOnEnd --version 1.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SiddiqSoft.RunOnEnd, 1.2.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install SiddiqSoft.RunOnEnd as a Cake Addin
#addin nuget:?package=SiddiqSoft.RunOnEnd&version=1.2.0

// Install SiddiqSoft.RunOnEnd as a Cake Tool
#tool nuget:?package=SiddiqSoft.RunOnEnd&version=1.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

RunOnEnd : Run a lambda in destructor

CodeQL Build Status

Objective

  • A simpler "run on end" vs. the custom deletor available via std::unique_ptr<>. It is important to note that we do not provide an "owning" helper as this is better accomplished via the destructor code for std::unique_ptr<>.
  • Use the nuget SiddiqSoft.RunOnEnd
  • Copy paste..whatever works.

Usage

The utility can be used to ensure you cleanup within a scope, update some global variable or use the definition to build your own auto-cleanup.

Consider the following example where the utility UseWinsock builds on RunOnEnd for its functionality.

struct UseWinsock : private siddiqsoft::RunOnEnd
{
    UseWinsock() noexcept
        : m_rc(E_FAIL)
        , siddiqsoft::RunOnEnd([&]() {
            if (m_rc == S_OK) WSACleanup();
        })
    {
        ZeroMemory(&m_wsaData, sizeof(m_wsaData));
        m_rc = WSAStartup(MAKEWORD(2, 2), &m_wsaData);
        m_rc = (m_rc == 0) ? S_OK : WSAGetLastError();
    }

    operator bool() { return (m_rc == S_OK); }

private:
    int     m_rc;
    WSADATA m_wsaData;
};

<small align="right">

© 2021 Siddiq Software LLC. All rights reserved.

</small>

Product Versions
native native
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on SiddiqSoft.RunOnEnd:

Package Downloads
SiddiqSoft.AzureCppUtils

Azure REST API Helpers for Modern C++. Featuring helper functions for date-time, encryption tokens for Azure REST API as a single header-only package and native Win32 libraries.

SiddiqSoft.CosmosClient

Azure Cosmos REST-API Client for Modern C++

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.1 419 11/20/2021
1.2.0 1,940 8/18/2021
1.1.1 127 7/30/2021
1.1.0 336 7/28/2021
1.0.3 137 7/28/2021
1.0.2 114 7/27/2021
1.0.1 194 7/27/2021
1.0.0 168 7/26/2021