/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see .
*/
#ifndef ANTKEEPER_FUNDAMENTAL_TYPES_HPP
#define ANTKEEPER_FUNDAMENTAL_TYPES_HPP
#include "math/vector-type.hpp"
#include "math/vector-operators.hpp"
#include "math/matrix-type.hpp"
#include "math/matrix-operators.hpp"
/// 2D vector of bools
using bool2 = math::vector;
/// 3D vector of bools
using bool3 = math::vector;
/// 4D vector of bools
using bool4 = math::vector;
/// 2D vector of chars
using char2 = math::vector;
/// 3D vector of chars
using char3 = math::vector;
/// 4D vector of chars
using char4 = math::vector;
/// 2D vector of unsigned chars
using uchar2 = math::vector;
/// 3D vector of unsigned chars
using uchar3 = math::vector;
/// 4D vector of unsigned chars
using uchar4 = math::vector;
/// 2D vector of shorts
using short2 = math::vector;
/// 3D vector of shorts
using short3 = math::vector;
/// 4D vector of shorts
using short4 = math::vector;
/// 2D vector of unsigned shorts
using ushort2 = math::vector;
/// 3D vector of unsigned shorts
using ushort3 = math::vector;
/// 4D vector of unsigned shorts
using ushort4 = math::vector;
/// 2D vector of ints
using int2 = math::vector;
/// 3D vector of ints
using int3 = math::vector;
/// 4D vector of ints
using int4 = math::vector;
/// 2D vector of unsigned ints
using uint2 = math::vector;
/// 3D vector of unsigned ints
using uint3 = math::vector;
/// 4D vector of unsigned ints
using uint4 = math::vector;
/// 2D vector of longs
using long2 = math::vector;
/// 3D vector of longs
using long3 = math::vector;
/// 4D vector of longs
using long4 = math::vector;
/// 2D vector of unsigned longs
using ulong2 = math::vector;
/// 3D vector of unsigned longs
using ulong3 = math::vector;
/// 4D vector of unsigned longs
using ulong4 = math::vector;
/// 2D vector of floats
using float2 = math::vector;
/// 3D vector of floats
using float3 = math::vector;
/// 4D vector of floats
using float4 = math::vector;
/// 2D vector of doubles
using double2 = math::vector;
/// 3D vector of doubles
using double3 = math::vector;
/// 4D vector of doubles
using double4 = math::vector;
/// 2x2 matrix of bools
using bool2x2 = math::matrix;
/// 3x3 matrix of bools
using bool3x3 = math::matrix;
/// 4x4 matrix of bools
using bool4x4 = math::matrix;
/// 2x2 matrix of chars
using char2x2 = math::matrix;
/// 3x3 matrix of chars
using char3x3 = math::matrix;
/// 4x4 matrix of chars
using char4x4 = math::matrix;
/// 2x2 matrix of unsigned chars
using uchar2x2 = math::matrix;
/// 3x3 matrix of unsigned chars
using uchar3x3 = math::matrix;
/// 4x4 matrix of unsigned chars
using uchar4x4 = math::matrix;
/// 2x2 matrix of shorts
using short2x2 = math::matrix;
/// 3x3 matrix of shorts
using short3x3 = math::matrix;
/// 4x4 matrix of shorts
using short4x4 = math::matrix;
/// 2x2 matrix of unsigned shorts
using ushort2x2 = math::matrix;
/// 3x3 matrix of unsigned shorts
using ushort3x3 = math::matrix;
/// 4x4 matrix of unsigned shorts
using ushort4x4 = math::matrix;
/// 2x2 matrix of ints
using int2x2 = math::matrix;
/// 3x3 matrix of ints
using int3x3 = math::matrix;
/// 4x4 matrix of ints
using int4x4 = math::matrix;
/// 2x2 matrix of unsigned ints
using uint2x2 = math::matrix;
/// 3x3 matrix of unsigned ints
using uint3x3 = math::matrix;
/// 4x4 matrix of unsigned ints
using uint4x4 = math::matrix;
/// 2x2 matrix of longs
using long2x2 = math::matrix;
/// 3x3 matrix of longs
using long3x3 = math::matrix;
/// 4x4 matrix of longs
using long4x4 = math::matrix;
/// 2x2 matrix of unsigned longs
using ulong2x2 = math::matrix;
/// 3x3 matrix of unsigned longs
using ulong3x3 = math::matrix;
/// 4x4 matrix of unsigned longs
using ulong4x4 = math::matrix;
/// 2x2 matrix of floats
using float2x2 = math::matrix;
/// 3x3 matrix of floats
using float3x3 = math::matrix;
/// 4x4 matrix of floats
using float4x4 = math::matrix;
/// 2x2 matrix of doubles
using double2x2 = math::matrix;
/// 3x3 matrix of doubles
using double3x3 = math::matrix;
/// 4x4 matrix of doubles
using double4x4 = math::matrix;
#endif // ANTKEEPER_FUNDAMENTAL_TYPES_HPP