opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Typedefs | Functions
vector.h File Reference
#include <liboscar/utilities/hash_helpers.h>
#include <array>
#include <compare>
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <format>
#include <ostream>
#include <ranges>
#include <span>
#include <string_view>
#include <tuple>
#include <type_traits>
Include dependency graph for vector.h:

Go to the source code of this file.

Classes

class  osc::Vector< T, N >
 
struct  std::formatter< osc::Vector< T, N > >
 
struct  std::tuple_size< osc::Vector< T, N > >
 
struct  std::tuple_element< I, osc::Vector< T, N > >
 
struct  std::hash< osc::Vector< T, N > >
 

Namespaces

namespace  osc
 
namespace  osc::detail
 

Concepts

concept  osc::detail::CompileTimeSizeGreaterThanOrEqualTo
 
concept  osc::detail::CompileTimeSizeEqualTo
 
concept  osc::detail::OutputStreamable
 

Typedefs

using osc::Vector2 = Vector< float, 2 >
 
using osc::Vector2f = Vector< float, 2 >
 
using osc::Vector2d = Vector< double, 2 >
 
using osc::Vector2i = Vector< int, 2 >
 
using osc::Vector2z = Vector< ptrdiff_t, 2 >
 
using osc::Vector2uz = Vector< size_t, 2 >
 
using osc::Vector2u32 = Vector< uint32_t, 2 >
 
using osc::Vector3 = Vector< float, 3 >
 
using osc::Vector3f = Vector< float, 3 >
 
using osc::Vector3d = Vector< double, 3 >
 
using osc::Vector3i = Vector< int, 3 >
 
using osc::Vector3z = Vector< ptrdiff_t, 3 >
 
using osc::Vector3uz = Vector< size_t, 3 >
 
using osc::Vector3u32 = Vector< uint32_t, 3 >
 
using osc::Vector4 = Vector< float, 4 >
 
using osc::Vector4f = Vector< float, 4 >
 
using osc::Vector4d = Vector< double, 4 >
 
using osc::Vector4i = Vector< int, 4 >
 
using osc::Vector4z = Vector< ptrdiff_t, 4 >
 
using osc::Vector4uz = Vector< size_t, 4 >
 
using osc::Vector4u32 = Vector< uint32_t, 4 >
 

Functions

template<typename T , size_t N>
requires (N != std::dynamic_extent)
constexpr size_t osc::detail::compile_time_size (std::span< T, N >)
 
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { +v[0]; })
constexpr auto osc::operator+ (const Vector< T, N > &vec)
 
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { -v[0]; })
constexpr auto osc::operator- (const Vector< T, N > &vec)
 
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { !v[0]; })
constexpr auto osc::operator! (const Vector< T, N > &vec)
 
template<typename T , size_t N, typename U >
requires ( requires (const Vector<T, N>& v, const U& rhs) { v[0] + rhs; } )
constexpr auto osc::operator+ (const Vector< T, N > &lhs, const U &rhs)
 
template<typename T , typename U , size_t N>
requires ( requires (const T& lhs, const Vector<U, N>& rhs) { lhs + rhs[0]; } )
constexpr auto osc::operator+ (const T &lhs, const Vector< U, N > &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] + rhs[0]; })
constexpr auto osc::operator+ (const Vector< T, N > &lhs, const Vector< U, N > &rhs)
 
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] - rhs; })
constexpr auto osc::operator- (const Vector< T, N > &lhs, const U &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { lhs - rhs[0]; })
constexpr auto osc::operator- (const T &lhs, const Vector< U, N > &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] - rhs[0]; })
constexpr auto osc::operator- (const Vector< T, N > &lhs, const Vector< U, N > &rhs)
 
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] * rhs; })
constexpr auto osc::operator* (const Vector< T, N > &lhs, const U &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { U(lhs * rhs[0]); })
constexpr auto osc::operator* (const T &lhs, const Vector< U, N > &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] * rhs[0]; })
constexpr auto osc::operator* (const Vector< T, N > &lhs, const Vector< U, N > &rhs)
 
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] / rhs; })
constexpr auto osc::operator/ (const Vector< T, N > &lhs, const U &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { lhs / rhs[0]; })
constexpr auto osc::operator/ (const T &lhs, const Vector< U, N > &rhs)
 
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] / rhs[0]; })
constexpr auto osc::operator/ (const Vector< T, N > &lhs, const Vector< U, N > &rhs)
 
template<detail::OutputStreamable T, size_t N>
std::ostream & osc::operator<< (std::ostream &out, const Vector< T, N > &v)
 
template<size_t I, typename T , size_t N>
constexpr const Tosc::get (const Vector< T, N > &v)
 
template<size_t I, typename T , size_t N>
constexpr Tosc::get (Vector< T, N > &v)
 
template<size_t I, typename T , size_t N>
constexpr T && osc::get (Vector< T, N > &&v)
 
template<size_t I, typename T , size_t N>
constexpr const T && osc::get (const Vector< T, N > &&v)