;
static constexpr bool is_detected = true;
+
+
+// fennec::enable_if ===================================================================================================
};
}
diff --git a/include/fennec/lang/lang.h b/include/fennec/lang/lang.h
index 7533b8b..49de51a 100644
--- a/include/fennec/lang/lang.h
+++ b/include/fennec/lang/lang.h
@@ -36,7 +36,20 @@
///
/// This library implements the parts of the C++ stdlib that relate to built-in types and metaprogramming.
///
-/// \subpage
+/// - \subpage fennec_lang_bit_manipulation
+/// - \subpage fennec_lang_metaprogramming
+///
+///
+
+///
+/// \page fennec_lang_metaprogramming Metaprogramming
+///
+/// Metaprogramming is a method of obtaining information about the structure of the code at compile time.
+/// This includes getting traits of types, such as with \ref fennec::numeric_limits. You may even programmatically
+/// enable functions based on the info of the types that the function uses.
+///
+/// - \subpage fennec_lang_conditional_types
+///
///
///
diff --git a/include/fennec/math/exponential.h b/include/fennec/math/exponential.h
index 0e435b8..5fc7357 100644
--- a/include/fennec/math/exponential.h
+++ b/include/fennec/math/exponential.h
@@ -51,37 +51,37 @@
///
/// \ref fennec::pow(fennec::genType, fennec::genType) "genFType pow(genFType x, genFType y)"
/// |
-/// \copydoc fennec::pow(fennec::genType, fennec::genType)
+/// \copydetails fennec::pow(fennec::genType, fennec::genType)
///
/// |
/// \ref fennec::exp(fennec::genType)"genFType exp(genFType x)"
/// |
-/// \copydoc fennec::exp(fennec::genType)
+/// \copydetails fennec::exp(fennec::genType)
///
/// |
/// \ref fennec::exp2(fennec::genType) "genFType exp2(genFType x)"
/// |
-/// \copydoc fennec::exp2(fennec::genType)
+/// \copydetails fennec::exp2(fennec::genType)
///
/// |
/// \ref fennec::log(fennec::genType) "genFType log(genFType x)"
/// |
-/// \copydoc fennec::log(fennec::genType)
+/// \copydetails fennec::log(fennec::genType)
///
/// |
/// \ref fennec::log2(fennec::genType) "genFType log2(genFType x)"
/// |
-/// \copydoc fennec::log2(fennec::genType)
+/// \copydetails fennec::log2(fennec::genType)
///
/// |
/// \ref fennec::sqrt(fennec::genType) "genFType sqrt(genFType x)"
/// |
-/// \copydoc fennec::sqrt(fennec::genType)
+/// \copydetails fennec::sqrt(fennec::genType)
///
/// |
/// \ref fennec::inversesqrt(fennec::genType) "genFType inversesqrt(genFType x)"
/// |
-/// \copydoc fennec::inversesqrt(fennec::genType)
+/// \copydetails fennec::inversesqrt(fennec::genType)
///
///
///
diff --git a/include/fennec/math/math.h b/include/fennec/math/math.h
index c01c592..153f87d 100644
--- a/include/fennec/math/math.h
+++ b/include/fennec/math/math.h
@@ -45,27 +45,43 @@
/// The overarching goal of this math library is to implement the math types and functions of the
/// [OpenGL 4.6 Shading Language Specification](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf).
///
-/// \section fennec_math_topics Topics
+/// - \subpage fennec_math_topics "Topics"
+/// - \ref fennec_math_set_theory
+/// - \subpage fennec_math_data_types "Data Types"
+/// - \ref fennec_math_scalar
+/// - \ref fennec_math_vector
+/// - \ref fennec_math_matrix
+/// - \subpage fennec_math_functions "Functions"
+/// - \ref fennec_math_set_theory
+/// - \ref fennec_math_common
+/// - \ref fennec_math_exponential
+/// - \ref fennec_math_geometric
+/// - \ref fennec_math_relational
+/// - \ref fennec_math_trigonometric
+///
+///
+
+///
+/// \page fennec_math_topics Topics
/// - \subpage fennec_math_set_theory
///
-/// \section fennec_math_data_types Data Types
+
///
+/// \page fennec_math_data_types Data Types
/// - \subpage fennec_math_scalar
/// - \subpage fennec_math_vector
/// - \subpage fennec_math_matrix
///
-/// \section fennec_math_functions Functions
+
///
+/// \page fennec_math_functions Functions
+/// - \subpage fennec_math_set_theory
/// - \subpage fennec_math_common
/// - \subpage fennec_math_exponential
/// - \subpage fennec_math_geometric
/// - \subpage fennec_math_relational
/// - \subpage fennec_math_trigonometric
///
-///
-///
-
-
///
///
diff --git a/include/fennec/math/relational.h b/include/fennec/math/relational.h
index e4909ba..ca3da20 100644
--- a/include/fennec/math/relational.h
+++ b/include/fennec/math/relational.h
@@ -48,7 +48,7 @@
/// \ref fennec::lessThan "bvec lessThan(ivec x, ivec y)"
/// \ref fennec::lessThan "bvec lessThan(uvec x, uvec y)"
/// |
-/// \copydoc fennec::lessThan
+/// \copydetails fennec::lessThan
///
/// |
/// \ref fennec::lessThanEqual "bvec lessThanEqual(vec x, vec y)"
@@ -56,7 +56,7 @@
/// \ref fennec::lessThanEqual "bvec lessThanEqual(ivec x, ivec y)"
/// \ref fennec::lessThanEqual "bvec lessThanEqual(uvec x, uvec y)"
/// |
-/// \copydoc fennec::lessThanEqual
+/// \copydetails fennec::lessThanEqual
///
/// |
/// \ref fennec::greaterThan "bvec greaterThan(vec x, vec y)"
@@ -64,7 +64,7 @@
/// \ref fennec::greaterThan "bvec greaterThan(ivec x, ivec y)"
/// \ref fennec::greaterThan "bvec greaterThan(uvec x, uvec y)"
/// |
-/// \copydoc fennec::greaterThan
+/// \copydetails fennec::greaterThan
///
/// |
/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(vec x, vec y)"
@@ -72,7 +72,7 @@
/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(ivec x, ivec y)"
/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(uvec x, uvec y)"
/// |
-/// \copydoc fennec::greaterThanEqual
+/// \copydetails fennec::greaterThanEqual
///
/// |
/// \ref fennec::equal "bvec equal(vec x, vec y)"
@@ -80,7 +80,7 @@
/// \ref fennec::equal "bvec equal(ivec x, ivec y)"
/// \ref fennec::equal "bvec equal(uvec x, uvec y)"
/// |
-/// \copydoc fennec::equal
+/// \copydetails fennec::equal
///
/// |
/// \ref fennec::notEqual "bvec notEqual(vec x, vec y)"
@@ -88,22 +88,25 @@
/// \ref fennec::notEqual "bvec notEqual(ivec x, ivec y)"
/// \ref fennec::notEqual "bvec notEqual(uvec x, uvec y)"
/// |
-/// \copydoc fennec::notEqual
+/// \copydetails fennec::notEqual
///
/// |
/// \ref fennec::any "bool any(bvec x)"
/// |
-/// \copydoc fennec::any
+/// \copydetails fennec::any
///
/// |
/// \ref fennec::all "bool all(bvec x)"
/// |
-/// \copydoc fennec::all
+/// \copydetails fennec::all
///
/// |
-/// \ref fennec::operator! "bool not(bvec x)"
+/// \ref fennec_vector_not "bool not(bvec x)"
/// |
-/// \copydoc fennec::operator!
+/// \details
+/// \returns the component-wise logical complement of \f$x\f$.
+/// \param x the boolean vector to inverse
+///
///
///
///
@@ -199,13 +202,14 @@ constexpr genBType all(const vector& x)
{ return (x[i] && ...); }
///
+/// \anchor fennec_vector_not
/// \brief Returns the component-wise logical complement of \f$x\f$.
///
/// \details
/// \returns the component-wise logical complement of \f$x\f$.
/// \param x the boolean vector to inverse
template
-constexpr genBType operator!(const vector& x)
+constexpr genBType operator not(const vector& x)
{ return vector((!x[i]) ...); }
}
|