inline everything everywhere all at once

This commit is contained in:
Quaternions 2023-10-13 15:38:17 -07:00
parent cea85a099d
commit 36a5298b6d

View File

@ -7,29 +7,36 @@ impl Time{
pub const ONE_MILLISECOND:Self=Self(1_000_000); pub const ONE_MILLISECOND:Self=Self(1_000_000);
pub const ONE_MICROSECOND:Self=Self(1_000); pub const ONE_MICROSECOND:Self=Self(1_000);
pub const ONE_NANOSECOND:Self=Self(1); pub const ONE_NANOSECOND:Self=Self(1);
#[inline]
pub fn from_secs(num:i64)->Self{ pub fn from_secs(num:i64)->Self{
Self(Self::ONE_SECOND.0*num) Self(Self::ONE_SECOND.0*num)
} }
#[inline]
pub fn from_millis(num:i64)->Self{ pub fn from_millis(num:i64)->Self{
Self(Self::ONE_MILLISECOND.0*num) Self(Self::ONE_MILLISECOND.0*num)
} }
#[inline]
pub fn from_micros(num:i64)->Self{ pub fn from_micros(num:i64)->Self{
Self(Self::ONE_MICROSECOND.0*num) Self(Self::ONE_MICROSECOND.0*num)
} }
#[inline]
pub fn from_nanos(num:i64)->Self{ pub fn from_nanos(num:i64)->Self{
Self(Self::ONE_NANOSECOND.0*num) Self(Self::ONE_NANOSECOND.0*num)
} }
//should I have checked subtraction? force all time variables to be positive? //should I have checked subtraction? force all time variables to be positive?
#[inline]
pub fn nanos(&self)->i64{ pub fn nanos(&self)->i64{
self.0 self.0
} }
} }
impl From<Planar64> for Time{ impl From<Planar64> for Time{
#[inline]
fn from(value:Planar64)->Self{ fn from(value:Planar64)->Self{
Time((((value.0 as i128)*1_000_000_000)>>32) as i64) Time((((value.0 as i128)*1_000_000_000)>>32) as i64)
} }
} }
impl std::fmt::Display for Time{ impl std::fmt::Display for Time{
#[inline]
fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
write!(f,"{}s+{}ns",self.0/Self::ONE_SECOND.0,self.0%Self::ONE_SECOND.0) write!(f,"{}s+{}ns",self.0/Self::ONE_SECOND.0,self.0%Self::ONE_SECOND.0)
} }
@ -70,6 +77,7 @@ impl std::ops::Div<i64> for Time{
} }
} }
#[inline]
fn gcd(mut a:u64,mut b:u64)->u64{ fn gcd(mut a:u64,mut b:u64)->u64{
while b!=0{ while b!=0{
(a,b)=(b,a.rem_euclid(b)); (a,b)=(b,a.rem_euclid(b));
@ -84,6 +92,7 @@ pub struct Ratio64{
impl Ratio64{ impl Ratio64{
pub const ZERO:Self=Ratio64{num:0,den:unsafe{std::num::NonZeroU64::new_unchecked(1)}}; pub const ZERO:Self=Ratio64{num:0,den:unsafe{std::num::NonZeroU64::new_unchecked(1)}};
pub const ONE:Self=Ratio64{num:1,den:unsafe{std::num::NonZeroU64::new_unchecked(1)}}; pub const ONE:Self=Ratio64{num:1,den:unsafe{std::num::NonZeroU64::new_unchecked(1)}};
#[inline]
pub fn new(num:i64,den:u64)->Option<Ratio64>{ pub fn new(num:i64,den:u64)->Option<Ratio64>{
match std::num::NonZeroU64::new(den){ match std::num::NonZeroU64::new(den){
Some(_)=>{ Some(_)=>{
@ -93,9 +102,11 @@ impl Ratio64{
None=>None, None=>None,
} }
} }
#[inline]
pub fn mul_int(self,rhs:i64)->i64{ pub fn mul_int(self,rhs:i64)->i64{
rhs*self.num/self.den.get() as i64 rhs*self.num/self.den.get() as i64
} }
#[inline]
pub fn rhs_div_int(self,rhs:i64)->i64{ pub fn rhs_div_int(self,rhs:i64)->i64{
rhs*self.den.get() as i64/self.num rhs*self.den.get() as i64/self.num
} }
@ -137,6 +148,7 @@ enum Ratio64TryFromFloatError{
HighlyNegativeExponent(i16), HighlyNegativeExponent(i16),
HighlyPositiveExponent(i16), HighlyPositiveExponent(i16),
} }
#[inline]
fn ratio64_from_mes((m,e,s):(u64,i16,i8))->Result<Ratio64,Ratio64TryFromFloatError>{ fn ratio64_from_mes((m,e,s):(u64,i16,i8))->Result<Ratio64,Ratio64TryFromFloatError>{
if e< -127{ if e< -127{
//bye bye //bye bye
@ -154,6 +166,7 @@ fn ratio64_from_mes((m,e,s):(u64,i16,i8))->Result<Ratio64,Ratio64TryFromFloatErr
} }
impl TryFrom<f32> for Ratio64{ impl TryFrom<f32> for Ratio64{
type Error=Ratio64TryFromFloatError; type Error=Ratio64TryFromFloatError;
#[inline]
fn try_from(value:f32)->Result<Self,Self::Error>{ fn try_from(value:f32)->Result<Self,Self::Error>{
match value.classify(){ match value.classify(){
std::num::FpCategory::Nan=>Err(Self::Error::Nan), std::num::FpCategory::Nan=>Err(Self::Error::Nan),
@ -166,6 +179,7 @@ impl TryFrom<f32> for Ratio64{
} }
impl TryFrom<f64> for Ratio64{ impl TryFrom<f64> for Ratio64{
type Error=Ratio64TryFromFloatError; type Error=Ratio64TryFromFloatError;
#[inline]
fn try_from(value:f64)->Result<Self,Self::Error>{ fn try_from(value:f64)->Result<Self,Self::Error>{
match value.classify(){ match value.classify(){
std::num::FpCategory::Nan=>Err(Self::Error::Nan), std::num::FpCategory::Nan=>Err(Self::Error::Nan),
@ -215,9 +229,11 @@ pub struct Ratio64Vec2{
} }
impl Ratio64Vec2{ impl Ratio64Vec2{
pub const ONE:Self=Self{x:Ratio64::ONE,y:Ratio64::ONE}; pub const ONE:Self=Self{x:Ratio64::ONE,y:Ratio64::ONE};
#[inline]
pub fn new(x:Ratio64,y:Ratio64)->Self{ pub fn new(x:Ratio64,y:Ratio64)->Self{
Self{x,y} Self{x,y}
} }
#[inline]
pub fn mul_int(self,rhs:glam::I64Vec2)->glam::I64Vec2{ pub fn mul_int(self,rhs:glam::I64Vec2)->glam::I64Vec2{
glam::i64vec2( glam::i64vec2(
self.x.mul_int(rhs.x), self.x.mul_int(rhs.x),
@ -291,6 +307,7 @@ impl Angle32{
*/ */
} }
impl Into<f32> for Angle32{ impl Into<f32> for Angle32{
#[inline]
fn into(self)->f32{ fn into(self)->f32{
//TODO: make this good //TODO: make this good
(self.0 as f64/-(i32::MIN as f64)*std::f64::consts::PI) as f32 (self.0 as f64/-(i32::MIN as f64)*std::f64::consts::PI) as f32
@ -395,6 +412,7 @@ enum Planar64TryFromFloatError{
HighlyNegativeExponent(i16), HighlyNegativeExponent(i16),
HighlyPositiveExponent(i16), HighlyPositiveExponent(i16),
} }
#[inline]
fn planar64_from_mes((m,e,s):(u64,i16,i8))->Result<Planar64,Planar64TryFromFloatError>{ fn planar64_from_mes((m,e,s):(u64,i16,i8))->Result<Planar64,Planar64TryFromFloatError>{
if e< -32{ if e< -32{
Err(Planar64TryFromFloatError::HighlyNegativeExponent(e)) Err(Planar64TryFromFloatError::HighlyNegativeExponent(e))
@ -406,6 +424,7 @@ fn planar64_from_mes((m,e,s):(u64,i16,i8))->Result<Planar64,Planar64TryFromFloat
} }
impl TryFrom<f32> for Planar64{ impl TryFrom<f32> for Planar64{
type Error=Planar64TryFromFloatError; type Error=Planar64TryFromFloatError;
#[inline]
fn try_from(value:f32)->Result<Self,Self::Error>{ fn try_from(value:f32)->Result<Self,Self::Error>{
match value.classify(){ match value.classify(){
std::num::FpCategory::Nan=>Err(Self::Error::Nan), std::num::FpCategory::Nan=>Err(Self::Error::Nan),
@ -418,6 +437,7 @@ impl TryFrom<f32> for Planar64{
} }
impl TryFrom<f64> for Planar64{ impl TryFrom<f64> for Planar64{
type Error=Planar64TryFromFloatError; type Error=Planar64TryFromFloatError;
#[inline]
fn try_from(value:f64)->Result<Self,Self::Error>{ fn try_from(value:f64)->Result<Self,Self::Error>{
match value.classify(){ match value.classify(){
std::num::FpCategory::Nan=>Err(Self::Error::Nan), std::num::FpCategory::Nan=>Err(Self::Error::Nan),
@ -498,6 +518,7 @@ impl Planar64Vec3{
pub const NEG_Z:Self=Planar64Vec3(glam::I64Vec3::NEG_Z); pub const NEG_Z:Self=Planar64Vec3(glam::I64Vec3::NEG_Z);
pub const MIN:Self=Planar64Vec3(glam::I64Vec3::MIN); pub const MIN:Self=Planar64Vec3(glam::I64Vec3::MIN);
pub const MAX:Self=Planar64Vec3(glam::I64Vec3::MAX); pub const MAX:Self=Planar64Vec3(glam::I64Vec3::MAX);
#[inline]
pub fn int(x:i32,y:i32,z:i32)->Self{ pub fn int(x:i32,y:i32,z:i32)->Self{
Self(glam::i64vec3((x as i64)<<32,(y as i64)<<32,(z as i64)<<32)) Self(glam::i64vec3((x as i64)<<32,(y as i64)<<32,(z as i64)<<32))
} }
@ -565,6 +586,7 @@ impl Planar64Vec3{
} }
} }
impl Into<glam::Vec3> for Planar64Vec3{ impl Into<glam::Vec3> for Planar64Vec3{
#[inline]
fn into(self)->glam::Vec3{ fn into(self)->glam::Vec3{
glam::vec3( glam::vec3(
self.0.x as f32, self.0.x as f32,
@ -575,6 +597,7 @@ impl Into<glam::Vec3> for Planar64Vec3{
} }
impl TryFrom<[f32;3]> for Planar64Vec3{ impl TryFrom<[f32;3]> for Planar64Vec3{
type Error=Planar64TryFromFloatError; type Error=Planar64TryFromFloatError;
#[inline]
fn try_from(value:[f32;3])->Result<Self,Self::Error>{ fn try_from(value:[f32;3])->Result<Self,Self::Error>{
Ok(Self(glam::i64vec3( Ok(Self(glam::i64vec3(
Planar64::try_from(value[0])?.0, Planar64::try_from(value[0])?.0,
@ -680,6 +703,7 @@ pub struct Planar64Mat3{
z_axis:Planar64Vec3, z_axis:Planar64Vec3,
} }
impl Default for Planar64Mat3{ impl Default for Planar64Mat3{
#[inline]
fn default() -> Self { fn default() -> Self {
Self{ Self{
x_axis:Planar64Vec3::X, x_axis:Planar64Vec3::X,