# namespace func

## Overview

Contains common lambda functions. More…

    namespace func {

    // global variables

    const auto GetId = [](const auto&obj) { return obj.GetId(); };
    const auto GetPtrId = [](const auto&obj) { return obj->GetId(); };
    const auto OptValue = [](const auto&obj) { return obj.value(); };
    const auto OptHasValue = [](const auto&obj) { return obj.has_value(); };
    const auto Is = [](const auto&obj)->bool { return obj; };
    const auto IsNullptr = [](const auto&obj)->bool { return obj == nullptr; };
    const auto IsNotNullptr = [](const auto&obj)->bool { return obj != nullptr; };
    const auto IsEmpty = [](const auto&obj)->bool { return obj.empty(); };
    const auto IsNotEmpty = [](const auto&obj)->bool { return !obj.empty(); };
    const auto GetSize = [](const auto&obj)->std::size_t { return obj.size(); };
    const auto GetFirst = [](const auto&pair) { return pair.first; };
    const auto GetSecond = [](const auto&pair) { return pair.second; };
    const auto IfNotNull = [](const auto&obj_ptr, const auto Func) { if(obj_ptr != nullptr) { Func(*obj_ptr); } };
    const auto GetX = [](const auto&o) { return o.x; };
    const auto GetY = [](const auto&o) { return o.y; };
    const auto StaticCast = [](const TypeIn&value) { return static_cast<TypeOut>(value); };

    } // namespace func

## Detailed Documentation

Contains common lambda functions.

### Global Variables

    const auto GetId = [](const auto&obj) { return obj.GetId(); }

Lambda function that uses ‘GetId’ function to get object’s id.

Applies to any object that has a GetId() function.

    const auto GetPtrId = [](const auto&obj) { return obj->GetId(); }

Lambda function that uses ‘GetId’ function to get object’s id.

Applies to any pointer to an object that has a GetId() function.

    const auto OptValue = [](const auto&obj) { return obj.value(); }

Lambda function that gets std::optional’s value.

Applies to std::optional.

    const auto OptHasValue = [](const auto&obj) { return obj.has_value(); }

Lambda function that returns whether a std::optional has value.

Applies to std::optional.

    const auto Is = [](const auto&obj)->bool { return obj; }

Lambda function that casts the object to bool.

Applies to all objects that can be cast/compared to bool.

    const auto IsNullptr = [](const auto&obj)->bool { return obj == nullptr; }

Lambda function that return whether the object is null pointer.

Applies to pointers.

    const auto IsNotNullptr = [](const auto&obj)->bool { return obj != nullptr; }

Lambda function that return whether the object is not a null pointer.

Applies to pointers.

    const auto IsEmpty = [](const auto&obj)->bool { return obj.empty(); }

Lambda function that returns whether the object is empty.

Applies to any object that has an empty() function. (std::vector, std::string…).

    const auto IsNotEmpty = [](const auto&obj)->bool { return !obj.empty(); }

Lambda function that returns whether the object is not empty.

Applies to any object that has an empty() function. (std::vector, std::string…).

    const auto GetSize = [](const auto&obj)->std::size_t { return obj.size(); }

Lambda function that returns the size of an object.

Applies to any object that has a size() function. (std::vector…).

    const auto GetFirst = [](const auto&pair) { return pair.first; }

Lambda function that returns the first element in a pair.

applies to std::pair.

    const auto GetSecond = [](const auto&pair) { return pair.second; }

Lambda function that returns the second element in a pair.

applies to std::pair.

    const auto IfNotNull = [](const auto&obj_ptr, const auto Func) { if(obj_ptr != nullptr) { Func(*obj_ptr); } }

Lambda function that performs a callback on an if it is nor null. Otherwise it ignores it.

    const auto GetX = [](const auto&o) { return o.x; }

Lambda function that return the x value of an object.

    const auto GetY = [](const auto&o) { return o.y; }

Lambda function that return the x value of an object.

    const auto StaticCast = [](const TypeIn&value) { return static_cast<TypeOut>(value); }

StaticCast a value to a different type.