Mir
Public Types | Public Member Functions | Protected Attributes | List of all members
mir::geometry::generic::Value< T >::Wrapper< Tag > Struct Template Reference

Wraps a geometry value and prevents it from being accidentally used for invalid operations (such as setting a width to a height or adding two x positions together). Of course, explicit casts are possible to get around these restrictions (see the as_*() functions). int values (which are most values) should use the derived IntWrapper class, and other types should use this directly. More...

#include <dimensions_generic.h>

Inheritance diagram for mir::geometry::generic::Value< T >::Wrapper< Tag >:
[legend]

Public Types

using ValueType = T
 
using TagType = Tag
 
template<typename OtherTag >
using Corresponding = Wrapper< OtherTag >
 

Public Member Functions

template<typename Q = T>
constexpr std::enable_if< std::is_integral< Q >::value, int >::type as_int () const
 
constexpr T as_value () const noexcept
 
constexpr Wrapper () noexcept
 
Wrapperoperator= (Wrapper const &that) noexcept
 
constexpr Wrapper (Wrapper const &that) noexcept
 
template<typename W , typename std::enable_if< std::is_same< typename W::TagType, Tag >::value, bool >::type = true>
constexpr Wrapper (W const &value) noexcept
 
template<typename U , typename std::enable_if< std::is_scalar< U >::value, bool >::type = true>
constexpr Wrapper (U const &value) noexcept
 
constexpr auto operator== (Wrapper< Tag > const &rhs) const -> bool
 
constexpr auto operator!= (Wrapper< Tag > const &rhs) const -> bool
 
constexpr auto operator<= (Wrapper< Tag > const &rhs) const -> bool
 
constexpr auto operator>= (Wrapper< Tag > const &rhs) const -> bool
 
constexpr auto operator< (Wrapper< Tag > const &rhs) const -> bool
 
constexpr auto operator> (Wrapper< Tag > const &rhs) const -> bool
 

Protected Attributes

value
 

Detailed Description

template<typename T>
template<typename Tag>
struct mir::geometry::generic::Value< T >::Wrapper< Tag >

Wraps a geometry value and prevents it from being accidentally used for invalid operations (such as setting a width to a height or adding two x positions together). Of course, explicit casts are possible to get around these restrictions (see the as_*() functions). int values (which are most values) should use the derived IntWrapper class, and other types should use this directly.

Member Typedef Documentation

◆ Corresponding

template<typename T >
template<typename Tag >
template<typename OtherTag >
using mir::geometry::generic::Value< T >::Wrapper< Tag >::Corresponding = Wrapper<OtherTag>

◆ TagType

template<typename T >
template<typename Tag >
using mir::geometry::generic::Value< T >::Wrapper< Tag >::TagType = Tag

◆ ValueType

template<typename T >
template<typename Tag >
using mir::geometry::generic::Value< T >::Wrapper< Tag >::ValueType = T

Constructor & Destructor Documentation

◆ Wrapper() [1/4]

template<typename T >
template<typename Tag >
constexpr mir::geometry::generic::Value< T >::Wrapper< Tag >::Wrapper ( )
inlineconstexprnoexcept

◆ Wrapper() [2/4]

template<typename T >
template<typename Tag >
constexpr mir::geometry::generic::Value< T >::Wrapper< Tag >::Wrapper ( Wrapper< Tag > const &  that)
inlineconstexprnoexcept

◆ Wrapper() [3/4]

template<typename T >
template<typename Tag >
template<typename W , typename std::enable_if< std::is_same< typename W::TagType, Tag >::value, bool >::type = true>
constexpr mir::geometry::generic::Value< T >::Wrapper< Tag >::Wrapper ( W const &  value)
inlineexplicitconstexprnoexcept

◆ Wrapper() [4/4]

template<typename T >
template<typename Tag >
template<typename U , typename std::enable_if< std::is_scalar< U >::value, bool >::type = true>
constexpr mir::geometry::generic::Value< T >::Wrapper< Tag >::Wrapper ( U const &  value)
inlineexplicitconstexprnoexcept

Member Function Documentation

◆ as_int()

template<typename T >
template<typename Tag >
template<typename Q = T>
constexpr std::enable_if<std::is_integral<Q>::value, int>::type mir::geometry::generic::Value< T >::Wrapper< Tag >::as_int ( ) const
inlineconstexpr

◆ as_value()

template<typename T >
template<typename Tag >
constexpr T mir::geometry::generic::Value< T >::Wrapper< Tag >::as_value ( ) const
inlineconstexprnoexcept

◆ operator!=()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator!= ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

◆ operator<()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator< ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

◆ operator<=()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator<= ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

◆ operator=()

template<typename T >
template<typename Tag >
Wrapper& mir::geometry::generic::Value< T >::Wrapper< Tag >::operator= ( Wrapper< Tag > const &  that)
inlinenoexcept

◆ operator==()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator== ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

◆ operator>()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator> ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

◆ operator>=()

template<typename T >
template<typename Tag >
constexpr auto mir::geometry::generic::Value< T >::Wrapper< Tag >::operator>= ( Wrapper< Tag > const &  rhs) const -> bool
inlineconstexpr

Member Data Documentation

◆ value

template<typename T >
template<typename Tag >
T mir::geometry::generic::Value< T >::Wrapper< Tag >::value
protected

The documentation for this struct was generated from the following file:

Copyright © 2012-2022 Canonical Ltd.
Generated on Mon Feb 28 07:07:30 UTC 2022
This documentation is licensed under the GPL version 2 or 3.