Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/asklar/cppwinrtbuilders

Provides builder-style helpers for WinRT objects
https://github.com/asklar/cppwinrtbuilders

Last synced: 4 days ago
JSON representation

Provides builder-style helpers for WinRT objects

Awesome Lists containing this project

README

        

# CppWinRT.Builders

Add-on NuGet package to generate C++ builder-style helpers for WinRT objects.

### Motivation
In C++/WinRT, setters are implemented as method calls that return `void`.
This means that creating a button from code looks like:

```cpp
auto button = Controls::Button();
button.Height(40);
button.Width(200);
button.Content(winrt::box_value(L"Hello"));
```

This can get repetitive, and some developers prefer a more fluent style.
*CppWinRT.Builders* enables you to write this instead:

```cpp
#include
auto button = Controls::builders::Button()
.Height(40)
.Width(200)
.Content(winrt::box_value(L"Hello"));
```

Collections (such as types that derive from `IVector` and `IMap`) can also be initialized via C++ initializer lists:
```cpp
auto sp = Controls::builders::StackPanel{}
.Children({
Controls::builders::Button{}
.Height(40)
.Width(200)
.Content(winrt::box_value(L"Hello")),
Controls::builders::Button{}
.Height(40)
.Width(200)
.Content(winrt::box_value(L"world")),
})
.Resources({
{ winrt::box_value(L"SomeKey"), winrt::box_value(42) }
})
.Background(Media::SolidColorBrush{ Windows::UI::Colors::AliceBlue() })
.Padding(ThicknessHelper::FromUniformLength(8))
.Orientation(Controls::Orientation::Horizontal);
```

### Formatters
The tool in this package also generates string formatters for enums.
To use:
```cpp
#include

// ...

auto visibility = Visibility::Collapsed;
std::wcout << visibility << std::endl; // prints "Collapsed"
```